|
![]() | 作者: 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号