《FPE 2001 Demo 的延时修改》====>函数调用的重要性
破解作者:yuppc[FCG、BCG]
破解时间:2001年7月31日
破解难度:易
注:(转载希望保持完整,文章归BCG、FCG所有)
软件概述:
1>最老牌的国产游戏修改器,也是最好的("我一直用他"),它的演示完全免费的,所以我们在这只谈"修改"!
2>新版本比2000版增加了很多的功能呀(自动机器人\网络修改\....),一级棒!
3>可以反编译
4>下载地址:
http://www.esoftware.com.cn/oload.php?url=http://ftp.eware.com.cn/pub/game/gatools/fpe2001trial.zip
5>真是最好的游戏修改软件!!
修改目的:为加入CCG奋斗!!
破解工具:
1>w32dasm黄金版 ===>静态反汇编
2>hiew ===>16位编辑器
"修改"开始:
1>首先要了解WINDOWS个应用程序是要对WINDOWS系统函数的调用来实现某些功能的(对CRACKER来说用动态下断就是对函数调用的拦截);
2>在FPE2001和以前的版本一样喜欢炫耀自己(启动时不停的闪烁各个功能页,结尾是也是要停一会),这是如何实现的呢---->调用函数(Sleep,SleepEx等函数);
3>安装软件,并运行;
4>观察:开始运行时闪烁9次,关闭时闪烁一次并发现一个"关于"中关键词"EXIT……";
5>开始用W32dasm反汇编,查找关键词"EXIT"(先解决关闭时的闪烁),代码如下:(注意函数的调用)
:
:
:00406513 803F00
cmp byte ptr [edi], 00 ====>关键比较
:00406516 0F84ED020000 je 00406809
========>关键跳(应该跳过SLEEP函数的调用)
:0040651C 8B93D0020000 mov edx, dword
ptr [ebx+000002D0]
:00406522 807A4000 cmp
byte ptr [edx+40], 00
:00406526 7413
je 0040653B ====>此处无用(因为要跳过EXIT)
:00406528 33D2
xor edx, edx
:0040652A 8BC3
mov eax, ebx
:0040652C E853170000 call 00407C84
:00406531 68D0070000 push 000007D0
* Reference To: KERNEL32.Sleep, Ord:0000h =======>Sleep函数调用
|
:00406536 E84D8C0900 Call 0049F188
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00406526(C)
|
:0040653B 8B9354020000 mov edx, dword
ptr [ebx+00000254]
:00406541 8B83C8010000 mov eax, dword
ptr [ebx+000001C8]
:00406547 E87A180800 call 00487DC6
:0040654C 66C746100800 mov [esi+10],
0008
* Possible StringData Ref from Data Obj ->"Exiting...." ====>查找标志(停到这)
|
:00406552 BA01454A00 mov edx,
004A4501
:00406557 8D45F8
lea eax, dword ptr [ebp-08]
:0040655A E8499A0200 call 0042FFA8
:
:
:
6>修改软件启动时的9次闪烁,查找关键词"Sleep"(函数名查找),应该找到连续有9个SLEEP函数调用的程序段,代码如下:
:
:
:004025A5 8BD8
mov ebx, eax
:004025A7 33D2
xor edx, edx
:004025A9 8BC3
mov eax, ebx
:004025AB E878EF0000 call 00411528
===>设定标志位的CALL
:004025B0 80BB3025000000 cmp byte ptr [ebx+00002530],
00 ====>标志位比较
:004025B7 0F85E2000000 jne 0040269F
=======>关键跳(不跳则闪烁9次)
:004025BD C6833025000001 mov byte ptr [ebx+00002530],
01
:004025C4 6A64
push 00000064
* Reference To: KERNEL32.Sleep, Ord:0000h=======>Sleep函数调用
|
:004025C6 E8BDCB0900 Call 0049F188
:004025CB 8B93D0010000 mov edx, dword
ptr [ebx+000001D0]
:004025D1 8B83C8010000 mov eax, dword
ptr [ebx+000001C8]
:004025D7 E8EA570800 call 00487DC6
:004025DC 6A64
push 00000064
:
: ===================>中间有7个Sleep(总共有9个Sleep,知道吗?)
:
:0040267F E842570800 call 00487DC6
:00402684 68B0040000 push 000004B0
* Reference To: KERNEL32.Sleep, Ord:0000h=======>Sleep函数调用
|
:00402689 E8FACA0900 Call 0049F188
:0040268E 8B93CC010000 mov edx, dword
ptr [ebx+000001CC]
:00402694 8B83C8010000 mov eax, dword
ptr [ebx+000001C8]
:0040269A E827570800 call 00487DC6
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004025B7(C) ===========>跳跃地址(向上看)
|
:0040269F 5B
pop ebx ====>启动的地址(最好直接跳到此)
:004026A0 C3
ret
:
:
7>动手改动(你的最爱),启动HIEW,改动地址00406516和004025B7,将他们全改为jmp就行了(位数不够的加nop) :D
8>试试吧,舒服多了吧.(所以用静态汇编时应注意程序对关键函数的调用)
9>看雪主站上有关于Windows函数的调用,掌握了函数将事半功倍!!
10>收工,睡觉了!
-----------------------------------------------
FCG ------->Http://WWW.CN778.NET
BCG ------->http://crackerabc.longcity.net/
- 标 题:《FPE 2001 Demo 的延时修改》====>函数调用的重要性 (4千字)
- 作 者:yuppc
- 时 间:2001-7-31 22:49:49
- 链 接:http://bbs.pediy.com