andersgong 发表于 2020-7-22 11:06

《OD陪你玩暗黑2》之运动员入场

《暗黑破坏神2》是美国暴雪娱乐研发的一款动作类角色扮演游戏,于2000年上市。虽然时隔20年之久,但生命力仍然非常旺盛,尤其是国内外的各种mod社区一直都保持了相当的热度。
许多玩家都希望除了玩别人开发的mod以外,自己也能够深入进去一窥mod的内在。
本文就是出于这个目的,假设读者是一个毫无mod经验也没有什么逆向经验的新人,手把手的授之以渔。
这是第一篇文章,主要从最初级的方法来教给大家如何将自己的mod注入游戏的进程空间,也就是标题所说的“运动员入场”。
作者没什么美工功底,本文以技术讲解为主,还请大家海涵。

首先,所谓的mod,有两种方式:
1、通过修改txt和资源文件来达到对游戏数据的修改
2、更为复杂的功能是无法通过txt来实现的,此时我们需要将自己mod的dll注入到游戏的进程空间内,与游戏源代码进行无缝交互,从而获得更为强大的功能
本文着重介绍第二种方式的第一个步骤,要与游戏进程交互,我们首先需要进入它。

准备工具:
1、ollydbg,强推吾爱破解专用版,谁用谁知道


2、自己先写了一个dll用来测试,如果注入成功,游戏加载dll时就会弹出对话框了,起名为mydll.dll


3、单机版的暗黑2游戏本体,大家自行下载吧,我用的是D2SE版,没有什么区别

完成以上准备工作后,我们就可以开始干活,下面详细讲解每一个步骤:
1、启动od,打开游戏本体exe,刚开始是暂停的,需要点一下开始按钮让游戏启动



2、按照正常步骤新建帐号,进入游戏


3、回到od界面,点击快捷键e,观察游戏启动的所有dll

从中,我们发现游戏最后加载的dll是Fog.dll,那么我们就以它为目标进行patch


4、双击上图的Fog.dll进入该dll的空间,然后按快捷键“CTRL+N”,进入Fod.dll的名字空间

点击“类型”排序,第一个<ModuleEntryPoint>就是这个dll的入口函数了。

5、双击<ModuleEntryPoint>进入该函数,按F2设下断点,然后按CTRL+F2重启游戏,就会停在这个断点的位置


6、按下CTRL+F9执行到返回,就可以知道dll的入口函数在哪里返回的,我们的目的就是在它返回之前加载我们自己的dll

我们看到函数在6FF53243处return了,我们重点关注上面这一行也就是6FF5323E这行的call指令,我们的方法是通过改写这条指令,跳转到空白区域,加载完我们自己的dll以后,再跳回来。所以,我们先记下这行地址6FF53243。

7、用鼠标将程序空间向下拉,找到一块空白区域,如下图:


8、我们随意找一个空白地址,按下CTRL+E,输入mydll.dll,也就是我们自己编译的dll文件名,一会儿要作为参数传给系统函数LoadLibraryA的


9、然后在下面的空白位置开始输入汇编代码,这里我们假设找到的地址是6FF74BF8,同时要注意上面输入mydll.dll的地址是6FF74BDF

第一行代码call 6FF53DEB实际上就是上面第6步中6FF5323E这个地址的call指令,因为那个地方一会儿会被我们修改为跳转指令以跳到现在这个地址来加载dll,所以进来后我们先执行那个call。
第二行代码是利用堆栈备份call 6FF53DEB的返回值
第三行代码把字符串mydll.dll的首地址压入堆栈
第四行代码调用LoadLibraryA来加载mydll.dll
第五行代码从堆栈上恢复第一行代码那个call的返回值到eax寄存器
第六行代码跳回Fog.dll的入口函数6FF53243中最后renturn的那句

10,然后我们在上面的第六行代码处按回车,进入6FF53243这行代码,再将其修改为jmp 6FF74BF8指令,最后点击鼠标右键,选择复制到可执行文件,所有修改(强烈建议你先备份一下原来的Fog.dll)



11、至此,大功告成。我们按下快捷键CTRL+F2再次重启游戏,就会看到下面这个让人兴奋的弹窗了:


到这里为止,我们的第一篇运动员入场式就已经完成了,通过这篇文章的介绍,我们已经顺利的进入了游戏的进程空间,接下来就可以海阔凭鱼跃天高任鸟飞。
但是本文介绍的方法还有一些缺陷,并不完美,另外,进入游戏空间后,我们可以做什么呢?比如显血、多孔、装备提升等等变态功能,又是怎么开发出来的呢?
这些内容我们放到后面的内容逐一讲解(如果感兴趣的朋友比较多的话,我会坚持写下去)。

下面贴两张游戏mod截图,看看我们能干什么吧:

上图有两个亮点:伤害值气泡显示(僵尸头顶的数字5)和掉落44孔装备

上图是密恐患者不敢直视全球独一份的255孔镶嵌截图。

andersgong 发表于 2022-11-28 09:10

haijie1223 发表于 2022-2-20 21:10
楼主讲的是如何挂载一个dll到游戏进程,那么进入游戏之后的各种骚操作呢,比如打孔等等。。。

有的,搜一下我的帖子

andersgong 发表于 2020-7-22 13:42

zyxzhsh 发表于 2020-7-22 13:35
这个工具可以注入任何dll吗 也就是说可以修改任意软件

原理都是一样,不过入场以后该干什么还是各有千秋的。

诗木 发表于 2020-7-22 13:00

{:301_998:}大佬整点switch的教程不?

westlife73 发表于 2020-7-22 13:13

已学习···~~~~~~~~~~~牛逼大佬·

dante9394 发表于 2020-7-22 13:32

暗黑2满满的回忆

zyxzhsh 发表于 2020-7-22 13:35

这个工具可以注入任何dll吗 也就是说可以修改任意软件{:1_921:}

ak9000 发表于 2020-7-22 13:38

大佬威武,点赞支持{:1_921:}

andersgong 发表于 2020-7-22 13:41

诗木 发表于 2020-7-22 13:00
大佬整点switch的教程不?

由于工作太忙,我没有玩过switch{:1_937:}

Zoe番茄 发表于 2020-7-22 13:59

致经典,80后飘过{:1_937:}{:1_937:}{:1_905:}

原来 发表于 2020-7-22 14:17

这孔:lol 太恐怖了
页: [1] 2 3 4 5 6
查看完整版本: 《OD陪你玩暗黑2》之运动员入场