老文章档案 · 2003 年

一条MOV指令5分钟内破解蚂蚁广告条的方法

破解教程 · 暴力破解 · 2003-09-23 · 作者:ddcrack 人气: · 出处:赢政天下整理收藏)

蚂蚁是大家上网必不可少的下载工具,我也很喜欢用它,可是时间长了,越来越觉得那个广告条实在是有点讨厌,所以突然起了想要破解它的念头。也许你觉得这是老生常谈,网上有关蚂蚁的破解版早已漫天飞,何必再弄个破解文章出来,不是吃饱了撑的嘛?确实,现在蚂蚁的破解早已是的老掉牙的事情了,但是可看过一些网上的破解文章之后,觉得其中的破解方法都有一点烦琐,而我在这里介绍的方法则另辟溪径,仅仅用一条简单的MOV指令就可以快速去掉可恶的广告条,对于蚂蚁的各个版本其方法都一样,破解过程清晰明了,适合初学者参考,这里我以蚂蚁V1.23简体中文版为例进行讲解。

首先我要先说明一下这里会用到的工具:SMU、W32DASM、HIEW、SOFTICE,这些软件全部都可以在“破解工具”里找到。也许很多朋友还没有用过SMU这个工具,它可是此次破解的头号功臣呢! SMU WINSPECTOR是个非常小巧的侦测WINDOWS窗口信息的东东,只要运行后将鼠标移到需要探测的窗口控件上,马上就能得到相关的信息,用的时候你就知道了。如果你对SMU、W32DASM、HIEW、SOFTICE的用法还不太了解,请先阅读我的主页上的相关文章。程序名 :NetAnts

版本 :V1.23

大小 :825KB

运行平台:Windows 95/98/NT/2000

保护方式:无

破解方式:暴力破解

破解难度:容易

程序下载:netants.zip

破解步骤:

1. 运行蚂蚁;

2. 运行SMU,然后将鼠标放在蚂蚁广告条旁边的任意地方(注意:必须要和广告条在同一个小矩形框范围内),此时我们可以从SMU中得知广告条所在矩形框的“Window Class Name:”是“NA_Advert” (同时也可知其“Window ID Numeber”是“&H73”);

3. 用W32DASM打开并反汇编蚂蚁,然后按“Search”下的“Find Text”,输入“NA_Advert”(或者ID号0073也可以,不过很可能“0073”会有很多查找结果,所以我们还是用“NA_Advert”比较好),回车确定后我们来到调用“NA_Advert”的地方: * Possible StringData Ref from Data Obj ->"NA_Advert" <-- 我们来到这里

|

:004025DA BF14194400 mov edi, 00441914

:004025DF 50 push eax

:004025E0 8975F8 mov dword ptr [ebp-08], esi

:004025E3 897DFC mov dword ptr [ebp-04], edi

* Reference To: USER32.RegisterClassA, Ord:01F2h

|

:004025E6 FF1514E44300 Call dword ptr [0043E414]

:004025EC 6685C0 test ax, ax

:004025EF 7507 jne 004025F8

* Possible StringData Ref from Data Obj ->"RegisterClass"

|

:004025F1 68D8184400 push 004418D8

:004025F6 EB2B jmp 00402623

4. 大概看一下这段程序,很明显是在生成广告条,我们可以找到调用这段程序的CALL位于0041C031处: * Referenced by a CALL at Address:

|:0041C031 <-- 注意这里

|

:00402598 55 push ebp

:00402599 8BEC mov ebp, esp

:0040259B 83EC28 sub esp, 00000028

:0040259E A168AB4400 mov eax, dword ptr [0044AB68]

:004025A3 56 push esi

:004025A4 57 push edi

:004025A5 33F6 xor esi, esi

:004025A7 68007F0000 push 00007F00

:004025AC 56 push esi

:004025AD 8975D8 mov dword ptr [ebp-28], esi

:004025B0 C745DC01254000 mov [ebp-24], 00402501

:004025B7 8975E0 mov dword ptr [ebp-20], esi

:004025BA 8975E4 mov dword ptr [ebp-1C], esi

:004025BD 8945E8 mov dword ptr [ebp-18], eax

:004025C0 8975EC mov dword ptr [ebp-14], esi

* Reference To: USER32.LoadCursorA, Ord:019Ah

|

:004025C3 FF15B8E44300 Call dword ptr [0043E4B8]

* Possible Reference to String Resource ID=00001: "Invalid retry delay"

|

:004025C9 6A01 push 00000001

:004025CB 8945F0 mov dword ptr [ebp-10], eax

* Reference To: GDI32.GetStockObject, Ord:015Fh

|

:004025CE FF157CE04300 Call dword ptr [0043E07C]

:004025D4 8945F4 mov dword ptr [ebp-0C], eax

:004025D7 8D45D8 lea eax, dword ptr [ebp-28]

* Possible StringData Ref from Data Obj ->"NA_Advert"

|

:004025DA BF14194400 mov edi, 00441914

:004025DF 50 push eax

:004025E0 8975F8 mov dword ptr [ebp-08], esi

:004025E3 897DFC mov dword ptr [ebp-04], edi

* Reference To: USER32.RegisterClassA, Ord:01F2h

|

:004025E6 FF1514E44300 Call dword ptr [0043E414]

:004025EC 6685C0 test ax, ax

:004025EF 7507 jne 004025F8

* Possible StringData Ref from Data Obj ->"RegisterClass"

|

:004025F1 68D8184400 push 004418D8

:004025F6 EB2B jmp 00402623

5. 在W32DASM中按住“SHIFT+F12”,输入“0041C031”,走到调用这个CALL的地方: * Reference To: USER32.SetMenu, Ord:0235h

|

:0041BFE9 FF1598E34300 Call dword ptr [0043E398]

:0041BFEF 57 push edi

:0041BFF0 E894E10000 call 0042A189

:0041BFF5 3BC3 cmp eax, ebx

:0041BFF7 59 pop ecx

:0041BFF8 A364AB4400 mov dword ptr [0044AB64], eax

:0041BFFD 0F847D1F0000 je 0041DF80

:0041C003 50 push eax

:0041C004 E8FAE20000 call 0042A303

:0041C009 3BC3 cmp eax, ebx

:0041C00B 59 pop ecx

:0041C00C A3B0AB4400 mov dword ptr [0044ABB0], eax

:0041C011 0F84691F0000 je 0041DF80

:0041C017 FF3564AB4400 push dword ptr [0044AB64]

:0041C01D E895280100 call 0042E8B7

:0041C022 3BC3 cmp eax, ebx

:0041C024 59 pop ecx

:0041C025 A390AB4400 mov dword ptr [0044AB90], eax

:0041C02A 0F84501F0000 je 0041DF80

:0041C030 57 push edi

:0041C031 E86265FEFF call 00402598 <-- 我们来到这里

:0041C036 3BC3 cmp eax, ebx

:0041C038 59 pop ecx

:0041C039 A3A8AB4400 mov dword ptr [0044ABA8], eax

:0041C03E 0F843C1F0000 je 0041DF80

:0041C044 57 push edi

:0041C045 E8C7D00000 call 00429111

:0041C04A 3BC3 cmp eax, ebx

:0041C04C 59 pop ecx

:0041C04D A3C4AC4400 mov dword ptr [0044ACC4], eax

:0041C052 0F84281F0000 je 0041DF80

:0041C058 57 push edi

:0041C059 E82C13FFFF call 0040D38A

:0041C05E 3BC3 cmp eax, ebx

:0041C060 59 pop ecx

:0041C061 A37CAB4400 mov dword ptr [0044AB7C], eax

:0041C066 0F84141F0000 je 0041DF80

:0041C06C 57 push edi

:0041C06D E8C2A0FFFF call 00416134

:0041C072 3BC3 cmp eax, ebx

:0041C074 59 pop ecx

:0041C075 A388AB4400 mov dword ptr [0044AB88], eax

:0041C07A 0F84001F0000 je 0041DF80

:0041C080 57 push edi

:0041C081 E884ACFEFF call 00406D0A

:0041C086 3BC3 cmp eax, ebx

:0041C088 59 pop ecx

:0041C089 A398AB4400 mov dword ptr [0044AB98], eax

:0041C08E 0F84EC1E0000 je 0041DF80

:0041C094 57 push edi

:0041C095 E841ECFFFF call 0041ACDB

:0041C09A 3BC3 cmp eax, ebx

:0041C09C 59 pop ecx

:0041C09D A38CAB4400 mov dword ptr [0044AB8C], eax

:0041C0A2 0F84D81E0000 je 0041DF80

:0041C0A8 57 push edi

:0041C0A9 E85345FFFF call 00410601

:0041C0AE 3BC3 cmp eax, ebx

:0041C0B0 59 pop ecx

:0041C0B1 A39CAB4400 mov dword ptr [0044AB9C], eax

:0041C0B6 0F84C41E0000 je 0041DF80

:0041C0BC 57 push edi

:0041C0BD E887C3FFFF call 00418449

:0041C0C2 3BC3 cmp eax, ebx

:0041C0C4 59 pop ecx

:0041C0C5 A3A0AB4400 mov dword ptr [0044ABA0], eax

:0041C0CA 0F84B01E0000 je 0041DF80

:0041C0D0 57 push edi

:0041C0D1 E861DE0000 call 00429F37

:0041C0D6 3BC3 cmp eax, ebx

:0041C0D8 59 pop ecx

:0041C0D9 A3ACAB4400 mov dword ptr [0044ABAC], eax

:0041C0DE 0F849C1E0000 je 0041DF80

:0041C0E4 E84FF9FEFF call 0040BA38

:0041C0E9 3BC3 cmp eax, ebx

:0041C0EB A36CAB4400 mov dword ptr [0044AB6C], eax

:0041C0F0 0F848A1E0000 je 0041DF80

* Reference To: Drop.CreateDropTarget, Ord:0000h

6. 既然我们现在知道0041C031处的“call 00402598”就是生成广告条的子程序,那么我们用空指令NOP不就可以屏蔽掉这个call 00402598了吗。。。?不过呢。。。等一等,别那么着急(5分钟没有那么快的^_^),我们看看紧接下来0041C039处的指令“mov dword ptr [0044ABA8], eax”将call 00402598的返回值EAX存入内存单元0044ABA8中,如果我们只是简单的用NOP指令屏蔽掉call 00402598而不管返回值EAX,很可能使程序出问题的噢!再看看上面0041C009处的“cmp eax, ebx”,如果EAX和EBX相等,那么程序就会跳过 call 00402598而跑去0041DF80,显然正常情况下EAX是不能等于EBX的,否则怎么会有广告条呢?我们用眼扫一下这段程序,会发现总是有cmp eax, ebx这条指令,如果任何一个子程序返回值EAX和EBX相等,那么程序就不能正常运行。那么,EBX到底是多少呢?是随每个子程序都变还是固定不变的呢?

7. 用SOFTICE的SYMBOL LOADER程序的“FILE/OPEN MODULE...”装入蚂蚁,然后用“MODULE/LOAD”启动蚂蚁,先按一次F10,等那一堆的“INVALID”指令变正常后设置端点 “BPX 0167:0041C031”,按F5后蚂蚁马上被SOFTICE拦截停在0041C031处,此时我们可以看到EBX等于0,按F10一路走下去,我们发现EBX始终等于0,好耶!知道了EBX必定为0,我们就可以修改程序了^_^!

8. 用HIEW打开蚂蚁进行修改:现在我们既要屏蔽掉0041C031处的call 00402598,而又要使EAX的值不等于EBX,既不等于0,好吧,我们姑且让EAX恒等于1,如果试一下你就能发现MOV EAX,00000001这条指令的机器码 B801000000刚好和call 00402598的机器码E86265FEFF一样,都是5个字节,哈哈。。。,巧吧!接下来用HIEW找到call 00402598的机器码码E86265FEFF,将其改为B801000000,即把call 00402598改成mov eax,00000001,存盘推出HIEW(当然了,还有其它的修改方法,怎么样都行),重新运行蚂蚁,感觉怎样?爽吧^_^!

附注:如果你只是简单的将call 00402598的机器码E86265FEFF用空指令9090909090屏蔽掉,虽然可以祛除广告条,但是你会发现广告条上面的下载速率图形演示框也一并没有了,好象也不太好吧^_^!

(出处:赢政天下整理收藏)

相关文章:

·Tornado2之Licence暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解

·万能五笔2001注册码分析及暴力破解 ---可怜的思考者 (27千字)

·一个拨号软件的Win32Dasm暴力破解法

·CuteFTP V4.2.4之暴力破解

相关软件:

·电话卡暴力破解器 v2.0 (0425版)

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史