再次发一个破解的文章,希望给个邀请码。
今天我们的目标程序是这么一个软件YourStamp.exe,最后会把这个软件给大家,大家可以试一下。今天我们采用2种办法来爆破这个软件,一种是我们采用追注册码的办法达到破解,另一种是不去追查注册码,第一种办法大家用DEDE去找到那个按钮事件,下断就可以了追到注册码,我想说的是第二种办法,好我们来看吧
首先我们查壳,显示Borland Delphi 6.0 - 7.0大家不陌生吧 好了既然没有加壳,我们开始OD载入吧,我们按F9让程序跑起来,然后用“F12暂停法”,点OD上面的那个K,然后选择最后面的那个,右击点show call,此时看到下面的代码:
0047CF59 . 8B0D 20FD4700 MOV ECX,DWORD PTR DS:[47FD20] ; YourStam.00480CF0
0047CF5F . A1 20FC4700 MOV EAX,DWORD PTR DS:[47FC20]
0047CF64 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
0047CF66 . 8B15 14734700 MOV EDX,DWORD PTR DS:[477314] ; YourStam.00477360
0047CF6C . E8 8BB8FDFF CALL YourStam.004587FC //这是个关键call,F7
0047CF71 . A1 20FC4700 MOV EAX,DWORD PTR DS:[47FC20]
0047CF76 . 8B00 MOV EAX,DWORD PTR DS:[EAX]
0047CF78 . E8 FFB8FDFF CALL YourStam.0045887C // 出现注册对话框
0047CF7D . E8 9273F8FF CALL YourStam.00404314
OD会停在“出现注册对话框”那里,就是红色那行,这时候我们想到找到段首下断,好!我们去段首下断看看,来到段首F2下断,重载程序,F9运行下,很奇怪没有断下来,程序出现注册提示,看来这个断点我们没有选好,那么我们该如何下这个断点呢?此时,我们已经知道程序并不是从段首开始往下的,我们猜想可能是别的调用这个段里的某一地址开始往下执行的。
好了,我们既然有了上面的一些了解,我们用OD重载下程序,在反汇编鼠标右击选中那个查看里的“当前模块中的名称”,然后找到这个函数“GetWindowTextA”,按键盘上的enter键,在“call <jmp.&user32.GetWindowTextA>”按F2,好了,重载F9运行,OD会断在这里
004583C7 |. E8 ACECFAFF call <jmp.&user32.GetWindowTextA> ; \GetWindowTextA
004583CC |. 8BC8 mov ecx, eax
004583CE |. 8BD4 mov edx, esp
004583D0 |. 8BC6 mov eax, esi
004583D2 |. E8 1DC1FAFF call 004044F4
我们单步走看看,一直F8,走到这里后大家注意下,我们注意下面那个红色行,看它返回到那里去?
00458479 . 5E pop esi ; YourStam.0047CF8C
0045847A . 5B pop ebx
0045847B . 59 pop ecx
0045847C . 5D pop ebp
0045847D . C3 retn
当我们走过retn后,来到这里:
0047CF41 . 8B0D 58FD4700 mov ecx, dword ptr [47FD58] ; YourStam.00480D4C
0047CF47 . A1 20FC4700 mov eax, dword ptr [47FC20]
0047CF4C . 8B00 mov eax, dword ptr [eax]
0047CF4E . 8B15 58BF4700 mov edx, dword ptr [47BF58] ; YourStam.0047BFA4
0047CF54 . E8 A3B8FDFF call 004587FC
0047CF59 . 8B0D 20FD4700 mov ecx, dword ptr [47FD20] ; YourStam.00480CF0
0047CF5F . A1 20FC4700 mov eax, dword ptr [47FC20]
0047CF64 . 8B00 mov eax, dword ptr [eax]
0047CF66 . 8B15 14734700 mov edx, dword ptr [477314] ; YourStam.00477360
0047CF6C . E8 8BB8FDFF call 004587FC
0047CF71 . A1 20FC4700 mov eax, dword ptr [47FC20]
0047CF76 . 8B00 mov eax, dword ptr [eax]
0047CF78 . E8 FFB8FDFF call 0045887C ;出现注册对话框
0047CF7D . E8 9273F8FF call 00404314
大家看看这段代码,注意里面那个红色行,一直到下面,是不是有些眼熟啊,正是我们用“F12暂停法”得到的一样啊,这里大家该明白,为什么在段首下断点断不下来了吗?同时证明我们的那个猜想是正确的。我们接着F8单步走完这段看有什么反应,此时要注意“0047CF6C . E8 8BB8FDFF call 004587FC”这个CALL,我们在走过时有些缓冲,很明显能感到,这个CALL可能有问题,我们做好标记,接着走,出现注册框。应该知道在那里下断了吧,就在那个call 下断,我们跟进去看看,果然有问题,我们在这里从新下好断“00458838 . /EB 16 JMP SHORT YourStam.00458850”,分析就不介绍了,有些烦,我就给结果吧!(按这个思路,程序首先调用注册框,然后再次执行这段代码,进入应用界面)
00458838 /EB 16 JMP SHORT YourStam.00458850 //这里下断
0045883A ^|E9 39B3FAFF JMP YourStam.00403B78
0045883F |8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00458842 |33D2 XOR EDX,EDX
00458844 |8910 MOV DWORD PTR DS:[EAX],EDX
00458846 |E8 41B6FAFF CALL YourStam.00403E8C
0045884B |E8 90B6FAFF CALL YourStam.00403EE0
00458850 \837E 44 00 CMP DWORD PTR DS:[ESI+44],0
00458854 75 1D JNZ SHORT YourStam.00458873 //跳就退出程序,不能让跳,nop掉
00458856 8BC3 MOV EAX,EBX
00458858 8B15 04E64400 MOV EDX,DWORD PTR DS:[44E604] ; YourStam.0044E650
0045885E E8 C1AFFAFF CALL YourStam.00403824 //F7 得到 0 注册,1 成功注册
00458863 84C0 TEST AL,AL
00458865 74 0C JE SHORT YourStam.00458873 //这里也不能跳,跳就注册,nop掉
00458867 8BFB MOV EDI,EBX
00458869 8BC7 MOV EAX,EDI
0045886B E8 B868FEFF CALL YourStam.0043F128
00458870 897E 44 MOV DWORD PTR DS:[ESI+44],EDI
我们另保存一份,运行下看看,没有那个注册框了,直接就到应用程序,O(∩_∩)O哈哈哈~!赶快试试吧!
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!