-
-
[原创]***通讯录V5.8.111简单算法分析-菜鸟篇
-
发表于: 2006-11-10 13:28 5337
-
***通讯录V5.8.111简单算法分析-菜鸟篇
【文章作者】: tzl
【作者邮箱】: 无
【软件名称】: ***通讯录V5.8.111
【软件大小】: 3169 KB
【下载地址】: http://www.skycn.com/soft/12563.html#download
【加壳方式】: UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
【保护方式】: 注册码
【编写语言】: Borland Delphi 4.0 - 5.0
【使用工具】: OD PEID
【操作平台】: XP SP2
【软件介绍】:
是一款实用的通讯录软件,软件界面采用WINXP风格,功能完善,最多能够容纳十万条通讯记录,新版本加强了搜索功能,用户不但可以通过姓名搜索,还可以按邮箱,手机号码,妮称,等项进行查询,功能非常强大。新版本增加了企业通讯录管理信息,用户可以对企业员工进行详细管理,方便易用。增加了新的皮肤,修正了换肤功能的BUG.启动时需要输入密码,使其它人不能看到你的通讯资料,让你的信息更安全。查询栏让你很快找到你的联系人。支持增加分类,添加,删除信息。
很简单的算法,适合我这只小菜鸟,这里与大家分享,菜鸟共同进步。
一、查壳UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo,程序只是用UPX工具压缩了一下,只要解压缩即可。
二、根据字符串相关信息,我们可以在这里下断开始分析,试练码:123456789
00567A41 8BD8 mov ebx,eax
00567A43 8BC3 mov eax,ebx
00567A45 E8 12CCFFFF call 中华通讯.0056465C ; 算法分析call
00567A4A 84C0 test al,al
00567A4C 74 09 je short 中华通讯.00567A57 ; 标志位判断点
00567A4E 8BC3 mov eax,ebx
00567A50 E8 4FC9FFFF call 中华通讯.005643A4
00567A55 5B pop ebx
00567A56 C3 retn
00567A57 6A 20 push 20 ; 注册码正确则跳转到此
00567A59 B9 747A5600 mov ecx,中华通讯.00567A74
00567A5E BA 807A5600 mov edx,中华通讯.00567A80
00567A63 A1 CC715700 mov eax,dword ptr ds:[5771CC>
00567A68 8B00 mov eax,dword ptr ds:[eax]
00567A6A E8 1DF2EEFF call 中华通讯.00456C8C
00567A6F 5B pop ebx
00567A70 C3 retn
*************************************************************************************
跟进算法call 中华通讯.0056465C,来到这里:
0056466D 55 push ebp
0056466E 68 38475600 push 中华通讯.00564738
00564673 64:FF30 push dword ptr fs:[eax]
00564676 64:8920 mov dword ptr fs:[eax],esp
00564679 33C0 xor eax,eax ; eax清零
0056467B 8945 F4 mov dword ptr ss:[ebp-C],eax
0056467E 8D55 F8 lea edx,dword ptr ss:[ebp-8]
00564681 8B45 FC mov eax,dword ptr ss:[ebp-4]
00564684 8B80 140A0000 mov eax,dword ptr ds:[eax+A14]
0056468A E8 E934EDFF call 中华通讯.00437B78
0056468F 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; 出现机器码,即ebp-8=机器码“4CF0-4CBA”,送eax中
00564692 E8 99FBE9FF call 中华通讯.00404230 ; eax=4CF0-4CBA
00564697 8BD8 mov ebx,eax ; eax=机器码位数9
00564699 85DB test ebx,ebx
0056469B 7E 2E jle short 中华通讯.005646CB
0056469D BE 01000000 mov esi,1 ; esi置1,进入循环
005646A2 8D45 F0 lea eax,dword ptr ss:[ebp-10] ; eax=9,即机器码位数
005646A5 50 push eax
005646A6 B9 01000000 mov ecx,1 ; ecx置1
005646AB 8BD6 mov edx,esi
005646AD 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; ebp-8=机器码“4CF0-4CBA”,送eax
005646B0 E8 83FDE9FF call 中华通讯.00404438 ; eax=4CF0-4CBA
005646B5 8B45 F0 mov eax,dword ptr ss:[ebp-10]
005646B8 E8 37FDE9FF call 中华通讯.004043F4
005646BD 8A00 mov al,byte ptr ds:[eax] ; 机器码“4CF0-4CBA”逐位ascii码送al
005646BF 25 FF000000 and eax,0FF ; eax与0FF进行add运算
005646C4 0145 F4 add dword ptr ss:[ebp-C],eax ; eax(机器码逐位的ascii码)+ss:[ebp-C]
005646C7 46 inc esi ; esi+1
005646C8 4B dec ebx ; ebx-1
005646C9 ^ 75 D7 jnz short 中华通讯.005646A2 ; 循环计算,直到取完机器码,最后的ss:[ebp-C]=214
005646CB 8D55 EC lea edx,dword ptr ss:[ebp-14]
005646CE 8B45 FC mov eax,dword ptr ss:[ebp-4]
005646D1 8B80 340A0000 mov eax,dword ptr ds:[eax+A34]
005646D7 E8 9C34EDFF call 中华通讯.00437B78
005646DC 8B45 EC mov eax,dword ptr ss:[ebp-14] ; 试练码=ebp-14送eax
005646DF E8 645BEAFF call 中华通讯.0040A248 ; eax=试练码“123456789”
005646E4 8B55 F4 mov edx,dword ptr ss:[ebp-C] ; ss:[ebp-C]=214,送edx
005646E7 81C2 FC7E1200 add edx,127EFC ; edx+127EFC=128110
005646ED 81C2 9FE46400 add edx,中华通讯.0064E49F ; edx+64E49F=007765AF
005646F3 3BC2 cmp eax,edx ; eax内为试练码“123456789”,edx=007765AF,转成十进制即为真码“7824815”
005646F5 75 19 jnz short 中华通讯.00564710 ; 比较是否相等,相等则注册成功,爆破点
005646F7 B3 01 mov bl,1
005646F9 B8 E0B65700 mov eax,中华通讯.0057B6E0
005646FE 8B55 F8 mov edx,dword ptr ss:[ebp-8]
00564701 E8 FEF8E9FF call 中华通讯.00404004
00564706 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00564709 A3 E4B65700 mov dword ptr ds:[57B6E4],eax
0056470E EB 02 jmp short 中华通讯.00564712
00564710 33DB xor ebx,ebx
00564712 33C0 xor eax,eax
00564714 5A pop edx
00564715 59 pop ecx
00564716 59 pop ecx
00564717 64:8910 mov dword ptr fs:[eax],edx
0056471A 68 3F475600 push 中华通讯.0056473F
0056471F 8D45 EC lea eax,dword ptr ss:[ebp-14]
00564722 E8 89F8E9FF call 中华通讯.00403FB0
00564727 8D45 F0 lea eax,dword ptr ss:[ebp-10]
0056472A E8 81F8E9FF call 中华通讯.00403FB0
0056472F 8D45 F8 lea eax,dword ptr ss:[ebp-8]
00564732 E8 79F8E9FF call 中华通讯.00403FB0
00564737 C3 retn
*************************************************************************************
算法总结:
软件算法非常简单,主要思路如下:
将机器码逐位的ascii码进行累加,得到的结果与127EFC相加,然后再与64E49F相加,结果转成十进制即为注册码。我这里的机器码为4CF0-4CBA,注册码为7824815
特别说明: 本文仅是一些破解的心得和思路,完全是个人对程序的研究,无其他目的。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课