本文主要是介绍[教程二]用OD给游戏打补丁! [2010-06-11],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
知识点:OD内编写汇编,实现硬编码打补丁功能,OD消息断点。
工具:OD,CE,PEID
目标:是男人就撑过20秒.exe
结果:增加按CTRL键时切换是否不死,达到就算中弹也不死的目的。
作者:C++
以下正文:
先说说实现的步骤吧:
1、 找到不死地址。
2、 找到游戏内按键处理函数。
3、 查找程序内空地址准备编写ASM代码。
4、 编写ASM代码实现通过按CTRL键来开启和关闭不死功能。
5、 编写ASM代码加入到游戏消息循环处理部分,达到实现检测不死开关来对应动作。
那么结合上面的步骤,分别讲一下如何实现:
先说说找不死地址吧,首先打开游戏,用CE附加,然后正常进入游戏内,当开始游戏时(出现飞机,并你可以控制),暂停游戏(回车或空格),目的是为了更好的搜索,这时CE里搜索DWORD型1,搜索后,继续游戏(回车或空格),让游戏跑起来,然后等待死亡,当完全死亡并出现统计信息的界面时,CE搜索0,这时会剩下不多的地址了,然后在回到游戏正常进入游戏,观察CE里各地址,进入后变成1的就是我们要的了,一般都是第一个(406D90)。这时在这个地址上查找“谁写了他”,然后让游戏内死亡,这时会出现几个地址,我们先看第一个,如下图:
这时,我们就要请OD上场了,(其实CE也可以,个人喜欢用OD,更直观),用OD附加游戏,跳转到0040361f这个地址,我们看到如下代码:
0040360F |. A1806D4000 mov eax,dword ptrds:[406D80]
00403614 |. 85C0 test eax,eax ; 判断是不是0
00403616 |. 743B je short 是男人就.00403653
00403618 |. 83F8 11 cmp eax,11 ; 如果是11就跳转到死亡处理
0040361B |. 7517 jnz short 是男人就.00403634
0040361D |. 33D2 xor edx,edx
0040361F |. 8915 906D4000 mov dword pt
这篇关于[教程二]用OD给游戏打补丁! [2010-06-11]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!