“起名正宗 V1.31”算法的简单分析(如有雷同,纯属巧合)
【破文标题】“起名正宗 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
004C5F4F|.50 push eax
004C5F50|.8B8B 34030000 mov ecx, dword ptr
004C5F56|.8B93 38030000 mov edx, dword ptr
004C5F5C|.8B83 2C030000 mov eax, dword ptr
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
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
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 , ebx
004C56BC|.895D F8 mov dword ptr , ebx
004C56BF|.894D FC mov dword ptr , ecx
004C56C2|.8BDA mov ebx, edx
004C56C4|.8BF8 mov edi, eax
004C56C6|.8B45 08 mov eax, dword ptr
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:
004C56D9|.64:8920 mov dword ptr fs:, esp
004C56DC|.8D95 60FEFFFF lea edx, dword ptr
004C56E2|.8B45 08 mov eax, dword ptr
004C56E5|.E8 C638F4FF call 00408FB0
004C56EA|.83BD 60FEFFFF>cmp dword ptr , 0
004C56F1|.75 07 jnz short 004C56FA
004C56F3|.33DB xor ebx, ebx
004C56F5|.E9 2E010000 jmp 004C5828
004C56FA|>8B4D 08 mov ecx, dword ptr
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 ;真假码的16进制形式比较,esi中放的是真码的16进制形式.可以做内存注册机.
004C570B|.0F85 15010000 jnz 004C5826 ;关键跳.跳走则注册失败.
004C5711|.E8 EA58F4FF call 0040B000
004C5716|.DD5D B0 fstp qword ptr
004C5719|.9B wait
004C571A|.E8 E158F4FF call 0040B000
004C571F|.DD5D B8 fstp qword ptr
004C5722|.9B wait
004C5723|.C645 C0 01 mov byte ptr , 1
004C5727|.C645 C1 00 mov byte ptr , 0
004C572B|.895D C4 mov dword ptr , ebx
004C572E|.8D85 60FDFFFF lea eax, dword ptr
004C5734|.8B55 08 mov edx, dword ptr
004C5737|.B9 FF000000 mov ecx, 0FF
004C573C|.E8 8FF4F3FF call 00404BD0
004C5741|.8D95 60FDFFFF lea edx, dword ptr
004C5747|.8D45 C8 lea eax, dword ptr
004C574A|.B1 14 mov cl, 14
004C574C|.E8 93D8F3FF call 00402FE4
004C5751|.8975 E0 mov dword ptr , esi
004C5754|.8D85 60FDFFFF lea eax, dword ptr
004C575A|.8B57 4C mov edx, dword ptr
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 , ecx
004C5184|.8955 FC mov dword ptr , edx
004C5187|.8B45 F8 mov eax, dword ptr
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:
004C519A|.64:8920 mov dword ptr fs:, esp
004C519D|.8B45 F8 mov eax, dword ptr
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
004C51BB|.0FB64C11 FF |movzx ecx, byte ptr ;依次取 固定汉字"起名正宗"+"用户名"的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 , dl ;第二个余数放入:byte ptr 中,记为: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 ;第二个余数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 ;dword ptr 是机器码的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:, edx
004C522B|.68 40524C00 push 004C5240
004C5230|>8D45 F8 lea eax, dword ptr
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 编辑 ] /:001 很好,,下载来看一下 强大~~去下个软件试试看先~谢谢楼主分享经验!! 谢谢分享啊
研究学习中 学习中,谢谢!!!!! 原帖由 hdshanshi 于 2008-4-6 15:48 发表 https://www.chinapyg.com/images/common/back.gif
【破文标题】“起名正宗 V1.31”算法的简单分析(起名正宗 V1.32算法相同,不在重复,只是多了个壳)
【破文作者】hdshanshi
【作者邮箱】[email protected]
【破解工具】OD ,PEID
【破解平台】Win9x/NT/2000/XP
【 ...
我来发一个起名正宗 v1.32 的注册机 学习了..楼主的教程很详细.. 原帖由 ttt0001 于 8/4/2008 13:54 发表 https://www.chinapyg.com/images/common/back.gif
我来发一个起名正宗 v1.32 的注册机
不晓得阁下是否可以贴出源码?
回复 8# 的帖子
不知道你说的是什么源码,要是注册分析的话,楼主分析的很详细了! 很详细慢慢学习、。。。
页:
[1]
2