LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

脱多个壳外加去效验破解程序

admin
2014年4月10日 10:54 本文热度 8326
【破文标题】:脱双层壳去自校验破解《国家药品审评中心受理品种搜索专家 2.18专业版》一条龙

【破文作者】:KuNgBiM[DFCG]


【作者邮箱】:gb_1227@163.com

【软件名称】:国家药品审评中心受理品种搜索专家 2.18专业版

【软件大小】:2.23 MB

【软件类别】:国产软件 / 共享软件 / 医药医学

【整理时间】:2005-07-21

【下载主页】:http://www.shareware.cn/pub/8883.html

【软件简介】:国家药品审评中心受理品种搜索专家是主要为新药开发决策人士开发的功能强大的数据库查询工具,它可以通过关键词或受理号的方式从网络数据库来直接查询国家药品监督管理局药品审评中心的药品注册受理情况,并以直观的报表方式告诉你某个药品有哪些厂家在申报、各自的审评进度、交费情况、检验报告提交情况等详细资料;另外搜索专家的企业版甚至可以根据申报企业的名称来查询指定企业所申报的药品品种,通过本软件你将可以快速掌握国内药品注册的申报情况及其办理进度等最有用的信息,为你的新药开发的决策提供最强有力的依据。

本软件的搜索范围可以全面涵盖国家药品审评中心的最新化药、中药、生物制品和体外试剂等受理目录,并且可以查询遗漏在以前的国产注册 * 国产补充 * 进口注册 * 进口补充和化药临床 * 化药生产*化药补充 *化药转正 *进口药品 * 生物制品 * 中药 * 仿制药品等旧受理目录中的数据,查询完成后搜索专家会自动帮你将搜索结果进行归类、排序并最终生成直观明了的报表,并可以统计指定受理目录的排行榜,此外搜索专家还可以帮你筛选出首家申报时间在指定时间以后的新药品种,使你全面掌握国内药品注册申报的热点和冷门,非常适合从事新药开发的专业人士使用,通过本软件的帮助一定可以使你的搜索任务更加便捷和高效,先人一步,胜人一筹!

【保护方式】:序列号 + 功能限制 + 自校验 + 重启验证

【加密保护】:EXEStealth 2.75a、ASPack 2.12

【编译语言】:Microsoft Visual C++ 6.0

【调试环境】:WinXP、PEiD、Ollydbg、LordPE、ImportREC

【破解日期】:2005-07-23

【破解目的】:推广使用ESP定律脱壳,研究算法分析。

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

【脱壳去校验文件】:
附件:Unpacked.rar

—————————————————————————————————

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【分析过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

1.运行程序,东看看西看看,查找程序有那些功能限制和对我们有用的信息。

2.用PEiD查壳,EXEStealth 2.75a -> WebtoolMaster,是个加密壳,再深一步分析(察看区段情况):

——————————————————————————————————————————
| No | Name | VSize | VOffset | RSize | ROffset | Charact. |
| 01 | .text | 00056000 | 00001000 | 00021200 | 00000600 | C0000040 |
| 02 | .rdata | 00011000 | 00057000 | 00004C00 | 00021800 | C0000040 |
| 03 | .data | 0000E000 | 00068000 | 00002A00 | 00026400 | C0000040 |
| 04 | .rsrc | 00006000 | 00076000 | 00006000 | 00028E00 | C0000040 |
| 05 | .aspack | 00002000 | 0007C000 | 00001400 | 0002EE00 | C0000040 |
| 06 | .adata | 00001000 | 0007E000 | 00000000 | 00030200 | C0000040 |
| 07 | ExeS | 00002000 | 0007F000 | 00000DF2 | 00030200 | E00000E0 |
——————————————————————————————————————————

光从区段名来看,初略估计该软件加壳不只一个,至少加有 EXEStealth 和 Aspack 壳,如果估计没错的话,我想作者可能是先用Aspack压缩程序大小,然后用EXEStealth加密吧~呵呵~~

3.用Ollydbg载入,跟踪分析破解。

——————————————————————————————————————————

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【脱壳过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Ollydbg载入主程序:

老规矩:设置Ollydbg忽略所有的异常选项,用IsDebugPresent 1.4插件去掉Ollydbg的调试器标志。

0047F060 > /EB 58 jmp short drugdir.0047F0BA ; 载入程序后停在这里,F7让它跳
0047F062 |53 push ebx
0047F063 |68 61726577 push 77657261
0047F068 |61 popad
0047F069 |72 65 jb short drugdir.0047F0D0
........

—————————————————————————————————

0047F0BA 90 nop ; 跳到这里,继续F7单步运行2次
0047F0BB 60 pushad
0047F0BC 90 nop ; 单步运行到这里,注意观察寄存器变化
0047F0BD E8 00000000 call drugdir.0047F0C2
0047F0C2 5D pop ebp
0047F0C3 81ED F7274000 sub ebp,drugdir.004027F7
0047F0C9 B9 15000000 mov ecx,15
0047F0CE 83C1 04 add ecx,4
0047F0D1 83C1 01 add ecx,1
0047F0D4 EB 05 jmp short drugdir.0047F0DB
0047F0D6 - EB FE jmp short drugdir.0047F0D6
........

\\\\\\\\\\\\\\\寄存器\\\\\\\\\\\\\\\\

EAX 00000000
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFA4 // esp=0012ffa4
EBP 0012FFF0
ESI 77F57D70 ntdll.77F57D70
EDI 77F944A8 ntdll.77F944A8
EIP 0047F0BC drugdir.0047F0BC

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

根据ESP定律规则,现在在命令栏中下 hr 0012ffa4 命令,回车,F9运行:

0047F839 50 push eax ; 这里断下,继续F7单步运行
0047F83A 33C0 xor eax,eax
0047F83C 64:FF30 push dword ptr fs:[eax]
0047F83F 64:8920 mov dword ptr fs:[eax],esp
0047F842 EB 01 jmp short drugdir.0047F845 ; 运行到这里,继续F7一次就会跳到解压代码的地方
0047F844 8700 xchg dword ptr ds:[eax],eax
0047F846 0000 add byte ptr ds:[eax],al
0047F848 0000 add byte ptr ds:[eax],al
0047F84A 0000 add byte ptr ds:[eax],al
........

—————————————————————————————————

0047F845 0000 add byte ptr ds:[eax],al ; 这里,代码就开始解压了,继续F9一次,让代码解压
0047F847 0000 add byte ptr ds:[eax],al
0047F849 0000 add byte ptr ds:[eax],al
0047F84B 0000 add byte ptr ds:[eax],al
0047F84D 0000 add byte ptr ds:[eax],al
0047F84F 0000 add byte ptr ds:[eax],al
0047F851 0000 add byte ptr ds:[eax],al
0047F853 0000 add byte ptr ds:[eax],al
........

—————————————————————————————————

0047C002 E8 03000000 call drugdir.0047C00A ; 代码到这里就基本上解密完毕了,准备解压,继续F9一次
0047C007 - E9 EB045D45 jmp 45A4C4F7
0047C00C 55 push ebp
0047C00D C3 retn
0047C00E E8 01000000 call drugdir.0047C014
0047C013 EB 5D jmp short drugdir.0047C072
0047C015 BB EDFFFFFF mov ebx,-13
........

—————————————————————————————————

0047C3B0 /75 08 jnz short drugdir.0047C3BA ; 解密解压全部完成,准备返回程序入口,F7一次
0047C3B2 |B8 01000000 mov eax,1
0047C3B7 |C2 0C00 retn 0C
0047C3BA \68 3D134300 push drugdir.0043133D ; 这里 0043133D 就是程序的OEP,F7继续
0047C3BF C3 retn ; 飞向光明之颠~~ F7继续一次
........

—————————————————————————————————

0043133D 55 push ebp ; 在这儿用LordPE纠正ImageSize后完全Dump这个进程
0043133E 8BEC mov ebp,esp
00431340 6A FF push -1
00431342 68 88B54500 push drugdir.0045B588
00431347 68 DC724300 push drugdir.004372DC
0043134C 64:A1 00000000 mov eax,dword ptr fs:[0]
00431352 50 push eax
00431353 64:8925 00000000 mov dword ptr fs:[0],esp
0043135A 83EC 58 sub esp,58
0043135D 53 push ebx
0043135E 56 push esi
0043135F 57 push edi
00431360 8965 E8 mov dword ptr ss:[ebp-18],esp
00431363 FF15 70724500 call dword ptr ds:[457270] ; kernel32.GetVersion
00431369 33D2 xor edx,edx
0043136B 8AD4 mov dl,ah
0043136D 8915 943A4700 mov dword ptr ds:[473A94],edx
00431373 8BC8 mov ecx,eax
........

运行ImportREC 1.6,选择这个进程,把OEP改为 0003133D ,点IT AutoSearch,cut一个无效指针,其余函数全部有效。FixDump!

再用PEiD插件Rebuild PE优化一下,程序大小变为 486 KB,Microsoft Visual C++ 6.0编译。

关闭Ollydbg,试运行,窗口一闪而过,靠~~~~程序有自校验,没办法,去掉烦人的自校验!!!GO~~

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【去自校验过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

重新打开Ollydbg,载入刚刚我们脱壳修复优化后的“dumped_.exe”文件(这里我采用的是默认脱壳文件名)

根据以往的经验,软件校验无非就是采用校验文件名和大小作为依据,那么我们大胆猜想到肯定使用了下面这条语句:

cmp eax,30FF2 (30FF2的十进制就是原文件大小200,690字节)

现脱壳文件为497,664字节,也就是说现在代码应该替换为:cmp eax,79800

所以用Ctrl+S搜索命令“cmp eax,30FF2”:

00404E03 E8 EA280400 call dumped_1.004476F2
00404E08 3D F20F0300 cmp eax,30FF2 ; 第一处
00404E0D 74 07 je short dumped_1.00404E16

0040931D E8 D0E30300 call dumped_1.004476F2
00409322 3D F20F0300 cmp eax,30FF2 ; 第二处
00409327 74 07 je short dumped_1.00409330

00409815 E8 D8DE0300 call dumped_1.004476F2
0040981A 3D F20F0300 cmp eax,30FF2 ; 第三处
0040981F 74 07 je short dumped_1.00409828

0040A213 E8 DAD40300 call dumped_1.004476F2
0040A218 3D F20F0300 cmp eax,30FF2 ; 第四处
0040A21D 74 07 je short dumped_1.0040A226

0040B413 E8 DAC20300 call dumped_1.004476F2
0040B418 3D F20F0300 cmp eax,30FF2 ; 第五处
0040B41D 74 07 je short dumped_1.0040B426

0040FE94 E8 59780300 call dumped_1.004476F2
0040FE99 3D F20F0300 cmp eax,30FF2 ; 第六处
0040FE9E 74 07 je short dumped_1.0040FEA7

00410EA5 E8 48680300 call dumped_1.004476F2
00410EAA 3D F20F0300 cmp eax,30FF2 ; 第七处
00410EAF 74 07 je short dumped_1.00410EB8

00412423 E8 CA520300 call dumped_1.004476F2
00412428 3D F20F0300 cmp eax,30FF2 ; 第八处
0041242D 0F84 A6000000 je dumped_1.004124D9

00413E35 E8 B8380300 call dumped_1.004476F2
00413E3A 3D F20F0300 cmp eax,30FF2 ; 第九处
00413E3F 74 07 je short dumped_1.00413E48

0041587F E8 6E1E0300 call dumped_1.004476F2
00415884 3D F20F0300 cmp eax,30FF2 ; 第十处
00415889 74 07 je short dumped_1.00415892

004173E8 E8 05030300 call dumped_1.004476F2
004173ED 3D F20F0300 cmp eax,30FF2 ; 第十一处
004173F2 74 07 je short dumped_1.004173FB

————————————————————————————————————————

【总结去自校验修改点】

00404E08 3D F20F0300 cmp eax,30FF2
00409322 3D F20F0300 cmp eax,30FF2
0040981A 3D F20F0300 cmp eax,30FF2
0040A218 3D F20F0300 cmp eax,30FF2
0040FE99 3D F20F0300 cmp eax,30FF2
00410EAA 3D F20F0300 cmp eax,30FF2
00412428 3D F20F0300 cmp eax,30FF2
00413E3A 3D F20F0300 cmp eax,30FF2
00415884 3D F20F0300 cmp eax,30FF2
004173ED 3D F20F0300 cmp eax,30FF2

以上的汇编代码“cmp eax,30FF2”全部替换为“cmp eax,79800”保存即可!

————————————————————————————————————————

好了,修改以上的代码后保存文件为“dumped_1.exe”!OK,正常运行!校验解除咯~~~~

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【破解过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我们知道了该程序是VC6.0写的,而且在做准备工作的时候我们得到了一些的重要提示信息作为破解入手点:

再次打开Ollydbg,载入我们脱壳除校验文件“dumped_1.exe”,右键使用 Ultra String Reference 插件的 Find ASCII 功能项,查找我们需要的相关信息:

———————————————————————————————————————————————————————
........
004271E2 push drugdir.00455D70 肛2F
0042721A push drugdir.0046D1A4 药搜
0042722D push drugdir.0046D19C 高手 <-- 这是什么意思??
0042730C push drugdir.0046D198 %c
00427319 push drugdir.0046D194 %d
004274EB push drugdir.0046D24C 注册成功 ★重要提示信息★
004274F0 push drugdir.0046D214 注册成功!搜索专家的所有功能已对你开放!感谢你的支持! ★重要提示信息①★
004274FC push drugdir.0046D208 drugreg.ini ★ 可疑文件 ★
0042750E push drugdir.00468618 w
00427522 push drugdir.004682B8 \n\n
00427543 push drugdir.004682B8 \n\n
004275A2 push drugdir.0046D1FC 注册失败 ★重要提示信息★
004275A7 push drugdir.0046D1D8 注册失败!请认真核对你的注册码! ★重要提示信息②★
004275B7 push drugdir.0046D1FC 注册失败 ★重要提示信息★
004275BC push drugdir.0046D1AC 暂停验证:你连续尝试3次注册码验证均未成功! ★重要提示信息③★
00427615 push drugdir.0046D25C C:\
0042762B push drugdir.0046D258 %ld
004276B7 mov dword ptr ds:[esi+7C],drugdir.004593 ⑷D
004276EE mov dword ptr ds:[esi+1A0],drugdir.00459 ㄈD
00427708 mov dword ptr ds:[esi+1DC],drugdir.00459 ⑷D
........
———————————————————————————————————————————————————————

在“★重要提示信息★①、②、③”处分别双击,然后在可疑的地址F2下断:

00427450 6A FF push -1 ; 我下断在此,F9运行,填写注册相关信息! ^__^
00427452 68 A85D4500 push drugdir.00455DA8
00427457 64:A1 00000000 mov eax,dword ptr fs:[0]
0042745D 50 push eax ; eax=0012DB1C
0042745E 64:8925 00000000 mov dword ptr fs:[0],esp
00427465 83EC 10 sub esp,10 ; esp=0012D9F0
00427468 A1 1CD64600 mov eax,dword ptr ds:[46D61C]
0042746D 53 push ebx
0042746E 55 push ebp ; ebp=0012DA08
0042746F 56 push esi
00427470 57 push edi ; edi=0012EA6C
00427471 8BF1 mov esi,ecx ; ecx=0012EA6C,esi=00458908
00427473 894424 10 mov dword ptr ss:[esp+10],eax ; eax=0046D630,堆栈 ss:[0012D9E0]=00000111
00427477 6A 01 push 1
00427479 C74424 2C 00000000 mov dword ptr ss:[esp+2C],0
00427481 E8 F1D80100 call drugdir.00444D77 ; 取用户名
00427486 51 push ecx ; ecx=0012D9F0
00427487 8D96 00020000 lea edx,dword ptr ds:[esi+200] ; 从用户名第2位开始取字符,edx=009746A9, (ASCII "uNgBiM")
0042748D 8BCC mov ecx,esp ; esp=0012D9CC,ecx=0012D9F0
0042748F 896424 20 mov dword ptr ss:[esp+20],esp
00427493 52 push edx ; edx=0012EC6C
00427494 E8 4FEA0100 call drugdir.00445EE8 ; 取机器码
00427499 51 push ecx ; ecx=009740AC
0042749A 8DBE 04020000 lea edi,dword ptr ds:[esi+204] ; edi=0012EA6C
004274A0 8BCC mov ecx,esp ; esp=0012D9C8,ecx=009740AC
004274A2 896424 20 mov dword ptr ss:[esp+20],esp ; esp=0012D9C8,堆栈 ss:[0012D9E8]=00090408
004274A6 57 push edi ; edi=0012EC70
004274A7 C64424 34 01 mov byte ptr ss:[esp+34],1
004274AC E8 37EA0100 call drugdir.00445EE8 ; 取注册码
004274B1 51 push ecx ; ecx=00973FBC
004274B2 8DAE 08020000 lea ebp,dword ptr ds:[esi+208] ; 堆栈地址=0012EC74,ebp=0012DA08
004274B8 8BCC mov ecx,esp ; esp=0012D9C4,ecx=00973FBC
004274BA 896424 20 mov dword ptr ss:[esp+20],esp ; esp=0012D9C4,堆栈 ss:[0012D9E4]=00000001
004274BE 55 push ebp ; ebp=0012EC74
004274BF C64424 38 02 mov byte ptr ss:[esp+38],2
004274C4 E8 1FEA0100 call drugdir.00445EE8 ; 把注册信息数据依次存放起来,准备下一步计算
004274C9 8BCE mov ecx,esi ; esi=0012EA6C,ecx=0097469C
004274CB C64424 34 00 mov byte ptr ss:[esp+34],0
004274D0 E8 0BFDFFFF call drugdir.004271E0 ; ★算法CALL★ F7跟进!
004274D5 85C0 test eax,eax
004274D7 8B46 5C mov eax,dword ptr ds:[esi+5C]
004274DA 0F84 BB000000 je drugdir.0042759B ; 注册验证失败则跳!
004274E0 83F8 03 cmp eax,3 ; 比较是否连续3次注册验证失败
004274E3 0F8D CC000000 jge drugdir.004275B5 ; 如果大于等于3次则停止注册!★调试的时候先把这里nop掉!★
004274E9 6A 40 push 40
004274EB 68 4CD24600 push drugdir.0046D24C
004274F0 68 14D24600 push drugdir.0046D214
004274F5 8BCE mov ecx,esi
004274F7 E8 1FD10100 call drugdir.0044461B ; 注册成功后信息写入ini文件
004274FC 68 08D24600 push drugdir.0046D208 ; ASCII "drugreg.ini"
00427501 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
00427505 E8 F2ED0100 call drugdir.004462FC
0042750A 8B4424 10 mov eax,dword ptr ss:[esp+10]
0042750E 68 18864600 push drugdir.00468618
00427513 50 push eax
00427514 E8 E0970000 call drugdir.00430CF9
00427519 8BD8 mov ebx,eax
0042751B 83C4 08 add esp,8
0042751E 85DB test ebx,ebx
00427520 74 67 je short drugdir.00427589
00427522 68 B8824600 push drugdir.004682B8 ; ASCII "" ★这里是读取用户名的地址★ 想留名的就在这里弄吧!
00427527 8D4C24 20 lea ecx,dword ptr ss:[esp+20]
0042752B 55 push ebp
0042752C 51 push ecx
0042752D E8 D6EE0100 call drugdir.00446408
00427532 57 push edi
00427533 8D5424 1C lea edx,dword ptr ss:[esp+1C]
00427537 50 push eax
00427538 52 push edx
00427539 C64424 34 03 mov byte ptr ss:[esp+34],3
0042753E E8 5FEE0100 call drugdir.004463A2
00427543 68 B8824600 push drugdir.004682B8 ; ASCII "" ★这里是读取注册码的地址★ 想留名的就在这里弄吧!
00427548 50 push eax
00427549 8D4424 1C lea eax,dword ptr ss:[esp+1C]
0042754D C64424 30 04 mov byte ptr ss:[esp+30],4
00427552 50 push eax
........

================================= 跟进 004274D0 E8 0BFDFFFF call drugdir.004271E0 ============================

004271E0 6A FF push -1
004271E2 68 705D4500 push dumped_1.00455D70
004271E7 64:A1 00000000 mov eax,dword ptr fs:[0]
004271ED 50 push eax
004271EE 64:8925 00000000 mov dword ptr fs:[0],esp
004271F5 83EC 70 sub esp,70
004271F8 53 push ebx
004271F9 55 push ebp
004271FA 56 push esi
004271FB 57 push edi
004271FC 33ED xor ebp,ebp
004271FE 89AC24 88000000 mov dword ptr ss:[esp+88],ebp
00427205 A1 1CD64600 mov eax,dword ptr ds:[46D61C]
0042720A 894424 10 mov dword ptr ss:[esp+10],eax
0042720E 8D8C24 98000000 lea ecx,dword ptr ss:[esp+98]
00427215 8D5424 18 lea edx,dword ptr ss:[esp+18]
00427219 51 push ecx
0042721A 68 A4D14600 push dumped_1.0046D1A4
0042721F 52 push edx
00427220 C68424 94000000 03 mov byte ptr ss:[esp+94],3
00427228 E8 4FF20100 call dumped_1.0044647C ; ★机器码运算CALL★
0042722D 68 9CD14600 push dumped_1.0046D19C
00427232 50 push eax
00427233 8D4424 1C lea eax,dword ptr ss:[esp+1C]
00427237 B3 04 mov bl,4
00427239 50 push eax
0042723A 889C24 94000000 mov byte ptr ss:[esp+94],bl
00427241 E8 C2F10100 call dumped_1.00446408
00427246 50 push eax
00427247 8D8C24 94000000 lea ecx,dword ptr ss:[esp+94]
0042724E C68424 8C000000 05 mov byte ptr ss:[esp+8C],5
00427256 E8 30F30100 call dumped_1.0044658B ; ★用户名运算CALL★
0042725B 8D4C24 14 lea ecx,dword ptr ss:[esp+14]
0042725F 889C24 88000000 mov byte ptr ss:[esp+88],bl
00427266 E8 08EF0100 call dumped_1.00446173
0042726B 8D4C24 18 lea ecx,dword ptr ss:[esp+18]
0042726F C68424 88000000 03 mov byte ptr ss:[esp+88],3
00427277 E8 F7EE0100 call dumped_1.00446173
0042727C 8BBC24 90000000 mov edi,dword ptr ss:[esp+90]
00427283 83C9 FF or ecx,FFFFFFFF ; ecx=7FFDE000
00427286 33C0 xor eax,eax ; eax清零
00427288 8D5424 1C lea edx,dword ptr ss:[esp+1C] ; 堆栈地址=0012D950,edx=004733B0
0042728C F2:AE repne scas byte ptr es:[edi] ; ★★★注册码就从这里开始计算了★★★
; ecx=FFFFFFFF (十进制 4294967295.)
0042728E F7D1 not ecx ; ecx取反,ecx=FFFFFFE4
00427290 2BF9 sub edi,ecx ; ecx=0000001B,edi=00974763
00427292 8BC1 mov eax,ecx ; ecx=0000001B,eax=00000000
00427294 8BF7 mov esi,edi ; edi=00974748,esi=0012EA6C
00427296 8BFA mov edi,edx ; edx=0012D950,edi=00974748
00427298 C1E9 02 shr ecx,2 ; ecx=0000001B
0042729B F3:A5 rep movs dword ptr es:[edi],dword ptr >; ecx=00000006 (十进制 6.)
; ds:[esi]=[00974748]=674E754B
; es:[edi]=stack [0012D950]=000A054E
0042729D 8BC8 mov ecx,eax ; eax=0000001B
0042729F 33C0 xor eax,eax
004272A1 83E1 03 and ecx,3 ; ecx=0000001B
004272A4 F3:A4 rep movs byte ptr es:[edi],byte ptr ds>; ecx=00000003 (十进制 3.)
; ds:[esi]=[00974760]=CA
; es:[edi]=stack [0012D968]=5B ('[')
004272A6 8D7C24 1C lea edi,dword ptr ss:[esp+1C]
004272AA 83C9 FF or ecx,FFFFFFFF ; ecx=00000000
004272AD 33F6 xor esi,esi ; esi=00974763
004272AF F2:AE repne scas byte ptr es:[edi] ; ecx=FFFFFFFF (十进制 4294967295.)
004272B1 F7D1 not ecx ; ecx取反,ecx=FFFFFFE4
004272B3 49 dec ecx ; ecx=0000001B
004272B4 0F84 CD000000 je dumped_1.00427387 ; ★★注册验证、重启验证爆破点★★
004272BA 8D7C24 1C lea edi,dword ptr ss:[esp+1C]
004272BE 83C9 FF or ecx,FFFFFFFF ; ecx=0000001A
004272C1 33C0 xor eax,eax
004272C3 0FBE5434 1C movsx edx,byte ptr ss:[esp+esi+1C] ; 堆栈 ss:[0012D950]=4B ('K'),edx=0012D950
004272C8 F2:AE repne scas byte ptr es:[edi] ; ecx=FFFFFFFF (十进制 4294967295.)
004272CA F7D1 not ecx ; ecx取反,ecx=FFFFFFE4
004272CC 49 dec ecx ; ecx=0000001B
004272CD 8BC1 mov eax,ecx ; ecx=0000001A
004272CF 8D0CD2 lea ecx,dword ptr ds:[edx+edx*8] ; ecx=edx*8+edx=2A3 (注意:edx=4B ('K'))
004272D2 8D0CC9 lea ecx,dword ptr ds:[ecx+ecx*8] ; ecx=ecx*8+ecx=17BB
004272D5 8D0C4A lea ecx,dword ptr ds:[edx+ecx*2] ; ecx=ecx*2+edx=2FC1
004272D8 8D0C8A lea ecx,dword ptr ds:[edx+ecx*4] ; ecx=ecx*4+edx=BF4F
004272DB 8D0C4A lea ecx,dword ptr ds:[edx+ecx*2] ; ecx=ecx*2+edx=17EE9
004272DE 2BCE sub ecx,esi ; ecx=ecx-esi=17EE9
004272E0 03C1 add eax,ecx ; ecx=eax+ecx=1A+17EE9=17F03
004272E2 8D0C52 lea ecx,dword ptr ds:[edx+edx*2] ; ecx=edx*2+edx=E1 (注意:edx=4B ('K'))
004272E5 8D1489 lea edx,dword ptr ds:[ecx+ecx*4] ; ecx=ecx*4+ecx=465
004272E8 B9 5B000000 mov ecx,5B ; ecx=E1
004272ED 33C2 xor eax,edx ; edx=465,eax=17F03
004272EF 33D2 xor edx,edx ; edx=465
004272F1 F7F1 div ecx ; ecx=5B
004272F3 83FA 30 cmp edx,30 ; edx=1D
004272F6 7C 05 jl short dumped_1.004272FD
004272F8 83FA 39 cmp edx,39
004272FB 7E 0A jle short dumped_1.00427307
004272FD 83FA 41 cmp edx,41 ; edx=1D
00427300 7C 12 jl short dumped_1.00427314
00427302 83FA 5A cmp edx,5A
00427305 7F 0D jg short dumped_1.00427314
00427307 52 push edx
00427308 8D5424 14 lea edx,dword ptr ss:[esp+14]
0042730C 68 98D14600 push dumped_1.0046D198 ; ASCII "%c"
00427311 52 push edx
00427312 EB 0B jmp short dumped_1.0042731F
00427314 52 push edx ; edx=1D
00427315 8D4424 14 lea eax,dword ptr ss:[esp+14] ; eax=42B
00427319 68 94D14600 push dumped_1.0046D194 ; ASCII "%d"
0042731E 50 push eax ; eax=0012D944
0042731F E8 EA970100 call dumped_1.00440B0E
00427324 8B4C24 1C mov ecx,dword ptr ss:[esp+1C] ; ecx=00974798, (ASCII "29")
00427328 83C4 0C add esp,0C
0042732B 8D5424 18 lea edx,dword ptr ss:[esp+18] ; esp=0012D928
0042732F 8B41 F8 mov eax,dword ptr ds:[ecx-8] ; edx=00974799
00427332 8D8C24 94000000 lea ecx,dword ptr ss:[esp+94]
00427339 50 push eax ; eax=00000002
0042733A 55 push ebp
0042733B 52 push edx ; edx=0012D94C
0042733C E8 BD920100 call dumped_1.004405FE
00427341 8B00 mov eax,dword ptr ds:[eax]
00427343 50 push eax ; eax=00974068, (ASCII "98")
00427344 8B4424 14 mov eax,dword ptr ss:[esp+14] ; 堆栈 ss:[0012D944]=00974798, (ASCII "29")
; eax=00974068, (ASCII "98")
00427348 50 push eax ; eax=00974798, (ASCII "29")
00427349 E8 F1950000 call dumped_1.0043093F
0042734E 83C4 08 add esp,8 ; esp=0012D92C
00427351 8D4C24 18 lea ecx,dword ptr ss:[esp+18] ; ecx=00000019
00427355 85C0 test eax,eax ; eax=FFFFFFFF
00427357 0F95C3 setne bl ; 条件为真 TRUE,bl=04
0042735A E8 14EE0100 call dumped_1.00446173
0042735F 84DB test bl,bl ; bl=01
00427361 0F85 8D000000 jnz dumped_1.004273F4
00427367 8B4C24 10 mov ecx,dword ptr ss:[esp+10]
0042736B 8D7C24 1C lea edi,dword ptr ss:[esp+1C]
0042736F 8B41 F8 mov eax,dword ptr ds:[ecx-8]
00427372 83C9 FF or ecx,FFFFFFFF
00427375 03E8 add ebp,eax
00427377 33C0 xor eax,eax
00427379 46 inc esi
0042737A F2:AE repne scas byte ptr es:[edi]
0042737C F7D1 not ecx
0042737E 49 dec ecx
0042737F 3BF1 cmp esi,ecx
00427381 ^ 0F82 33FFFFFF jb dumped_1.004272BA
00427387 8D4C24 10 lea ecx,dword ptr ss:[esp+10]
0042738B C68424 88000000 02 mov byte ptr ss:[esp+88],2
00427393 E8 DBED0100 call dumped_1.00446173
00427398 8D8C24 90000000 lea ecx,dword ptr ss:[esp+90]
0042739F C68424 88000000 01 mov byte ptr ss:[esp+88],1
004273A7 E8 C7ED0100 call dumped_1.00446173
004273AC 8D8C24 94000000 lea ecx,dword ptr ss:[esp+94]
004273B3 C68424 88000000 00 mov byte ptr ss:[esp+88],0
004273BB E8 B3ED0100 call dumped_1.00446173
004273C0 8D8C24 98000000 lea ecx,dword ptr ss:[esp+98]
004273C7 C78424 88000000 FFFFF>mov dword ptr ss:[esp+88],-1
004273D2 E8 9CED0100 call dumped_1.00446173
004273D7 B8 01000000 mov eax,1
004273DC 8B8C24 80000000 mov ecx,dword ptr ss:[esp+80]
004273E3 5F pop edi
004273E4 5E pop esi
004273E5 5D pop ebp
004273E6 5B pop ebx
004273E7 64:890D 00000000 mov dword ptr fs:[0],ecx
004273EE 83C4 7C add esp,7C
004273F1 C2 0C00 retn 0C ; 返回程序
........

———————————————————————————————————————————————————————

【完美注册验证爆破点】

004272B4 0F84 CD000000 je dumped_1.00427387 ; je 改 jnz

改为:

004272B4 0F85 CD000000 jnz dumped_1.00427387

———————————————————————————————————————————————————————

【破解总结】

本文适合中等Cracker练手,难点主要是在解除程序校验部分,软件调用十一次自校验,往往不注意就Over了,本文主要是才用
了暴力破解,不过还是属于比较完美的爆破,呵呵~~至于算法部分,运算太多了,我懒得总结了,上面我已经写得比较清楚了。
有兴趣的朋友可以详细看看!

该文章在 2014/4/10 10:54:10 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved