论坛: 编程破解 标题: [转载]小巧名片王2.0解码分析 复制本贴地址    
作者: yongmin [yongmin]    论坛用户   登录
作者:lzq1973

【破文标题】小巧名片王 2.0 解码分析
【破文作者】lzq1973[PYG][CZG][OCN][DFCG]
【作者邮箱】lzq9888@126.com
【作者主页】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, [ebp-58]                    ;  (ASCII "MPW4-145356ei8-3593")
0058EE61  .  A1 40D45A00  mov    eax, [5AD440]
0058EE66  .  8B00          mov    eax, [eax]
0058EE68  .  8B80 54040000 mov    eax, [eax+454]                  ;  假码
0058EE6E  .  E8 3D5EE7FF  call    00404CB0                        ;  进去真假码比较・[这里可做内存注册器(EDX)]
0058EE73  .  74 44        je      short 0058EEB9                  ;  相等就跳
0058EE75  .  8D4D A4      lea    ecx, [ebp-5C]
0058EE78  .  A1 40D45A00  mov    eax, [5AD440]
0058EE7D  .  8B00          mov    eax, [eax]
0058EE7F  .  8B90 50040000 mov    edx, [eax+450]
0058EE85  .  A1 7CD15A00  mov    eax, [5AD17C]
0058EE8A  .  8B00          mov    eax, [eax]
0058EE8C  .  E8 A3DEFFFF  call    0058CD34                        ;  关键算法
0058EE91  .  8D45 A4      lea    eax, [ebp-5C]
0058EE94  .  BA 00F25800  mov    edx, 0058F200                    ;  -sql
0058EE99  .  E8 CE5CE7FF  call    00404B6C                        ;  拼接
0058EE9E  .  8B55 A4      mov    edx, [ebp-5C]                    ;  拼接后的 (ASCII "MPW4-145356ei8-3593-SQL")
0058EEA1  .  A1 40D45A00  mov    eax, [5AD440]
0058EEA6  .  8B00          mov    eax, [eax]
0058EEA8  .  8B80 54040000 mov    eax, [eax+454]
0058EEAE  .  E8 FD5DE7FF  call    00404CB0
0058EEB3  .  0F85 A0000000 jnz    0058EF59                        ;  不等就跳
0058EEB9  >  A1 40D45A00  mov    eax, [5AD440]
0058EEBE  .  8B00          mov    eax, [eax]
0058EEC0  .  C680 4C040000>mov    byte ptr [eax+44C], 0
0058EEC7  .  81FB C8000000 cmp    ebx, 0C8
0058EECD  .  0F8C DC000000 jl      0058EFAF                        ;  相等就跳
0058EED3  .  A1 40D45A00  mov    eax, [5AD440]
0058EED8  .  8B00          mov    eax, [eax]
0058EEDA  .  80B8 10040000>cmp    byte ptr [eax+410], 0
0058EEE1  .  75 42        jnz    short 0058EF25
0058EEE3  .  8D45 A0      lea    eax, [ebp-60]
0058EEE6  .  50            push    eax
0058EEE7  .  A1 40D45A00  mov    eax, [5AD440]
0058EEEC  .  8B00          mov    eax, [eax]
0058EEEE  .  8B80 54040000 mov    eax, [eax+454]
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    [ebp-4], ecx
0058CD48  |.  53            push    ebx
0058CD49  |.  56            push    esi
0058CD4A  |.  57            push    edi
0058CD4B  |.  8BF9          mov    edi, ecx
0058CD4D  |.  8955 FC      mov    [ebp-4], edx                    ;  (ASCII "PF2B27K2119S5A")
0058CD50  |.  8B45 FC      mov    eax, [ebp-4]
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:[eax]
0058CD63  |.  64:8920      mov    fs:[eax], esp
0058CD66  |.  8BC7          mov    eax, edi
0058CD68  |.  E8 377BE7FF  call    004048A4
0058CD6D  |.  8B45 FC      mov    eax, [ebp-4]                    ;  (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, [ebp-14]                  ;  / 字符串转为16进制(指机器码)
0058CD83  |.  8B45 FC      |mov    eax, [ebp-4]
0058CD86  |.  0FB64418 FF  |movzx  eax, byte ptr [eax+ebx-1]
0058CD8B  |.  33D2          |xor    edx, edx
0058CD8D  |.  E8 1ED0E7FF  |call    00409DB0
0058CD92  |.  8B55 EC      |mov    edx, [ebp-14]
0058CD95  |.  8D45 F8      |lea    eax, [ebp-8]
0058CD98  |.  E8 CF7DE7FF  |call    00404B6C
0058CD9D  |.  43            |inc    ebx
0058CD9E  |.  4E            |dec    esi
0058CD9F  |.^ 75 DF        \jnz    short 0058CD80                  ;  \ 循环
0058CDA1  |>  8B45 F8      mov    eax, [ebp-8]                    ;  (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, [ebp-8]                    ;  / 翻转之
0058CDB7  |.  E8 A87DE7FF  |call    00404B64
0058CDBC  |.  2BC3          |sub    eax, ebx
0058CDBE  |.  8B55 F8      |mov    edx, [ebp-8]
0058CDC1  |.  8A1402        |mov    dl, [edx+eax]
0058CDC4  |.  8D45 E8      |lea    eax, [ebp-18]
0058CDC7  |.  E8 C07CE7FF  |call    00404A8C
0058CDCC  |.  8B55 E8      |mov    edx, [ebp-18]
0058CDCF  |.  8D45 F4      |lea    eax, [ebp-C]
0058CDD2  |.  E8 957DE7FF  |call    00404B6C
0058CDD7  |.  43            |inc    ebx
0058CDD8  |.  4E            |dec    esi
0058CDD9  |.^ 75 D9        \jnz    short 0058CDB4                  ;  \ 循环
0058CDDB  |>  8D45 F8      lea    eax, [ebp-8]
0058CDDE  |.  50            push    eax
0058CDDF  |.  B9 04000000  mov    ecx, 4                          ;  长度4
0058CDE4  |.  BA 01000000  mov    edx, 1                          ;  从第一位开始
0058CDE9  |.  8B45 F4      mov    eax, [ebp-C]                    ;  翻转后的 (ASCII "14533593131323B4732324236405")
0058CDEC  |.  E8 D37FE7FF  call    00404DC4
0058CDF1  |.  8D45 F4      lea    eax, [ebp-C]
0058CDF4  |.  50            push    eax
0058CDF5  |.  B9 04000000  mov    ecx, 4                          ;  长度4
0058CDFA  |.  BA 05000000  mov    edx, 5                          ;  从第五位开始
0058CDFF  |.  8B45 F4      mov    eax, [ebp-C]
0058CE02  |.  E8 BD7FE7FF  call    00404DC4
0058CE07  |.  8B45 F8      mov    eax, [ebp-8]                    ;  前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, [ebp-8]
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, [ebp-1C]
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, [ebp-1C]
0058CE35  |.  8D45 F8      |lea    eax, [ebp-8]
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, [ebp-C]                    ;  第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, [ebp-C]
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, [ebp-20]
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, [ebp-20]
0058CE71  |.  8D45 F4      |lea    eax, [ebp-C]
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, [ebp-10]
0058CE82  |.  BA 0CCF5800  mov    edx, 0058CF0C                    ;  常量 (ASCII "MPW456ei878")
0058CE87  |.  E8 B07AE7FF  call    0040493C
0058CE8C  |.  8D45 DC      lea    eax, [ebp-24]
0058CE8F  |.  50            push    eax
0058CE90  |.  B9 04000000  mov    ecx, 4                          ;  长度4
0058CE95  |.  BA 01000000  mov    edx, 1                          ;  从第一位开始
0058CE9A  |.  8B45 F0      mov    eax, [ebp-10]
0058CE9D  |.  E8 227FE7FF  call    00404DC4                        ;  取常量的前4位
0058CEA2  |.  FF75 DC      push    dword ptr [ebp-24]              ;  (ASCII "MPW4")
0058CEA5  |.  68 20CF5800  push    0058CF20                        ;  -
0058CEAA  |.  FF75 F8      push    dword ptr [ebp-8]                ;  (ASCII "1453")
0058CEAD  |.  8D45 D8      lea    eax, [ebp-28]
0058CEB0  |.  50            push    eax
0058CEB1  |.  B9 05000000  mov    ecx, 5                          ;  长度5
0058CEB6  |.  BA 05000000  mov    edx, 5                          ;  从第五位开始
0058CEBB  |.  8B45 F0      mov    eax, [ebp-10]
0058CEBE  |.  E8 017FE7FF  call    00404DC4
0058CEC3  |.  FF75 D8      push    dword ptr [ebp-28]              ;  第5~9位 (ASCII "56ei8")
0058CEC6  |.  68 20CF5800  push    0058CF20                        ;  -
0058CECB  |.  FF75 F4      push    dword ptr [ebp-C]                ;  (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:[eax], edx
0058CEE2  |.  68 FCCE5800  push    0058CEFC
0058CEE7  |>  8D45 D8      lea    eax, [ebp-28]
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

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

地主 发表时间: 07-05-28 10:28

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号