飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 10334|回复: 13

[原创] “起名正宗 V1.31”算法的简单分析(如有雷同,纯属巧合)

[复制链接]

该用户从未签到

发表于 2008-4-6 15:48:52 | 显示全部楼层 |阅读模式
【破文标题】“起名正宗 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 编辑 ]

评分

参与人数 1飘云币 +20 收起 理由
tianxj + 20 感谢您发布的原创作品!

查看全部评分

PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-6 18:36:35 | 显示全部楼层
/:001 很好,,下载来看一下
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-8 09:28:48 | 显示全部楼层
强大~~去下个软件试试看先~谢谢楼主分享经验!!
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-8 09:38:48 | 显示全部楼层
谢谢分享啊
研究学习中
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-8 12:34:14 | 显示全部楼层
学习中,谢谢!!!!!
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-8 13:54:41 | 显示全部楼层
原帖由 hdshanshi 于 2008-4-6 15:48 发表
【破文标题】“起名正宗 V1.31”算法的简单分析(起名正宗 V1.32算法相同,不在重复,只是多了个壳)
【破文作者】hdshanshi
【作者邮箱】[email protected]
【破解工具】OD ,PEID
【破解平台】Win9x/NT/2000/XP
【 ...







我来发一个起名正宗 v1.32 的注册机

起名正宗_Key.rar

14.05 KB, 下载次数: 24, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-9 10:58:23 | 显示全部楼层
学习了..楼主的教程很详细..
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-9 10:59:33 | 显示全部楼层
原帖由 ttt0001 于 8/4/2008 13:54 发表







我来发一个起名正宗 v1.32 的注册机



不晓得阁下是否可以贴出源码?
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-9 11:23:40 | 显示全部楼层

回复 8# 的帖子

不知道你说的是什么源码,要是注册分析的话,楼主分析的很详细了!
PYG19周年生日快乐!

该用户从未签到

发表于 2008-4-9 15:03:30 | 显示全部楼层
很详细
慢慢学习、。。。
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表