DNF怪物自杀call源码
XNF怪物自杀call源码作用:
怪物自动消失,有经验和物品。
老规矩,献上思路给大家:
几个星期前朋友给了我一份动作CALL,叫我测试。
我测试的时候发现,用怪物内存地址来调用CALL,“12”的动作参数就可以让怪物直接消失
(类似于召唤师召唤的怪物时间结束后的那种,一阵烟过后就没了)
MOV ESI,[人物基址]
MOV EAX,
PUSH 0 //PUSH1
PUSH 0 //PUSH2
PUSH 0 //PUSH3
PUSH 0 //PUSH4
PUSH C //PUSH5 动作参数2 是蹲下不动 ;12用于怪物就是“消失”
MOV ECX,ESI
CALL
以上就是秒怪思路,接下来就是全图秒怪;
然后我就想到了全图秒怪。
先前的思路是这样的:
怪物遍历+动作CALL+12 实现全图秒
但是测试的时候发现,遍历出正确的怪物内存地址很难。。
因为一旦用到了已经死亡的怪物基址或者其他无效的,调用CALL的结果就是卡死。
然后试了很久,还是遍历不行,所以放弃了。
两个星期后,9.18早晨,在调试XNF的时候,突然想到了另一个方法。。
思路来源:
几个星期前,偷海妖无敌的时候发现,海妖是修改的游戏中减血汇编代码,把关键地方修改成了JMP ,
跳转到了海妖的模块里,然后在里面进行了复杂的数据计算,以此实现了无敌。
所以,我就想这个动作CALL能不能也做一下手脚- -
说做就做,自己写了一个DLL,建了一个子程序,内容是:
置入代码({144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144}),置入了很多个144,也就是NOP空指令,然后进入游戏,加载OD,手动修改那些NOP(等于我用置入代码的方法开辟内存空间,来嵌接动作CALL)。
先试试CALL进去后马上RENT,结果游戏没卡死;
然后暂停游戏,一步一步地写判断……
下午吃饭完,终于写好了,哈~
思路讲解就到这,接下来是技术关键,上图:
1、
1.png
这里就是需要修改的地方。
2、
2.png
调用此CALL的相关参数,见右下角
3、
3.png
修改之后的汇编代码
4、
4.png
嵌接进去的汇编代码,请仔细看注释。。
稍微有汇编基础的人,仔细看图就能明白了。
这样一来,就成功HOOK了(不知道能否把这种称之为HOOK),只要非玩家的怪物或者APC一动(出走路之外的任何动作),就会更改当次调用CALL所PUSH的参数,实现另类功能。,把PUSH全改成0,就是“立正”。
很爽吧~
技术关键就到这,接下来是技术难点的实现:
很多人看着都觉得道理挺简单的吧,而且很容易。
其实并不是这样
①CALL 地址 //这里的“地址”不是0X********的地址,而是偏移地址。
所以如果在源码里直接写,是不行的,必须要得到子程序指针,然后取得置入代码()开头,再通过减运算取得偏移地址,再写入。比较麻烦的算法- -
②注意看上面的图,里面涉及到了EBP参数、子程序结构、堆栈平衡等等基础。
通过半天的努力,终于写出来了~
下面是测试图:
① 2 怪物蹲下不动
5.png
② 12 怪物消失
6.png
源码2HB,伸手党付出代价吧~
怪物自动下蹲、自杀(HOOK动作CALL).e
鄙视楼下的顶帖没我快,哈哈 确实不错,顶先 楼下的接上 打酱油的人拉,回复下赚取积分 支持楼主,用户楼主,楼主英明呀!!! 好,很好,非常好! 着玩意还是很有用处的。。。 好像现在 越来越给力了 呵呵 谢谢楼主分享~
页:
[1]
2