lzq1973 发表于 2007-4-28 16:04:40

小巧名片王 2.0 解码分析

【破文标题】小巧名片王 2.0 解码分析
【破文作者】lzq1973
【作者邮箱】[email protected]
【作者主页】http://my.winzheng.com/?455397
【破解工具】OD、PEiD、C32Asm
【破解平台】WinXP
【软件名称】小巧名片王 2.0
【软件大小】2.45M
【原版下载】http://www.sharebank.com.cn/soft/SoftView_21252.htm
【保护方式】SN
【软件简介】    名片本身是联系信息,各种各样的联系信息毫无疑问是您非常宝贵的无形资产。小巧名片王主要是为了管理您长期积累下来的众多名片而设计,当然也可以用来管理您的其他联系信息。
本软件具有价格低廉,操作简单,查找方便,管理容易,界面直观优美,功能强大,程序小巧的优点


【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】1、运行程序,得知是重启验证型的,记住相关提示信息;
2、PEiD侦之Borland Delphi 6.0 - 7.0;
3、OD载入,在这里下断,来到

0058EE59   .E8 D6DEFFFF   call    0058CD34                         ;关键算法
0058EE5E   .8B55 A8       mov   edx,                   ;(ASCII "MPW4-145356ei8-3593")
0058EE61   .A1 40D45A00   mov   eax,
0058EE66   .8B00          mov   eax,
0058EE68   .8B80 54040000 mov   eax,                    ;假码
0058EE6E   .E8 3D5EE7FF   call    00404CB0                         ;进去真假码比较·[这里可做内存注册器(EDX)]
0058EE73   .74 44         je      short 0058EEB9                   ;相等就跳
0058EE75   .8D4D A4       lea   ecx,
0058EE78   .A1 40D45A00   mov   eax,
0058EE7D   .8B00          mov   eax,
0058EE7F   .8B90 50040000 mov   edx,
0058EE85   .A1 7CD15A00   mov   eax,
0058EE8A   .8B00          mov   eax,
0058EE8C   .E8 A3DEFFFF   call    0058CD34                         ;关键算法
0058EE91   .8D45 A4       lea   eax,
0058EE94   .BA 00F25800   mov   edx, 0058F200                  ;-sql
0058EE99   .E8 CE5CE7FF   call    00404B6C                         ;拼接
0058EE9E   .8B55 A4       mov   edx,                   ;拼接后的 (ASCII "MPW4-145356ei8-3593-SQL")
0058EEA1   .A1 40D45A00   mov   eax,
0058EEA6   .8B00          mov   eax,
0058EEA8   .8B80 54040000 mov   eax,
0058EEAE   .E8 FD5DE7FF   call    00404CB0
0058EEB3   .0F85 A0000000 jnz   0058EF59                         ;不等就跳
0058EEB9   >A1 40D45A00   mov   eax,
0058EEBE   .8B00          mov   eax,
0058EEC0   .C680 4C040000>mov   byte ptr , 0
0058EEC7   .81FB C8000000 cmp   ebx, 0C8
0058EECD   .0F8C DC000000 jl      0058EFAF                         ;相等就跳
0058EED3   .A1 40D45A00   mov   eax,
0058EED8   .8B00          mov   eax,
0058EEDA   .80B8 10040000>cmp   byte ptr , 0
0058EEE1   .75 42         jnz   short 0058EF25
0058EEE3   .8D45 A0       lea   eax,
0058EEE6   .50            push    eax
0058EEE7   .A1 40D45A00   mov   eax,
0058EEEC   .8B00          mov   eax,
0058EEEE   .8B80 54040000 mov   eax,
0058EEF4   .B9 03000000   mov   ecx, 3
0058EEF9   .BA 15000000   mov   edx, 15
0058EEFE   .E8 C15EE7FF   call    00404DC4

========= 0058EE8C   .E8 A3DEFFFF   call    0058CD34 ===========

0058CD34/$55            push    ebp                              ;来到这里
0058CD35|.8BEC          mov   ebp, esp
0058CD37|.51            push    ecx
0058CD38|.B9 04000000   mov   ecx, 4
0058CD3D|>6A 00         /push    0
0058CD3F|.6A 00         |push    0
0058CD41|.49            |dec   ecx
0058CD42|.^ 75 F9         \jnz   short 0058CD3D
0058CD44|.51            push    ecx
0058CD45|.874D FC       xchg    , ecx
0058CD48|.53            push    ebx
0058CD49|.56            push    esi
0058CD4A|.57            push    edi
0058CD4B|.8BF9          mov   edi, ecx
0058CD4D|.8955 FC       mov   , edx                     ;(ASCII "PF2B27K2119S5A")
0058CD50|.8B45 FC       mov   eax,
0058CD53|.E8 FC7FE7FF   call    00404D54
0058CD58|.33C0          xor   eax, eax
0058CD5A|.55            push    ebp
0058CD5B|.68 F5CE5800   push    0058CEF5
0058CD60|.64:FF30       push    dword ptr fs:
0058CD63|.64:8920       mov   fs:, esp
0058CD66|.8BC7          mov   eax, edi
0058CD68|.E8 377BE7FF   call    004048A4
0058CD6D|.8B45 FC       mov   eax,                      ;(ASCII "PF2B27K2119S5A")
0058CD70|.E8 EF7DE7FF   call    00404B64
0058CD75|.8BF0          mov   esi, eax
0058CD77|.85F6          test    esi, esi
0058CD79|.7E 26         jle   short 0058CDA1
0058CD7B|.BB 01000000   mov   ebx, 1
0058CD80|>8D4D EC       /lea   ecx,                    ;/ 字符串转为16进制(指机器码)
0058CD83|.8B45 FC       |mov   eax,
0058CD86|.0FB64418 FF   |movzx   eax, byte ptr
0058CD8B|.33D2          |xor   edx, edx
0058CD8D|.E8 1ED0E7FF   |call    00409DB0
0058CD92|.8B55 EC       |mov   edx,
0058CD95|.8D45 F8       |lea   eax,
0058CD98|.E8 CF7DE7FF   |call    00404B6C
0058CD9D|.43            |inc   ebx
0058CD9E|.4E            |dec   esi
0058CD9F|.^ 75 DF         \jnz   short 0058CD80                  ;\ 循环
0058CDA1|>8B45 F8       mov   eax,                      ;(ASCII "5046324232374B32313139533541")
0058CDA4|.E8 BB7DE7FF   call    00404B64
0058CDA9|.8BF0          mov   esi, eax
0058CDAB|.85F6          test    esi, esi
0058CDAD|.7E 2C         jle   short 0058CDDB
0058CDAF|.BB 01000000   mov   ebx, 1
0058CDB4|>8B45 F8       /mov   eax,                   ;/ 翻转之
0058CDB7|.E8 A87DE7FF   |call    00404B64
0058CDBC|.2BC3          |sub   eax, ebx
0058CDBE|.8B55 F8       |mov   edx,
0058CDC1|.8A1402      |mov   dl,
0058CDC4|.8D45 E8       |lea   eax,
0058CDC7|.E8 C07CE7FF   |call    00404A8C
0058CDCC|.8B55 E8       |mov   edx,
0058CDCF|.8D45 F4       |lea   eax,
0058CDD2|.E8 957DE7FF   |call    00404B6C
0058CDD7|.43            |inc   ebx
0058CDD8|.4E            |dec   esi
0058CDD9|.^ 75 D9         \jnz   short 0058CDB4                  ;\ 循环
0058CDDB|>8D45 F8       lea   eax,
0058CDDE|.50            push    eax
0058CDDF|.B9 04000000   mov   ecx, 4                           ;长度4
0058CDE4|.BA 01000000   mov   edx, 1                           ;从第一位开始
0058CDE9|.8B45 F4       mov   eax,                      ;翻转后的 (ASCII "14533593131323B4732324236405")
0058CDEC|.E8 D37FE7FF   call    00404DC4
0058CDF1|.8D45 F4       lea   eax,
0058CDF4|.50            push    eax
0058CDF5|.B9 04000000   mov   ecx, 4                           ;长度4
0058CDFA|.BA 05000000   mov   edx, 5                           ;从第五位开始
0058CDFF|.8B45 F4       mov   eax,
0058CE02|.E8 BD7FE7FF   call    00404DC4
0058CE07|.8B45 F8       mov   eax,                      ;前4位 (ASCII "1453")
0058CE0A|.E8 557DE7FF   call    00404B64
0058CE0F|.83F8 04       cmp   eax, 4
0058CE12|.7D 2F         jge   short 0058CE43
0058CE14|.8B45 F8       mov   eax,
0058CE17|.E8 487DE7FF   call    00404B64
0058CE1C|.8BD8          mov   ebx, eax
0058CE1E|.83FB 03       cmp   ebx, 3
0058CE21|.7F 20         jg      short 0058CE43
0058CE23|>8D4D E4       /lea   ecx,
0058CE26|.8BC3          |mov   eax, ebx
0058CE28|.C1E0 02       |shl   eax, 2
0058CE2B|.33D2          |xor   edx, edx
0058CE2D|.E8 7ECFE7FF   |call    00409DB0
0058CE32|.8B55 E4       |mov   edx,
0058CE35|.8D45 F8       |lea   eax,
0058CE38|.E8 2F7DE7FF   |call    00404B6C
0058CE3D|.43            |inc   ebx
0058CE3E|.83FB 04       |cmp   ebx, 4
0058CE41|.^ 75 E0         \jnz   short 0058CE23
0058CE43|>8B45 F4       mov   eax,                      ;第5~8位 (ASCII "3593")
0058CE46|.E8 197DE7FF   call    00404B64
0058CE4B|.83F8 04       cmp   eax, 4
0058CE4E|.7D 2F         jge   short 0058CE7F
0058CE50|.8B45 F4       mov   eax,
0058CE53|.E8 0C7DE7FF   call    00404B64
0058CE58|.8BD8          mov   ebx, eax
0058CE5A|.83FB 03       cmp   ebx, 3
0058CE5D|.7F 20         jg      short 0058CE7F
0058CE5F|>8D4D E0       /lea   ecx,
0058CE62|.8BC3          |mov   eax, ebx
0058CE64|.C1E0 02       |shl   eax, 2
0058CE67|.33D2          |xor   edx, edx
0058CE69|.E8 42CFE7FF   |call    00409DB0
0058CE6E|.8B55 E0       |mov   edx,
0058CE71|.8D45 F4       |lea   eax,
0058CE74|.E8 F37CE7FF   |call    00404B6C
0058CE79|.43            |inc   ebx
0058CE7A|.83FB 04       |cmp   ebx, 4
0058CE7D|.^ 75 E0         \jnz   short 0058CE5F
0058CE7F|>8D45 F0       lea   eax,
0058CE82|.BA 0CCF5800   mov   edx, 0058CF0C                  ;常量 (ASCII "MPW456ei878")
0058CE87|.E8 B07AE7FF   call    0040493C
0058CE8C|.8D45 DC       lea   eax,
0058CE8F|.50            push    eax
0058CE90|.B9 04000000   mov   ecx, 4                           ;长度4
0058CE95|.BA 01000000   mov   edx, 1                           ;从第一位开始
0058CE9A|.8B45 F0       mov   eax,
0058CE9D|.E8 227FE7FF   call    00404DC4                         ;取常量的前4位
0058CEA2|.FF75 DC       push    dword ptr                ;(ASCII "MPW4")
0058CEA5|.68 20CF5800   push    0058CF20                         ;-
0058CEAA|.FF75 F8       push    dword ptr                 ;(ASCII "1453")
0058CEAD|.8D45 D8       lea   eax,
0058CEB0|.50            push    eax
0058CEB1|.B9 05000000   mov   ecx, 5                           ;长度5
0058CEB6|.BA 05000000   mov   edx, 5                           ;从第五位开始
0058CEBB|.8B45 F0       mov   eax,
0058CEBE|.E8 017FE7FF   call    00404DC4
0058CEC3|.FF75 D8       push    dword ptr                ;第5~9位 (ASCII "56ei8")
0058CEC6|.68 20CF5800   push    0058CF20                         ;-
0058CECB|.FF75 F4       push    dword ptr                 ;(ASCII "3593")
0058CECE|.8BC7          mov   eax, edi
0058CED0|.BA 06000000   mov   edx, 6
0058CED5|.E8 4A7DE7FF   call    00404C24
0058CEDA|.33C0          xor   eax, eax
0058CEDC|.5A            pop   edx
0058CEDD|.59            pop   ecx
0058CEDE|.59            pop   ecx
0058CEDF|.64:8910       mov   fs:, edx
0058CEE2|.68 FCCE5800   push    0058CEFC
0058CEE7|>8D45 D8       lea   eax,
0058CEEA|.BA 0A000000   mov   edx, 0A
0058CEEF|.E8 D479E7FF   call    004048C8
0058CEF4\.C3            retn
0058CEF5   .^ E9 CE72E7FF   jmp   004041C8
0058CEFA   .^ EB EB         jmp   short 0058CEE7
0058CEFC   .5F            pop   edi
0058CEFD   .5E            pop   esi
0058CEFE   .5B            pop   ebx
0058CEFF   .8BE5          mov   esp, ebp
0058CF01   .5D            pop   ebp
0058CF02   .C3            retn


------------------------------------------------------------------------
【破解总结】明码比较的,算法也简单,还是分析下。
1、令机器码为A;
2、将字符串A转为16进制,令其为B;
3、将B翻转后为C;
4、取C的前4位为C1、第5~8位为C2;
5、取常量D(即MPW456ei878)的前4位为D1、第5~9位为D2;
6、注册码K=D1-C1+D2-C2(这里的“-”为分隔符,“+”为连接符),如我这里的是MPW4-145356ei8-3593
7、注册码K8也可是这样的,K8=K-SQL(这里的“-”为分隔符),如MPW4-145356ei8-3593-SQL

注册信息保存处:

"Date"=hex:00,00,00,00,e0,23,e3,40
"Name"="PF2B27K2119S5A"
"Pass"="MPW4-145356ei8-3593-SQL"
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

月之精灵 发表于 2007-4-28 17:18:13

坐在沙发上学习

bhcjl 发表于 2007-4-29 13:58:13

在那里下断,搞不明白

风间仁 发表于 2007-4-29 16:22:51

学习。。。

lanrs 发表于 2007-5-1 19:22:05

学习之中,下载练练。
谢谢。。。。。。。

zuqiu123 发表于 2007-5-1 21:55:07

谢谢了!在学习中

ccky 发表于 2007-5-2 00:36:21

学习学习。。。。
谢谢

Nisy 发表于 2007-5-21 11:13:39

感谢分享,基础算法,适合新手学习~~

pw2000 发表于 2007-5-22 15:23:08

向前辈学习。
页: [1]
查看完整版本: 小巧名片王 2.0 解码分析