《OD陪你玩暗黑2》之小站全开
大家好,距离本系列的上一篇“《OD陪你玩暗黑2》之运动员入场”(https://www.52pojie.cn/thread-1225270-1-1.html)已经过去了好几天,今天我们来看一看怎么解决一个新人很困扰的问题:跑图。对,就是跑图,尤其是不开任何插件的情况下,迷宫地图能把人累趴下,因此,本章我们就来手把手的教你怎么在dll里用逆向的思路来开图。说明:本章所用的版本是1.10b,创建新号,进入游戏,踩小站截图如下。
废话不多说,开搞,老规矩,吾爱专用版od开起来:
带上参数-w表示窗口化运行,方便我们进行调试。
进入游戏后,按下ALT+E快捷键,进入d2common.dll空间,然后鼠标右键选择查找所有参考文本串:
然后再鼠标右键,在d2common.dll的所有文本字符串里搜索“waypoint”,也就是小站的英文名:
注意不要区分大小写!
结果搜索以后,我们找到了这个字符串集中出现的区域:
鼠标双击第一行进入源代码,然后经过比较这上下的几个函数,正好第一个函数最复杂,看起来也最像是小站逻辑判断:
经过分析源代码,上面都是些参数合法性判断,真正的精华,在最后return之前的那一块:
我们在retn 0x8这里下个断点,然后让游戏角色走过去踩小站,这里就会被断下来,我们狂按F9直到调用完成,记录下此时的寄存器内容
然后,我们再换一个小站全开的角色,重复上面的过程,也记录下最终的寄存器内容:
很明显不对,最终存放返回值的EAX结果不同!!!
这就为我们接下里的工作指明了方向!
我们聚焦到retn之前这段代码,看看EAX的结果是怎么产生的:
一眼看出,EAX的结果会受到ESI和EDX的共同作用,所以我们还是在retn这行下断点,重复上面的过程,不同的这次我们要小心一些,不要狂按F9,要停在最后一次调用结束的位置,截图如下:
果然,EDX的结果一样,但小站全开角色的ESI却是FFFF,基本搞定,漂亮!
我们找到mov si,word ptr ds:,修改为硬编码即可:
然后再让人物去踩一下小站看看效果:
完美搞定!下一章,我会讲一下怎么结合这两篇教程的方法,在尽量不修改原版dll的情况下,通过补丁的方式集成小站全开功能。
1.10纯净绿色版:链接:https://pan.baidu.com/s/1WBoba90trYnqRQxCt5pGQQ 提取码:efwt
变态角色存档:链接: https://pan.baidu.com/s/1fzaNBNFWiPG9GCOebIH6jg 提取码: kphp
callme_lt 发表于 2020-9-15 16:32
这种操作是不是只适合单机版的,如果战网的能检测出来吗
现在的战网基本都自带小站全开了,即使没有全开一般也有分享的踩点号,当然,我说的不是暴雪的战网:lol 好老的游戏了 哈哈 有意思,学到了 牛叉学到了 进来学习一下 以前玩过,现在没时间玩了。谢谢 牛啊老大学习下谢谢啦~~~~~~ 只为进来给大佬加个分!点个赞! pec1987 发表于 2020-7-27 13:31
只为进来给大佬加个分!点个赞!
感谢,我也是初学者,不是大佬{:1_892:} 感谢分享