首先查壳
ASPack 2.12 -> Alexey Solodovnikov
很简单,用esp搞定
1 00401408 /EB 10 jmp short 0040141A ; oep 2 0040140A |66:623A bound di, dword ptr [edx] 3 0040140D |43 inc ebx 4 0040140E |2B2B sub ebp, dword ptr [ebx] 5 00401410 |48 dec eax 6 00401411 |4F dec edi 7 00401412 |4F dec edi 8 00401413 |4B dec ebx 9 00401414 |90 nop10 00401415 -|E9 98F04900 jmp 008A04B211 0040141A \A1 8BF04900 mov eax, dword ptr [49F08B]12 0040141F C1E0 02 shl eax, 213 00401422 A3 8FF04900 mov dword ptr [49F08F], eax
我们注册试试,发现会出现下面的提示:
我们用OD载入,查找字符串
1 Ultra String Reference, 条目 402 Address=00402DE93 Disassembly=mov edx, 0049F4214 Text String=注册码不正确!5 6 Ultra String Reference, 条目 417 Address=00402E378 Disassembly=mov edx, 0049F42F9 Text String=注册成功!\n 感谢您的支持!
跟进错误提示
1 00402DDE |. /74 4E je short 00402E2E 2 00402DE0 |. |66:C785 14FFF>mov word ptr [ebp-EC], 158 3 00402DE9 |. |BA 21F44900 mov edx, 0049F421 ; 注册码不正确! 4 00402DEE |. |8D85 44FFFFFF lea eax, dword ptr [ebp-BC] 5 00402DF4 |. |E8 B3AD0900 call 0049DBAC 6 00402DF9 |. |FF85 20FFFFFF inc dword ptr [ebp-E0] 7 00402DFF |. |8B00 mov eax, dword ptr [eax] 8 00402E01 |. |E8 F69C0600 call 0046CAFC 9 00402E06 |. |FF8D 20FFFFFF dec dword ptr [ebp-E0]10 00402E0C |. |8D85 44FFFFFF lea eax, dword ptr [ebp-BC]11 00402E12 |. |BA 02000000 mov edx, 212 00402E17 |. |E8 8CAE0900 call 0049DCA813 00402E1C |. |8B0D C09C4A00 mov ecx, dword ptr [4A9CC0] ; dump.004AB1E414 00402E22 |. |8B01 mov eax, dword ptr [ecx]15 00402E24 |. |E8 A7570600 call 004685D016 00402E29 |. |E9 F2000000 jmp 00402F2017 00402E2E |> \66:C785 14FFF>mov word ptr [ebp-EC], 16418 00402E37 |. BA 2FF44900 mov edx, 0049F42F ; 注册成功!\n 感谢您的支持!
错误提示上面的提示即是关键跳,但是通过实验发现,仅修改这个跳转是不成功的,也就是不完美爆破。
因为程序还有个问题,就是使用次数的问题,即是破解了这里,还是会显示nag框。
总的来说,程序验证注册码是否成功,如果成功,则跳过次数限制以及注册失败。
我们往上看
1 0040261F |. /0F84 41090000 je 00402F66 2 00402625 |. |66:C785 14FFF>mov word ptr [ebp-EC], 8C 3 0040262E |. |BA 11F34900 mov edx, 0049F311 ; count 4 00402633 |. |8D45 C8 lea eax, dword ptr [ebp-38] 5 00402636 |. |E8 71B50900 call 0049DBAC 6 0040263B |. |FF85 20FFFFFF inc dword ptr [ebp-E0] 7 00402641 |. |8B10 mov edx, dword ptr [eax] 8 00402643 |. |8B85 FCFEFFFF mov eax, dword ptr [ebp-104] 9 00402649 |. |E8 1E200200 call 0042466C10 0040264E |. |83F8 03 cmp eax, 311 00402651 |. |0F9CC1 setl cl12 00402654 |. |83E1 01 and ecx, 113 00402657 |. |51 push ecx14 00402658 |. |FF8D 20FFFFFF dec dword ptr [ebp-E0]15 0040265E |. |8D45 C8 lea eax, dword ptr [ebp-38]16 00402661 |. |BA 02000000 mov edx, 217 00402666 |. |E8 3DB60900 call 0049DCA818 0040266B |. |59 pop ecx19 0040266C |. |84C9 test cl, cl20 0040266E |. |0F84 4D020000 je 004028C1
有两个跳转,可以跳过次数限制,我们只需要修改第一个即可。
录制的视频: