好友
阅读权限20
听众
最后登录1970-1-1
|
吾爱丶破解
发表于 2011-5-14 20:13
【文章标题】: 里诺进销存管理软件V3.50算法分析
【文章作者】: Smecta
【作者邮箱】: showsimida@vip.qq.com
【软件名称】: 里诺进销存管理软件V3.50
【下载地址】: 自己搜索下载
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
我的工具包没有看见了
我就没有查壳直接来破解
不过载入OD就发现
这个软件没有壳,
然后我们直接来搜索他的字符串找到“注册失败,请检查您的注册名和注册码!”
然后我们首先来在上面找到他的首段下断点然后F9跑起来,然后输入我们的假码,
断下然后F8,然后找到他的关键CALL,F7跟进
00734948 . 57 push edi
00734949 . 8945 FC mov dword ptr ss:[ebp-4],eax
0073494C . 33C0 xor eax,eax
0073494E . 55 push ebp ; 首段
0073494F . 68 8D4A7300 push jxc.00734A8D
00734954 . 64:FF30 push dword ptr fs:[eax]
00734957 . 64:8920 mov dword ptr fs:[eax],esp
0073495A . 8B45 FC mov eax,dword ptr ss:[ebp-4]
0073495D . E8 A6020000 call jxc.00734C08 ; 关键CALL F7进去
00734962 . 84C0 test al,al
00734964 . 0F84 DB000000 je jxc.00734A45 ; 这里应该就是爆破点关键的跳
0073496A . 33C0 xor eax,eax
0073496C . 55 push ebp
0073496D . 68 294A7300 push jxc.00734A29
00734972 . 64:FF30 push dword ptr fs:[eax]
00734975 . 64:8920 mov dword ptr fs:[eax],esp
00734978 . B2 01 mov dl,1
0073497A . A1 AC454500 mov eax,dword ptr ds:[4545AC]
0073497F . E8 4CFED1FF call jxc.004547D0
00734984 . 8BD8 mov ebx,eax
00734986 . BA 02000080 mov edx,80000002
0073498B . 8BC3 mov eax,ebx
0073498D . E8 1AFFD1FF call jxc.004548AC
00734992 . B1 01 mov cl,1
00734994 . BA A44A7300 mov edx,jxc.00734AA4 ; Software\zy\JXC
00734999 . 8BC3 mov eax,ebx
0073499B . E8 5000D2FF call jxc.004549F0
007349A0 . 8D55 F4 lea edx,dword ptr ss:[ebp-C]
007349A3 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
007349A6 . 8B80 04030000 mov eax,dword ptr ds:[eax+304]
007349AC . E8 D706D6FF call jxc.00495088
007349B1 . 8B45 F4 mov eax,dword ptr ss:[ebp-C]
007349B4 . 8D55 F8 lea edx,dword ptr ss:[ebp-8]
007349B7 . E8 987FCDFF call jxc.0040C954
007349BC . 8B4D F8 mov ecx,dword ptr ss:[ebp-8]
007349BF . BA BC4A7300 mov edx,jxc.00734ABC ; Name
007349C4 . 8BC3 mov eax,ebx
007349C6 . E8 2D07D2FF call jxc.004550F8
007349CB . 8D55 EC lea edx,dword ptr ss:[ebp-14]
007349CE . 8B45 FC mov eax,dword ptr ss:[ebp-4]
007349D1 . 8B80 08030000 mov eax,dword ptr ds:[eax+308]
007349D7 . E8 AC06D6FF call jxc.00495088
007349DC . 8B45 EC mov eax,dword ptr ss:[ebp-14]
007349DF . 8D55 F0 lea edx,dword ptr ss:[ebp-10]
007349E2 . E8 6D7FCDFF call jxc.0040C954
007349E7 . 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
007349EA . BA CC4A7300 mov edx,jxc.00734ACC ; Pass
007349EF . 8BC3 mov eax,ebx
007349F1 . E8 0207D2FF call jxc.004550F8
007349F6 . 8BC3 mov eax,ebx
007349F8 . E8 07F9CCFF call jxc.00404304
007349FD . 6A 40 push 40
007349FF . 68 D44A7300 push jxc.00734AD4 ; 软件注册
00734A04 . 68 E04A7300 push jxc.00734AE0 ; 注册成功,本程序所有功能限制下次启动时将被自动解除,欢迎您成为我们正式版本用户!
00734A09 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00734A0C . E8 6B71D6FF call jxc.0049BB7C
00734A11 . 50 push eax ; |hOwner
00734A12 . E8 6D40CDFF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
00734A17 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00734A1A . E8 E5E4D7FF call jxc.004B2F04
00734A1F . 33C0 xor eax,eax
00734A21 . 5A pop edx
00734A22 . 59 pop ecx
00734A23 . 59 pop ecx
00734A24 . 64:8910 mov dword ptr fs:[eax],edx
00734A27 . EB 36 jmp short jxc.00734A5F
00734A29 .^ E9 B6FDCCFF jmp jxc.004047E4
00734A2E . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00734A31 . E8 CEE4D7FF call jxc.004B2F04
00734A36 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00734A39 . E8 16010000 call jxc.00734B54
00734A3E . E8 CD01CDFF call jxc.00404C10
00734A43 . EB 1A jmp short jxc.00734A5F
00734A45 > 6A 40 push 40
00734A47 . 68 D44A7300 push jxc.00734AD4 ; 软件注册
00734A4C . 68 304B7300 push jxc.00734B30 ; 注册失败,请检查您的注册名和注册码!
00734A51 . 8B45 FC mov eax,dword ptr ss:[ebp-4]
00734A54 . E8 2371D6FF call jxc.0049BB7C
得出我们的真码:
00734C08 /$ 55 push ebp
00734C09 |. 8BEC mov ebp,esp
00734C0B |. B9 04000000 mov ecx,4
00734C10 |> 6A 00 /push 0
00734C12 |. 6A 00 |push 0
00734C14 |. 49 |dec ecx
00734C15 |.^ 75 F9 \jnz short jxc.00734C10
00734C17 |. 51 push ecx ; F4运行到这里,继续F8
00734C18 |. 53 push ebx
00734C19 |. 56 push esi
00734C1A |. 8BF0 mov esi,eax
00734C1C |. 33C0 xor eax,eax
00734C1E |. 55 push ebp
00734C1F |. 68 1D4D7300 push jxc.00734D1D
00734C24 |. 64:FF30 push dword ptr fs:[eax]
00734C27 |. 64:8920 mov dword ptr fs:[eax],esp
00734C2A |. 8D55 F8 lea edx,[local.2]
00734C2D |. 8B86 08030000 mov eax,dword ptr ds:[esi+308]
00734C33 |. E8 5004D6FF call jxc.00495088
00734C38 |. 8B45 F8 mov eax,[local.2] ; 这里就出现了我们的假码
00734C3B |. 8D55 FC lea edx,[local.1]
00734C3E |. E8 117DCDFF call jxc.0040C954
00734C43 |. 8B45 FC mov eax,[local.1]
00734C46 |. 50 push eax
00734C47 |. 8D55 EC lea edx,[local.5]
00734C4A |. 8B86 04030000 mov eax,dword ptr ds:[esi+304]
00734C50 |. E8 3304D6FF call jxc.00495088
00734C55 |. 8B45 EC mov eax,[local.5] ; 我们的机器码出现
00734C58 |. 8D55 F0 lea edx,[local.4]
00734C5B |. E8 F47CCDFF call jxc.0040C954
00734C60 |. 8B55 F0 mov edx,[local.4]
00734C63 |. 8D4D F4 lea ecx,[local.3]
00734C66 |. 8BC6 mov eax,esi
00734C68 |. E8 FF000000 call jxc.00734D6C
00734C6D |. 8B55 F4 mov edx,[local.3] ; 真码得出
然后我们来制作他的注册机
继续用相同的办法来找到他的
真码所在的地方~~
然后走到这里:
00734C66 |. 8BC6 mov eax,esi
00734C68 |. E8 FF000000 call jxc.00734D6C
00734C6D |. 8B55 F4 mov edx,[local.3] ; 真码所在位置
00734C70 |. 58 pop eax ; 03002F58
我们可以看到FPU里面得出的注册码是指向EDX的
然后我们来打开KEYMAKE
找到的们的主程序
中断的地址就是:00734C70
次数为:1次
第一字节:58
指令长度:1
不会计算指令长度,指令长度就是所有的字节的个数除2
58就是两个 除2就是1
00734C6D |. 8B55 F4 mov edx,[local.3]
如果是这个的话呢,那么就是 8B55 F4 6除2=3了
教程到此结束!
--------------------------------------------------------------------------------
【经验总结】
很多人不会计算指令长度,指令长度就是所有的字节的个数除2
58就是两个 除2就是1
如果是这个的话呢,那么就是 8B55 F4 6除2=3了
就得了了我们的指令长度~~~~
--------------------------------------------------------------------------------
【版权声明】: 本文原创于吾爱丶破解(Smecta), 转载请注明作者并保持文章的完整, 谢谢!
2011年05月14日 20:11:48
|
|