- UID
- 45447
注册时间2008-2-14
阅读权限8
最后登录1970-1-1
初入江湖
该用户从未签到
|
【破文标题】“起名正宗 V1.31”算法的简单分析(起名正宗 V1.32算法相同,不在重复,只是多了个壳)
【破文作者】hdshanshi
【作者邮箱】[email protected]
【破解工具】OD ,PEID
【破解平台】Win9x/NT/2000/XP
【软件名称】起名正宗 V1.31 完全版
【软件大小】3809 KB
【原版下载】http://www.skycn.com/soft/4248.html
【保护方式】注册码
【软件简介】根据五格剖象法结合四柱。1、提供个人名分析,个人辅助起名;2、提供完备的公司、品牌、行业起名方案及行业名分析;3、提供每个汉字的解释;提供判断号码吉凶的功能;4、不须 ODBC 或 BDE 支持,速度快、功能全、代码小;5、可将分析的人名加注存档,是姓名研究者的得力工具;6、包括百家姓的来源;7、新增姓名八卦卦象分析(是姓名优劣的重要参数之一)。完整版包括简装版和解释库。
【破解声明】不为宣传迷信,只为学习交流.
------------------------------------------------------------------------
【破解过程】
首先用peid查壳,无壳,软件为:Borland Delphi 6.0 - 7.0. OD载入,利用od的字符串插件找到错误提示"注册码错误!".
004C5F47 |. E8 F4ECF3FF call 00404C40
004C5F4C |. 8B45 EC mov eax, dword ptr [ebp-14]
004C5F4F |. 50 push eax
004C5F50 |. 8B8B 34030000 mov ecx, dword ptr [ebx+334]
004C5F56 |. 8B93 38030000 mov edx, dword ptr [ebx+338]
004C5F5C |. 8B83 2C030000 mov eax, dword ptr [ebx+32C]
004C5F62 |. E8 41F7FFFF call 004C56A8 ;F2下断点,F7进入call
004C5F67 |. 84C0 test al, al
004C5F69 |. 74 20 je short 004C5F8B ;关键跳,跳走则注册失败.
004C5F6B |. 6A 00 push 0
004C5F6D |. 66:8B0D F05F4>mov cx, word ptr [4C5FF0]
004C5F74 |. B2 02 mov dl, 2
004C5F76 |. B8 28604C00 mov eax, 004C6028 ; 您已经注册成功!
004C5F7B |. E8 68BDF7FF call 00441CE8
004C5F80 |. B2 01 mov dl, 1
004C5F82 |. 8BC3 mov eax, ebx
004C5F84 |. E8 CFFCFFFF call 004C5C58
004C5F89 |. EB 15 jmp short 004C5FA0
004C5F8B |> 6A 00 push 0
004C5F8D |. 66:8B0D F05F4>mov cx, word ptr [4C5FF0]
004C5F94 |. 33D2 xor edx, edx
004C5F96 |. B8 44604C00 mov eax, 004C6044 ; 注册码错误!
004C5F9B |. E8 48BDF7FF call 00441CE8
在004C5F62 处下断点,F9运行 输入用户名:hdshanshi和注册码:147258369 后,点"注册", 停在004C5F62 处,F7进入004C56A8.
004C56A8 /$ 55 push ebp
004C56A9 |. 8BEC mov ebp, esp
004C56AB |. 81C4 60FDFFFF add esp, -2A0
004C56B1 |. 53 push ebx
004C56B2 |. 56 push esi
004C56B3 |. 57 push edi
004C56B4 |. 33DB xor ebx, ebx
004C56B6 |. 899D 60FEFFFF mov dword ptr [ebp-1A0], ebx
004C56BC |. 895D F8 mov dword ptr [ebp-8], ebx
004C56BF |. 894D FC mov dword ptr [ebp-4], ecx
004C56C2 |. 8BDA mov ebx, edx
004C56C4 |. 8BF8 mov edi, eax
004C56C6 |. 8B45 08 mov eax, dword ptr [ebp+8]
004C56C9 |. E8 0EF7F3FF call 00404DDC
004C56CE |. 33C0 xor eax, eax
004C56D0 |. 55 push ebp
004C56D1 |. 68 51584C00 push 004C5851
004C56D6 |. 64:FF30 push dword ptr fs:[eax]
004C56D9 |. 64:8920 mov dword ptr fs:[eax], esp
004C56DC |. 8D95 60FEFFFF lea edx, dword ptr [ebp-1A0]
004C56E2 |. 8B45 08 mov eax, dword ptr [ebp+8]
004C56E5 |. E8 C638F4FF call 00408FB0
004C56EA |. 83BD 60FEFFFF>cmp dword ptr [ebp-1A0], 0
004C56F1 |. 75 07 jnz short 004C56FA
004C56F3 |. 33DB xor ebx, ebx
004C56F5 |. E9 2E010000 jmp 004C5828
004C56FA |> 8B4D 08 mov ecx, dword ptr [ebp+8]
004C56FD |. 8BD3 mov edx, ebx
004C56FF |. 8BC7 mov eax, edi
004C5701 |. E8 72FAFFFF call 004C5178 ; 关键call,F7进入
004C5706 |. 8BF0 mov esi, eax
004C5708 |. 3B75 FC cmp esi, dword ptr [ebp-4] ;真假码的16进制形式比较,esi中放的是真码的16进制形式. 可以做内存注册机.
004C570B |. 0F85 15010000 jnz 004C5826 ;关键跳.跳走则注册失败.
004C5711 |. E8 EA58F4FF call 0040B000
004C5716 |. DD5D B0 fstp qword ptr [ebp-50]
004C5719 |. 9B wait
004C571A |. E8 E158F4FF call 0040B000
004C571F |. DD5D B8 fstp qword ptr [ebp-48]
004C5722 |. 9B wait
004C5723 |. C645 C0 01 mov byte ptr [ebp-40], 1
004C5727 |. C645 C1 00 mov byte ptr [ebp-3F], 0
004C572B |. 895D C4 mov dword ptr [ebp-3C], ebx
004C572E |. 8D85 60FDFFFF lea eax, dword ptr [ebp-2A0]
004C5734 |. 8B55 08 mov edx, dword ptr [ebp+8]
004C5737 |. B9 FF000000 mov ecx, 0FF
004C573C |. E8 8FF4F3FF call 00404BD0
004C5741 |. 8D95 60FDFFFF lea edx, dword ptr [ebp-2A0]
004C5747 |. 8D45 C8 lea eax, dword ptr [ebp-38]
004C574A |. B1 14 mov cl, 14
004C574C |. E8 93D8F3FF call 00402FE4
004C5751 |. 8975 E0 mov dword ptr [ebp-20], esi
004C5754 |. 8D85 60FDFFFF lea eax, dword ptr [ebp-2A0]
004C575A |. 8B57 4C mov edx, dword ptr [edi+4C]
004C575D |. B9 FF000000 mov ecx, 0FF
004C5762 |. E8 69F4F3FF call 00404BD0
F8单步跟踪,来到 004C5701 处.F7进入 004C5178.
004C5178 /$ 55 push ebp
004C5179 |. 8BEC mov ebp, esp
004C517B |. 83C4 F4 add esp, -0C
004C517E |. 53 push ebx
004C517F |. 56 push esi
004C5180 |. 57 push edi
004C5181 |. 894D F8 mov dword ptr [ebp-8], ecx
004C5184 |. 8955 FC mov dword ptr [ebp-4], edx
004C5187 |. 8B45 F8 mov eax, dword ptr [ebp-8]
004C518A |. E8 4DFCF3FF call 00404DDC
004C518F |. 33C0 xor eax, eax
004C5191 |. 55 push ebp
004C5192 |. 68 39524C00 push 004C5239
004C5197 |. 64:FF30 push dword ptr fs:[eax]
004C519A |. 64:8920 mov dword ptr fs:[eax], esp
004C519D |. 8B45 F8 mov eax, dword ptr [ebp-8]
004C51A0 |. E8 4FFAF3FF call 00404BF4 ;计算 固定汉字"起名正宗"+"用户名"的长度.
004C51A5 |. 85C0 test eax, eax ;长度放入eax中.
004C51A7 |. 75 04 jnz short 004C51AD
004C51A9 |. 33DB xor ebx, ebx
004C51AB |. EB 76 jmp short 004C5223
004C51AD |> 33F6 xor esi, esi
004C51AF |. 85C0 test eax, eax
004C51B1 |. 7E 13 jle short 004C51C6
004C51B3 |. BA 01000000 mov edx, 1
004C51B8 |> 8B4D F8 /mov ecx, dword ptr [ebp-8]
004C51BB |. 0FB64C11 FF |movzx ecx, byte ptr [ecx+edx-1] ;依次取 固定汉字"起名正宗"+"用户名"的ascii码放入ecx中
004C51C0 |. 03F1 |add esi, ecx ;esi+ecx 结果放入esi.
004C51C2 |. 42 |inc edx ;edx自加1
004C51C3 |. 48 |dec eax ;eax自减1
004C51C4 |.^ 75 F2 \jnz short 004C51B8 ;这个循环是计算 固定汉字"起名正宗"+"用户名"的ascii码之和 结果放到esi中, 我们把这个数值记为:A
004C51C6 |> 8BC6 mov eax, esi ;A 放入eax中
004C51C8 |. B9 DF000000 mov ecx, 0DF ;固定数值0DF 放入ecx中.
004C51CD |. 99 cdq ;EDX清零
004C51CE |. F7F9 idiv ecx ;EAX除以ECX,商放在EAX,余数在EDX
004C51D0 |. 8BDA mov ebx, edx ;第一个余数放入ebx中,记为:B
004C51D2 |. 8BC6 mov eax, esi ;A 放入eax中
004C51D4 |. B9 85000000 mov ecx, 85 ;固定数值85 放入ecx中.
004C51D9 |. 99 cdq ;EDX清零
004C51DA |. F7F9 idiv ecx ;EAX除以ECX,商放在EAX,余数在EDX
004C51DC |. 8855 F7 mov byte ptr [ebp-9], dl ;第二个余数放入:byte ptr [ebp-9] 中,记为:C
004C51DF |. 8BC6 mov eax, esi ;A 放入eax中
004C51E1 |. B9 AF000000 mov ecx, 0AF ;固定数值0AF 放入ecx中.
004C51E6 |. 99 cdq ;EDX清零
004C51E7 |. F7F9 idiv ecx ;EAX除以ECX,商放在EAX,余数在EDX
004C51E9 |. 8BC2 mov eax, edx ;第三个余数放入eax中记为:D
004C51EB |. 33D2 xor edx, edx ;edx清零.
004C51ED |. 8AD3 mov dl, bl ;第一个余数B放入dl中.
004C51EF |. 8BF2 mov esi, edx ;第一个余数B放入esi中.
004C51F1 |. C1E6 0C shl esi, 0C ;B左移0C位,及=B*1000
004C51F4 |. 2BF2 sub esi, edx ;B*1000-B 放入esi中.
004C51F6 |. 33C9 xor ecx, ecx ;ecx清零
004C51F8 |. 8A4D F7 mov cl, byte ptr [ebp-9] ;第二个余数C放入cl中.
004C51FB |. 8BF9 mov edi, ecx ;第二个余数C放入edi.
004C51FD |. C1E7 08 shl edi, 8 ;C左移8位,及=C*100.
004C5200 |. 2BF9 sub edi, ecx ;C*100-C 放入edi中.
004C5202 |. 03F7 add esi, edi ; (B*1000-B) + (C*100-C)
004C5204 |. 8BF8 mov edi, eax ;第三个余数D放入edi中.
004C5206 |. 81E7 FF000000 and edi, 0FF
004C520C |. 6BFF 0F imul edi, edi, 0F ;D*0F 放入edi中
004C520F |. 03F7 add esi, edi ;(B*1000-B)+(C*100-C)+D*0F 放入esi中
004C5211 |. 03F2 add esi, edx ;(B*1000-B)+(C*100-C)+D*0F +B 放入esi中
004C5213 |. 03F1 add esi, ecx ;(B*1000-B)+(C*100-C)+D*0F +B+C 放入esi中
004C5215 |. 25 FF000000 and eax, 0FF
004C521A |. 03F0 add esi, eax ;(B*1000-B)+(C*100-C)+D*0F +B+C+D 放入esi中
(B*1000-B)+(C*100-C)+D*0F +B+C+D 可以简化为:B*1000+C*100+D*10 把结果记为:M 放入esi中(注:以上都是16进制形式).
004C521C |. 8BC6 mov eax, esi ;M 放入eax
004C521E |. 8B5D FC mov ebx, dword ptr [ebp-4] ;dword ptr [ebp-4]是机器码的16进制, 机器码的16进制形式放入ebx.
004C5221 |. 33D8 xor ebx, eax ;ebx和eax异或的结果放入ebx中.(ebx中存放的是真正注册码的16进制形式.)
004C5223 |> 33C0 xor eax, eax ;eax清零.
004C5225 |. 5A pop edx
004C5226 |. 59 pop ecx
004C5227 |. 59 pop ecx
004C5228 |. 64:8910 mov dword ptr fs:[eax], edx
004C522B |. 68 40524C00 push 004C5240
004C5230 |> 8D45 F8 lea eax, dword ptr [ebp-8]
004C5233 |. E8 04F7F3FF call 0040493C
004C5238 \. C3 retn
------------------------------------------------------------------------
【破解总结】 这个软件的算法还是挺简单的.
固定汉字("起名正宗"+"用户名")的ascii码之和:A, 除以 三个固定的数值0DF , 85 , 0AF 的余数分别记为: B, C, D 然后 B*1000+C*100+D*10 之和.xor 机器码的16进制形式的结果,转换成10进制 就是注册码.
注册码存放在:WINDOWS目录下的"_!!35759._Si"文件中.删除可以重新注册.
注册机不会写,有待进一步学习,另外本人分析的难免有错误的地方,请大家批评指正.!!!
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!
[ 本帖最后由 hdshanshi 于 2008-4-6 15:57 编辑 ] |
评分
-
查看全部评分
|