小弟刚学破解几天!今天刚好来了兴致,Radmasm编译masm32出错的提示定位不知道怎么用,就想到Editplush....下了个3.3英文正式版的!就自己破解试试看!!!----目前只能爆破,分析不出它的算法!----------高手略过...以下是破解笔记!!----如果斑竹大大看到能不能给个激活码
我天天挂看雪,刷新,每天才 1 Kx..不是5个,要到啥时候100kx转正啊!
-----------好了废话不多说,上笔记了
1:PEiD 查壳,发现该软件未加壳,先小小的高兴下--在用Ky插件查下算法....OH,十几张!~晕了,哈哈!
2:用OllyDbg载入软件开始破解吧;
-->载入后停在程序的 OEP
00516F10 > $ E8 73740000 call editplus.0051E388
00516F15 .^ E9 79FEFFFF jmp editplus.00516D93
00516F1A /$ 8BFF mov edi,edi
00516F1C |. 51 push ecx
00516F1D |. C701 A4955500 mov dword ptr ds:[ecx],editplus.005595A4
00516F23 |. E8 F6740000 call editplus.0051E41E
00516F28 |. 59 pop ecx
00516F29 \. C3 retn
-->很显然,这是一个vc++ 8.0以上版本的OEP了,先不管,我们先让程序跑起来,
1. --F9运行
2. --一运行就出现了一个提示窗口,大概意思是还有 30 天试用期,上面有个 Enter Registation Code,我们点击它,输入你想要的注册名与注册码.....在点 --Register
---------->方法一:查找字符串,找到 Register 字样,在CPU窗口中跟随,在子程序头下断,点Register后,程序没断下来,证明找错了,没关系咱们换个方法吧;
---------->方法二:点Register后,程序提示错误,注册失败!我们暂时不要关掉这个提示窗口,在OD里面 选 --> 调试 -->暂停,或者直接按键盘的 F12,这样OD就停下来,我们在打开 --查看--堆
栈,或者OD正上方的 K ----
可以看到 --
Address Stack Procedure / arguments Called from Frame
0012EE60 004D95EF USER32.MessageBoxW editplus.004D95E9 0012EE5C
那个MessageBox 的 Text 参数不正是那个错误提示么?哈哈,我们就在那个 Called from 点那个地址ShowCALL,或者直接双击进去!
004D95DA |> \895D FC mov [local.1],ebx
004D95DD |. FF75 14 push [arg.4] ; /Style
004D95E0 |. FF75 10 push [arg.3] ; |Title
004D95E3 |. FF75 0C push [arg.2] ; |Text
004D95E6 |. FF75 08 push [arg.1] ; |hOwner
004D95E9 |. FF15 A0785300 call dword ptr ds:[<&USER32.MessageBoxW>] ; \MessageBoxW
004D95EF |. 8945 E4 mov [local.7],eax
004D95F2 |. C745 FC FEFFF>mov [local.1],-2
我们来到子程序头下断,让OD跑起来,F9,在从新注册一遍,这样就断下来了,注意下堆栈窗口,
0012EEB4 00D73910 UNICODE "Invalid registration code.
Please check that you entered exact information.
If you have any problem"
0012EEB8 00B931F8 UNICODE "EditPlus 3"
0012EEBC 00000010
0012EEC0 0012F160 ASCII "111111111111"
0012EEC4 00D73910 UNICODE "Invalid registration code.
Please check that you entered exact information.
If you have any problem"
0012EEC8 0012F194 ASCII "HeartSy"
0012EECC 00D73910 UNICODE "Invalid registration code.
Please check that you entered exact information.
If you have any problem"
咦....用户名跟密码已经明文出现了!~我们直接返回到调用这个子程序的地方,继续在子程序头下断;
这次可以看到 edi = 0012f160 (ascii "1111111111111")刚好是我们的注册码,证明还没到取注册码的地方,继续返回调用的CALL,这次出现的是用户名,还是没到关键的位置,没关系!我们继续,
最后我们跟到了这里:--->我们终于可以单步分析下了;
004ABFB2 . 8D4C24 4C lea ecx,dword ptr ss:[esp+4C]
004ABFB6 . 51 push ecx
004ABFB7 . 8D95 C8000000 lea edx,dword ptr ss:[ebp+C8]
004ABFBD . 52 push edx
004ABFBE . E8 DDFEFFFF call editplus.004ABEA0 ; 取出我们的用户名
004ABFC3 . 83C4 10 add esp,10
004ABFDF . 8D4C24 1C lea ecx,dword ptr ss:[esp+1C]
004ABFE3 . 51 push ecx
004ABFE4 . 8D55 74 lea edx,dword ptr ss:[ebp+74]
004ABFE7 . 52 push edx
004ABFE8 . E8 B3FEFFFF call editplus.004ABEA0 ; 取出我们的注册码
004ABFED . 8BF8 mov edi,eax
004ABFEF . 8B4424 1C mov eax,dword ptr ss:[esp+1C]
004ABFF3 . 83C4 10 add esp,10
004AC053 . 8B5C24 14 mov ebx,dword ptr ss:[esp+14]
004AC057 > 57 push edi ; 压入注册码
004AC058 . 53 push ebx ; 压入用户名
004AC059 . E8 D2F9FFFF call editplus.004ABA30 ; eax == 0 算法
004AC05E . 83C4 08 add esp,8
004AC061 . 5E pop esi
004AC062 . 85C0 test eax,eax
004AC064 . 75 26 jnz short editplus.004AC08C
004AC066 . 6A FF push -1
004AC068 . 6A 10 push 10
004AC06A . 68 815F0000 push 5F81
004AC06F . E8 FE760300 call editplus.004E3772 ; 出错的CALL,很明显上面的test eax,eax就是一个关键跳了!如果爆破的话,我们就已经成功了!
----------------------------------------------
看到这里我们就成功了3分之一了!爆破的话已经可以成功了!现在我们来分析下它的算法,跟进去004AC059的CALL里;
004ABA30 /$ 83EC 10 sub esp,10
004ABA33 |. A1 84455700 mov eax,dword ptr ds:[574584]
004ABA38 |. 33C4 xor eax,esp
004ABA3A |. 894424 0C mov dword ptr ss:[esp+C],eax
004ABA3E |. 53 push ebx
004ABA3F |. 55 push ebp
004ABA40 |. 8B6C24 1C mov ebp,dword ptr ss:[esp+1C]
004ABA44 |. 56 push esi
004ABA45 |. 8B7424 24 mov esi,dword ptr ss:[esp+24]
004ABA49 |. 8BC5 mov eax,ebp
004ABA4B |. 57 push edi
004ABA4C |. 8D50 01 lea edx,dword ptr ds:[eax+1]
004ABA4F |. 90 nop
004ABA50 |> 8A08 /mov cl,byte ptr ds:[eax]
004ABA52 |. 40 |inc eax
004ABA53 |. 84C9 |test cl,cl
004ABA55 |.^ 75 F9 \jnz short editplus.004ABA50
004ABA57 |. 2BC2 sub eax,edx
004ABA59 |. 8BD8 mov ebx,eax
004ABA5B |. 8BC6 mov eax,esi
004ABA5D |. 8D50 01 lea edx,dword ptr ds:[eax+1]
004ABA60 |> 8A08 /mov cl,byte ptr ds:[eax]
004ABA62 |. 40 |inc eax
004ABA63 |. 84C9 |test cl,cl
004ABA65 |.^ 75 F9 \jnz short editplus.004ABA60
004ABA67 |. 2BC2 sub eax,edx
004ABA69 |. 8BF8 mov edi,eax
004ABA6B |. E8 A0F7FFFF call editplus.004AB210
004ABA70 |. 53 push ebx
004ABA71 |. 55 push ebp
004ABA72 |. 6A 00 push 0
004ABA74 |. E8 F7F7FFFF call editplus.004AB270
004ABA79 |. 0FB7C0 movzx eax,ax
004ABA7C |. 50 push eax
004ABA7D |. 8D4C24 20 lea ecx,dword ptr ss:[esp+20]
004ABA81 |. 68 D8B15400 push editplus.0054B1D8 ; ASCII "%02X"
004ABA86 |. 51 push ecx
004ABA87 |. E8 04FAFFFF call editplus.004AB490
004ABA8C |. 0FB656 02 movzx edx,byte ptr ds:[esi+2]
004ABA90 |. 0FBE4C24 28 movsx ecx,byte ptr ss:[esp+28]
004ABA95 |. 8D46 02 lea eax,dword ptr ds:[esi+2]
004ABA98 |. 83C4 18 add esp,18
004ABA9B |. 3BD1 cmp edx,ecx
004ABA9D |. 74 15 je short editplus.004ABAB4
004ABA9F |> 5F pop edi
004ABAA0 |. 5E pop esi
004ABAA1 |. 5D pop ebp
004ABAA2 |. 33C0 xor eax,eax
004ABAA4 |. 5B pop ebx
004ABAA5 |. 8B4C24 0C mov ecx,dword ptr ss:[esp+C]
004ABAA9 |. 33CC xor ecx,esp
004ABAAB |. E8 8CBA0600 call editplus.0051753C
004ABAB0 |. 83C4 10 add esp,10
004ABAB3 |. C3 retn
004ABAB4 |> 0FB656 03 movzx edx,byte ptr ds:[esi+3]
004ABAB8 |. 0FBE4C24 11 movsx ecx,byte ptr ss:[esp+11]
004ABABD |. 3BD1 cmp edx,ecx
004ABABF |.^ 75 DE jnz short editplus.004ABA9F
004ABAC1 |. 83C7 FE add edi,-2
004ABAC4 |. 57 push edi
004ABAC5 |. 50 push eax
004ABAC6 |. 6A 00 push 0
004ABAC8 |. E8 A3F7FFFF call editplus.004AB270
004ABACD |. 0FB7D0 movzx edx,ax
004ABAD0 |. 52 push edx
004ABAD1 |. 8D4424 20 lea eax,dword ptr ss:[esp+20]
004ABAD5 |. 68 D8B15400 push editplus.0054B1D8 ; ASCII "%02X"
004ABADA |. 50 push eax
004ABADB |. E8 B0F9FFFF call editplus.004AB490
004ABAE0 |. 0FB60E movzx ecx,byte ptr ds:[esi]
004ABAE3 |. 0FBE5424 28 movsx edx,byte ptr ss:[esp+28]
004ABAE8 |. 83C4 18 add esp,18
004ABAEB |. 3BCA cmp ecx,edx
004ABAED |.^ 75 B0 jnz short editplus.004ABA9F
004ABAEF |. 0FB646 01 movzx eax,byte ptr ds:[esi+1]
004ABAF3 |. 0FBE4C24 11 movsx ecx,byte ptr ss:[esp+11]
004ABAF8 |. 33D2 xor edx,edx
004ABAFA |. 3BC1 cmp eax,ecx
004ABAFC |. 8B4C24 1C mov ecx,dword ptr ss:[esp+1C]
004ABB00 |. 5F pop edi
004ABB01 |. 0F94C2 sete dl
004ABB04 |. 5E pop esi
004ABB05 |. 5D pop ebp
004ABB06 |. 5B pop ebx
004ABB07 |. 33CC xor ecx,esp
004ABB09 |. 8BC2 mov eax,edx
004ABB0B |. E8 2CBA0600 call editplus.0051753C
004ABB10 |. 83C4 10 add esp,10
004ABB13 \. C3 retn
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!