今天我们用 第二个附件 也就是 Afkayas的Afkayas.1.Exe

我们先运行起来看看

还是输入我最爱的假码 dbgpro.com和moc.orpgbd

然后点确定

有错误提示~ 大家可以先尝试通过字符串定位到关键跳,然后nop掉试试,今天我采取另外一种方法


我们把软件附加到OD

附加了以后按F9运行起来,或者点圆圈圈里面的按钮跑起来

然后我们输入假码,输入假码后 先不要点确定,我们今天用messagebox的断点来破解这个软件,

输入假码后 我们切换到OD,OD菜单上面有个BreakPoint的插件,我们在这里面选择messagebox

因为这个软件是VB的 所以我们要在VBAPI里面选,如下图

下好断点后,我们点OK 按钮,这时候我们发现,没有弹框 但是OD显示暂停下来了,这就表示我们已经断下来了

这个时候我们看下右下角的堆栈窗口

有个返回到 afkayas_.00402622表示,执行完messagebox会跳转到这句 继续执行,我们在这句上面 点右键,选择反汇编窗口中跟随,或者直接选择这句话,然后敲回车

我们会来到箭头所指向的地址,往上面托 会发现有我们的成功提示和错误提示(要看到这个提示得先查找过字符串) 在地址004025E5出我们发现了一个>符号,这表示是从别的地方跳入过来的

我们选中004025e5这一行,跟到跳转源头出,发现是个je跳转,

我们来分析下

0040258B     /74 58         je short Afkayas_.004025E5
0040258D   . |68 801B4000   push Afkayas_.00401B80                   ;  UNICODE "You Get It"
00402592   . |68 9C1B4000   push Afkayas_.00401B9C                   ;  ASCII "\r"
00402597   . |FFD7          call edi                                 ;  msvbvm50.__vbaStrCat
00402599   . |8BD0          mov edx,eax
0040259B   . |8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
0040259E   . |FFD3          call ebx                                 ;  msvbvm50.__vbaStrMove
004025A0   . |50            push eax
004025A1   . |68 A81B4000   push Afkayas_.00401BA8                   ;  UNICODE "KeyGen It Now"
004025A6   . |FFD7          call edi                                 ;  msvbvm50.__vbaStrCat
004025A8   . |8D4D 94       lea ecx,dword ptr ss:[ebp-0x6C]
004025AB   . |8945 CC       mov dword ptr ss:[ebp-0x34],eax
004025AE   . |8D55 A4       lea edx,dword ptr ss:[ebp-0x5C]
004025B1   . |51            push ecx
004025B2   . |8D45 B4       lea eax,dword ptr ss:[ebp-0x4C]
004025B5   . |52            push edx
004025B6   . |50            push eax
004025B7   . |8D4D C4       lea ecx,dword ptr ss:[ebp-0x3C]
004025BA   . |6A 00         push 0x0
004025BC   . |51            push ecx
004025BD   . |C745 C4 08000>mov dword ptr ss:[ebp-0x3C],0x8
004025C4   . |FF15 10414000 call dword ptr ds:[<&MSVBVM50.#rtcMsgBox>;  msvbvm50.rtcMsgBox
004025CA   . |8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
004025CD   . |FF15 80414000 call dword ptr ds:[<&MSVBVM50.__vbaFreeS>;  msvbvm50.__vbaFreeStr
004025D3   . |8D55 94       lea edx,dword ptr ss:[ebp-0x6C]
004025D6   . |8D45 A4       lea eax,dword ptr ss:[ebp-0x5C]
004025D9   . |52            push edx
004025DA   . |8D4D B4       lea ecx,dword ptr ss:[ebp-0x4C]
004025DD   . |50            push eax
004025DE   . |8D55 C4       lea edx,dword ptr ss:[ebp-0x3C]
004025E1   . |51            push ecx
004025E2   . |52            push edx
004025E3   . |EB 56         jmp short Afkayas_.0040263B
004025E5   > \68 C81B4000   push Afkayas_.00401BC8                   ;  UNICODE "You Get Wrong"
004025EA   .  68 9C1B4000   push Afkayas_.00401B9C                   ;  ASCII "\r"
004025EF   .  FFD7          call edi                                 ;  msvbvm50.__vbaStrCat
004025F1   .  8BD0          mov edx,eax
004025F3   .  8D4D E8       lea ecx,dword ptr ss:[ebp-0x18]
004025F6   .  FFD3          call ebx                                 ;  msvbvm50.__vbaStrMove
004025F8   .  50            push eax
004025F9   .  68 E81B4000   push Afkayas_.00401BE8                   ;  UNICODE "Try Again"
004025FE   .  FFD7          call edi                                 ;  msvbvm50.__vbaStrCat
00402600   .  8945 CC       mov dword ptr ss:[ebp-0x34],eax
00402603   .  8D45 94       lea eax,dword ptr ss:[ebp-0x6C]
00402606   .  8D4D A4       lea ecx,dword ptr ss:[ebp-0x5C]
00402609   .  50            push eax
0040260A   .  8D55 B4       lea edx,dword ptr ss:[ebp-0x4C]
0040260D   .  51            push ecx
0040260E   .  52            push edx
0040260F   .  8D45 C4       lea eax,dword ptr ss:[ebp-0x3C]
00402612   .  6A 00         push 0x0
00402614   .  50            push eax

je出 如果实现了,就会执行提示错误,然后jmp到别的地方,如果没有实现,就会提示成功,然后通过jmp会跳过错误提示,那么 我们把je出nop掉应该就可以了

我们nop掉je然后保存文件~具体怎么保存请看上一篇文章

然后运行

怎么样 又一次爆破成功,这里是通过API断点的方法

打赏