找回密碼
 立即注册

网游加速修改方法简介

[複製鏈接]
叛逆不羁 發表於 2006-5-22 21:11:26 | 顯示全部樓層 |閱讀模式
每个游戏都有自己的计时器,作计时器不外乎下面这几个函数
SetTimer(),TimeSetEvent(),GettickCount(),TimeGetTime();另外一个就是用VxD驱动来利用系统提供给驱动程序的计时器接口实现计时器
现在的网游都是通过调用ApI函数来实现计时器功能的
一、对于用SetTimer函数和TimeSetEvent函数做计时器的游戏非常容易搞定
直接修改delay参数,方法有很多,如HOOK;或直接反汇编修改主文件
(不过一般的网游都有自检验功能,如何去除自检验功能不在本主题内)
二、对于GetTickCount()和TimeGetTime()就比较难一点,一般要动态跟踪调试(如果你现在不会汇编,也不会动态跟踪调试,那就先回去学吧)
才能有个大致的了解,下面是我分析奇迹(MU)的过程:
进入游戏,带稳定后Ctrl+D,呼出SI,bpx GetTickCount,G
马上就会断下来,因为计时器函数调用非常频繁,F12,返回到了main.exe领空, loop: 记住这次调用的地址。继续 G,
又断了下来,记地址,继续 G
jmp loop
好了,跳出死循环,让我们回头看看刚才赶碌牡刂罚?呛牵?涫狄簿湍敲醇复β铮。浚浚。『昧耍?俅蜧.夷???是不是发现吊线了?
退出游戏再来一次就好了(这里我有个想法,有时候进游戏是不是没发现一个怪,也没看见一个NPC,就自己一个人孤零零的在里面跑,所以如果我们可以让他永远不掉线,这样我们动态调试起来就方便多了,具体方法我还没搞定,知道的兄弟不要忘了告诉我哦)
好了,我们继续分析,呼出SI,bpx GetTickCount,G
不过这次我们要注意的不是调用的地址了,而是寄存器的变化,通过仔细观察我们会发现,GettickCount的返回值放在了eax,edi
eax里面是最新的,而edx里面是上次调用时的返回值,然后就会有一个
sub eax ,edx的动作,接着就不用想了,肯定是
cmp eax,xxx
jl Label
这样的比较了
好了,到这里我们眼前是不是柳暗花明又一村了??既然edi里面放的是上一次调用GettickCount的返回值,那我们就仔细再跟踪一次,看看他在哪个地方执行存放动作的,呵呵,非常容易吧?(这里我不说出地址,免得害了那些拿来主义者),接下来该怎么办?如果你还想不到那我也没办法了。。。。(该行吧)
当然是修改edx里面存放的值啦,好,下一步的工作就是修改代码了,这里你可以用内存不定技术,也可以直接修改main.exe文件,我是个懒人,懒人当然是直接修改了。
好,退出右下,打开OD(千万不要问我OD是什么,我会晕倒的),加载
main.exe,还记得是在哪个地方存放GettickCount返回值到edi里面的吗?
先假设这个地址是00401111。好,ctrl+G,来到那个地方,我们在.text段里面找一块干净的地方干坏事吧(干净的地方在哪里?当然是这个段的尾巴上面啦)好,我们选择从00408888(你可别真选这个地址哦,这是我随便写的)我们把00401111出的代码mov edi,eax修改一下,改成jmp 00408888
(----哎呀,下面那就也nop掉了,-----没关系啦,下面我们在不上来就是)
好了,ctrl+G,来到00408888处,添加代码
mov edi,eax(不上刚才在00401111处被修改的那句)
sub edi,xx(这个值就是加速的关键,我用的是28,好快啊,秒杀怪^_^)
MOV EAX,DWORD PTR DS:[xxxx](不上刚才给我们nop的那句)
jmp 00401116(现在当然要跳回去啦)
好了,在OD中右键,复制到可执行文件,保存刚被我们修改的main.exe
将我们修改的main.exe替换以前那个main.exe
运行游戏,哈哈,是不是一阵狂飙啊!!!
好了,给你一点忠告,不要在里面太嚣张,低调一点的好.
6 W5 c6 {! I P
[此贴子已经被作者于2006-7-5 20:57:17编辑过]
saab95aerors 發表於 2013-7-2 21:25:35 | 顯示全部樓層
有看沒懂 感謝分享
回復

使用道具 舉報

saab95aerors 發表於 2013-7-2 21:25:39 | 顯示全部樓層
看帖回帖賺經驗
回復

使用道具 舉報

 樓主| 叛逆不羁 發表於 2006-5-22 21:11:53 | 顯示全部樓層
留空待续
回復

使用道具 舉報

 樓主| 叛逆不羁 發表於 2006-5-22 21:12:04 | 顯示全部樓層
留空待续
回復

使用道具 舉報

 樓主| 叛逆不羁 發表於 2006-5-22 21:12:14 | 顯示全部樓層
留空待续
回復

使用道具 舉報

supertan 發表於 2006-5-22 22:59:46 | 顯示全部樓層
[s:07]
回復

使用道具 舉報

258672017 發表於 2006-5-22 23:31:12 | 顯示全部樓層
以下是引用云中岳在2006-5-22 13:11:53的发言:
留空待续

回復

使用道具 舉報

coco911 發表於 2006-5-23 01:44:02 | 顯示全部樓層

好了,跳出死循环,让我们回头看看刚才赶碌牡刂罚?呛牵?涫狄簿湍敲醇复β铮。浚浚。『昧耍?俅蜧.夷???是不是发现吊线了?

/ T" ? I" ?2 A2 }; |: r. i) {% x. U

老大,你经常让我们,晕~~晕的

[s:04]
回復

使用道具 舉報

nhs2725 發表於 2006-5-23 02:14:42 | 顯示全部樓層

老云你很厉害哦,厉害滴大家都不知道你说什么?教授吧,我们这群笨人不是好学生,你别这么费心了! ..................切................

回復

使用道具 舉報

风轻狂 發表於 2006-5-23 13:01:41 | 顯示全部樓層

天下无双情况比较特殊,一般的方法都不灵

) }4 H G. m) K) h7 E, f

现在天下的时钟加速程序是对NtQueryPerformanceCounter下的手

M5 f/ Q x- r

Windows的服务运行于驱动层,做起来确实比较麻烦

回復

使用道具 舉報

魚餶鉺釘 發表於 2006-5-24 16:18:55 | 顯示全部樓層
[s:04][s:04][s:04]
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

QQ|Archiver|Mobile|Disable|About|Facebook|Discord|叛逆家族論壇

GMT+8, 2025-5-23 18:28

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回復 返回頂部 返回列表