《OD陪你玩暗黑2》之小站全开

查看 154|回复 10
作者:andersgong   
大家好,距离本系列的上一篇“《OD陪你玩暗黑2》之运动员入场”(https://www.52pojie.cn/thread-1225270-1-1.html)已经过去了好几天,今天我们来看一看怎么解决一个新人很困扰的问题:跑图。对,就是跑图,尤其是不开任何插件的情况下,迷宫地图能把人累趴下,因此,本章我们就来手把手的教你怎么在dll里用逆向的思路来开图。
说明:本章所用的版本是1.10b,创建新号,进入游戏,踩小站截图如下。


08.png (585.87 KB, 下载次数: 2)
下载附件
2020-7-27 11:23 上传

废话不多说,开搞,老规矩,吾爱专用版od开起来:


01.png (103.47 KB, 下载次数: 2)
下载附件
2020-7-27 11:24 上传

带上参数-w表示窗口化运行,方便我们进行调试。
进入游戏后,按下ALT+E快捷键,进入d2common.dll空间,然后鼠标右键选择查找所有参考文本串:


02.png (118.78 KB, 下载次数: 2)
下载附件
2020-7-27 11:24 上传

然后再鼠标右键,在d2common.dll的所有文本字符串里搜索“waypoint”,也就是小站的英文名:


03.png (99.89 KB, 下载次数: 0)
下载附件
2020-7-27 11:24 上传



04.png (16.99 KB, 下载次数: 2)
下载附件
2020-7-27 11:24 上传

注意不要区分大小写!
结果搜索以后,我们找到了这个字符串集中出现的区域:


05.png (81.17 KB, 下载次数: 1)
下载附件
2020-7-27 11:25 上传

鼠标双击第一行进入源代码,然后经过比较这上下的几个函数,正好第一个函数最复杂,看起来也最像是小站逻辑判断:


06.png (98.83 KB, 下载次数: 3)
下载附件
2020-7-27 11:25 上传

经过分析源代码,上面都是些参数合法性判断,真正的精华,在最后return之前的那一块:


07.png (91.61 KB, 下载次数: 1)
下载附件
2020-7-27 11:25 上传

我们在retn 0x8这里下个断点,然后让游戏角色走过去踩小站,这里就会被断下来,我们狂按F9直到调用完成,记录下此时的寄存器内容
然后,我们再换一个小站全开的角色,重复上面的过程,也记录下最终的寄存器内容:


09.png (20.3 KB, 下载次数: 2)
下载附件
2020-7-27 11:25 上传

很明显不对,最终存放返回值的EAX结果不同!!!
这就为我们接下里的工作指明了方向!
我们聚焦到retn之前这段代码,看看EAX的结果是怎么产生的:


10.png (33.98 KB, 下载次数: 3)
下载附件
2020-7-27 11:26 上传

一眼看出,EAX的结果会受到ESI和EDX的共同作用,所以我们还是在retn这行下断点,重复上面的过程,不同的这次我们要小心一些,不要狂按F9,要停在最后一次调用结束的位置,截图如下:


11.png (20.12 KB, 下载次数: 1)
下载附件
2020-7-27 11:26 上传

果然,EDX的结果一样,但小站全开角色的ESI却是FFFF,基本搞定,漂亮!
我们找到mov si,word ptr ds:[edx+eax*2],修改为硬编码即可:


12.png (35.39 KB, 下载次数: 2)
下载附件
2020-7-27 11:27 上传



14.png (21.77 KB, 下载次数: 1)
下载附件
2020-7-27 11:29 上传

然后再让人物去踩一下小站看看效果:


13.png (576.52 KB, 下载次数: 1)
下载附件
2020-7-27 11:29 上传

完美搞定!下一章,我会讲一下怎么结合这两篇教程的方法,在尽量不修改原版dll的情况下,通过补丁的方式集成小站全开功能。
1.10纯净绿色版:链接:https://pan.baidu.com/s/1WBoba90trYnqRQxCt5pGQQ 提取码:efwt
变态角色存档:链接: https://pan.baidu.com/s/1fzaNBNFWiPG9GCOebIH6jg 提取码: kphp

下载次数, 下载附件

andersgong
OP
  


callme_lt 发表于 2020-9-15 16:32
这种操作是不是只适合单机版的,如果战网的能检测出来吗

现在的战网基本都自带小站全开了,即使没有全开一般也有分享的踩点号,当然,我说的不是暴雪的战网
a910673331   

好老的游戏了
BUG606   

哈哈 有意思,学到了
国际豆哥   

牛叉学到了
zqj899   

进来学习一下
myao5230   

以前玩过,现在没时间玩了。谢谢
得条毛   

牛啊老大学习下谢谢啦~~~~~~
pec1987   

只为进来给大佬加个分!点个赞!
andersgong
OP
  


pec1987 发表于 2020-7-27 13:31
只为进来给大佬加个分!点个赞!

感谢,我也是初学者,不是大佬
您需要登录后才可以回帖 登录 | 立即注册

返回顶部