发表于 2020-7-17 13:50

申请会员ID:andersgong【申请通过】

1、申 请 I D:andersgong
2、个人邮箱:4304817@qq.com
3、原创技术文章:Diablo2中bin文件的逆向软件开发,昨天忘记附上源码链接了


开发语言:ANSI C
编译环境:VS2010/2019
软件说明:d2bin2txt是一套专门逆向暗黑2mod中bin文件的工具,玩暗黑的人都知道,暗黑2的很多游戏资源都是放在mpq的二进制bin文件中,比如装备、技能、人物、场景、怪物、物品、合成等,但许多mod的bin文件是不开源的,这样造成大家学习和研究的不方便,所以我专门开发了一套工具,可以将bin文件还原为txt文件,方便大家学习和修改,并且这套工具我是完全开源分享给大家无偿使用的。

应用场景:理论上可以逆向diablo 2的任何mod(1.10和1.13测试过),也就是将bin文件全部还原为原来的txt文件,见下面的截图说明。
应用范围:目前国内的暗黑2 mod圈里,凡是做mod的玩家,几乎是人手一份我这个软件,甚至于国外的一些mod开发者也找我要了源码去研究。


这是某mod发布的charstats.bin文件截图:

https://s1.ax1x.com/2020/07/16/UD7vxs.png



下面是经过我的d2bin2txt反编译获得的原始txt文件截图:
https://s1.ax1x.com/2020/07/16/UDHKZ6.png

这是整个软件自动反编译bin文件的过程截图:
https://s1.ax1x.com/2020/07/16/UDHRe0.png
https://s1.ax1x.com/2020/07/16/UDHfoT.png

下面讲一下整个软件的开发过程吧:
1、首先,我们需要弄清楚Diablo 2的每一个bin文件的内容和格式,这方面,有两个办法:一个是可以去暗黑圈子里著名的ph网站找资料,但是内容很多良莠不齐,而且纯英文,并不是人人都能轻松理解的。
另外一个方法则更加简单粗暴,那就是找到原版游戏自带的txt文件(网上很容易找到),通过逐个修改每个字段,然后挂载游戏生成bin文件的方法,再用类似beyond compare这类工具比较前后两个bin文件,就可以自行分析出每个字段的含义和对应关系,甚至连skills.txt里各种技能的伤害公式都可以推导出来,从而获得bin文件里每个字节和txt文件里每个字段的对应关系。

2、弄清楚了bin文件的结构之后,剩下的事情就是体力活了,写代码。
首先,定义总体框架:
https://s1.ax1x.com/2020/07/16/UDb4Bt.png
这里主要是先声明统一的函数指针,方便每个bin文件都有统一的解析回调入口。

然后,定义需要解析的模块,这里基本上就是把所有的bin文件都加进来:
https://s1.ax1x.com/2020/07/16/UDqVD1.png
然后直接跑主循环就行了。

3、接下来,我们需要定义每个模块的解析回调函数,这里以charstats.bin为例截图:
首先根据第一步分析得到的bin文件二进制结构,对解析结构体进行声明:
https://s1.ax1x.com/2020/07/16/UDqw8g.png

然后就可以定义解析的回调函数:
https://s1.ax1x.com/2020/07/16/UDqqIK.png
这里分了几个阶段来解析,是因为不同的bin文件内容之间有依赖关系,也就是说某些bin文件解析的数据要依赖于其他bin文件的某个结果,因此每个bin文件都会跑几轮来解决依赖关系。

至此,整个软件就开发完成了。其实这个软件的开发,除了分析bin文件和txt文件之间的对应关系需要动动脑子以外,后面的编码部分就是纯体力活了,没有什么太多要说的。
下面附上一些截图,可以证明我确实是该软件的作者本人!
1、最初在暗黑mod吧发的贴:
https://s1.ax1x.com/2020/07/16/UDL4Ff.png
2、许多人私下找我要工具的截图:
https://s1.ax1x.com/2020/07/16/UDOk01.png
3、发帖历史
https://s1.ax1x.com/2020/07/16/UDOlnA.png
4、另外,上面截图里的第一个精品帖是最近我刚刚新开发了暗黑2 1.13C版本的255孔打孔镶嵌功能,下面是效果图(目前我应该是全球唯一一个做到这个打孔数量的):
https://s1.ax1x.com/2020/07/16/UDOjud.png
部分汇编代码截图:
https://s1.ax1x.com/2020/07/16/UDXmEq.png
实现方法的教程我也公开发表在暗黑mod吧了,链接如下:
https://tieba.baidu.com/p/6794988300?fid=764404&red_tag=0305088567


同时,为了方便更多人,我选择直接开源,大家可以自行参考研究:
https://pan.baidu.com/s/1lJSn83dMlxDTkXI3uGFDKg
提取码: i5vh

源码在github上:https://github.com/andersgong/d2bin2txt


最后是前几天还有人找我要软件的截图:
https://s1.ax1x.com/2020/07/16/UDXw8O.png


上面提到的两个软件的开发工程中,都需要大量用到逆向工程的工具和方法,很感谢52pojie网站给我提供的帮助,尤其是od对我逆向暗黑2的帮助非常大,因此特申请加入论坛,以期能够跟各路大神共同学习、共同交流、共同进步,谢谢!

Hmily 发表于 2020-7-17 17:25

I D:andersgong
邮箱:4304817@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

andersgong 发表于 2020-7-17 19:36

感谢通过,我来报道了!{:1_893:}

andersgong 发表于 2020-7-20 13:39

Hmily 发表于 2020-7-17 17:25
I D:andersgong
邮箱:



我来报到了。
页: [1]
查看完整版本: 申请会员ID:andersgong【申请通过】