NS版暗黑破坏神3金手指开发教程(5)
上一节,我们学会了通过修改程序指令的方式制作金手指,这一节,将引出真正的高手级金手指开发方法
除了必掉太古这个极其护肝和有用的金手指外,我们能想到的另一个金手指就是人物背包里的素材,包括金钱,宝石,材料等各种日常必需品,具体的固定素材有以下这些:
金钱
大秘境钥匙
血岩碎片
万用材料
奥术之尘
萦雾水晶
死亡之息
遗忘之魂
堪杜拉斯符文
卡尔蒂姆龙葵蝶
亚瑞特战争挂毯
腐化的天使肉块
威斯特玛圣水
惊悚之心
腐臭试剂
恐惧神像
李奥瑞克的悔恨
怨毒之眼
蠕动的脊骨
1. 运行神器IDA,然后打开原始版本的DiabloIIINX64ra.elf, 我们首先想要修改的是金币,简单,函数快速筛选里输入gold后,过滤后依然有很多结果,我们找一个简单的函数GoldGainForKill,字面意思就是击杀获取金币,到这个函数伪代码里分析一下发现了ModifyCurrencyAmount,双击点进去
2. 在新的函数伪代码我们又找到了ItemPlayerGetCurrencyCount,意思是获取玩家的货币数量,我们简单理解为获取金币数,继续点进去
3. 终于到了最后获取玩家金币数的地方了,我们看到获取的是player相关的内存地址里的一个值,并且偏移量跟v2,也就是CurrencyType有关,恍然大悟,原来这个函数是可以获取所有种类货币的数量的,言外之意,我们可以通过hack这个函数,达到修改所有材料的目的,包括血岩,锻造材料等等,现在可以从这里的伪代码转到汇编代码去分析怎么改了
4. 伪代码对应的汇编代码如下图,找到了原始版本的地址,当然我们就可以用上节的搜索方法找到2.6.6版本对应的地址了,然后下一步就在2.6.6 main里修改程序,我们可以看到原始版本和2.6.6版本这段汇编指令是非常类似的,说明版本更新对这一段程序没有什么改动
5. 由于接下来要添加一些代码,因此不能直接在源程序上改,我们要找一段空白地址去写自己的代码,用IDA找了一下,发现C4118C到C42000这段区域是不存在的,也就是说我们在内存中修改这段内存是不会影响到游戏程序的,那就在C41300地址开始编写我们自己的代码吧,因为IDA C41300地址不能编辑,我们可以在C42300的地址处开始编写,等制作金手指代码的时候再把地址替换回C41300
6. 编写的汇编代码如下所示,在这里大概讲一下为什么这么写,w19是货币类型,也就是材料类型,如果是0代表金币,我们留了一个空指令nop,假如读者想要只改金币,可以将nop改为bne, 这样只会在类型是金币时修改数量,999999999的16进制表示是3B9AC9FF,因此我们用mov和movk把要修改的数量给到X0寄存器,STR X0,[X8,X9] 的作用则是吧X0的值发到X8+X9的内存地址,也就是此类材料的内存,LDR X0,[X8,X9]则是程序的原指令,因为我们将原来此指令的地方改成此段代码的函数调用指令BL 0xC41300 ,因此RET返回前必须恢复原指令的调用
7. 至此,我们已经完成了将固定素材数量全部修改为999999999的代码编写,接下来开始金手指的制作,跟上节类似,简单地把每行指令的字节码写成金手指格式放到txt里加上说明就OK了,关闭的金手指只用把调用的指令改为原指令就可以,因此只有一行
8. 跟以前一样把金手指文件放到机器上,启动游戏,开启金手指,进游戏场景查看人物金币和各个材料,是不是都变成999999999啦。
9. 我们也可以根据类似的方法,做出单独锁定金钱,血岩的金手指,另外全材料的数量也可以减少锁定数量,比如锁成99,先编写代码,然后写成金手指格式
好了,本节到此结束。 下一节我们将开始介绍人物相关属性的动态修改
NS版暗黑破坏神3金手指开发教程(5)相关推荐
- NS版暗黑破坏神3金手指开发教程(15)
上一节,我们介绍了全饰品的制作方法,这一节将讲解全幻化的制作,涉及到的汇编和逆向知识比较多,代码量也很大,读者需要一定的耐心,理解了本节意味着已经没有什么困难可以阻挡你前进了 1. 我们搜索幻化tra ...
- NS版暗黑破坏神3金手指开发教程(17)
终于到最后一节了,在这一节中我们将讲解如何利用hack制作出丰富多彩的世界,开个玩笑,其实是因为由于暗黑三的AMIIBO功能很有意思,不但可以用普通手办在城外召唤出一组精英怪,而且在城内用专用哥布林手 ...
- NS版暗黑破坏神3金手指开发教程(2)
上一节,介绍了开发金手指所需的工具,这一节,正式开始简单的金手指修改 1. 首先,分别要准备好2.6.6的main.elf和原始版本待调试信息的DiabloIIINX64ra.elf,因为我们要修改的 ...
- NS版暗黑破坏神3金手指开发教程(9)
上一节我们介绍了暴击爆伤的修改,这一节将讲解一些变态功能的制作,由于前面的章节已经详细地将大部分hack制作方法都讲解的差不多了,从这一节开始将会加速金手指教程 1. 我们先从生命不减和一击必杀的功能 ...
- NS版暗黑破坏神3金手指开发教程(16)
上一节,我们学会了全幻化的制作,功力精进了一步,这一节,将会讲解全图纸的制作,也基本上是金手指教程的最后一节了,通过这一节,读者将会看到如何将逆向程序分析方法使用得淋漓尽致,面对任何困难也能无坚不摧 ...
- NS版暗黑破坏神3金手指开发教程(6)
上一节,我们介绍了金钱血岩以及全素材的代码Hack修改,这一节,我们将解决第二节提出的问题,如何能在游戏中实时动态地开启和关闭人物属性的修改 1. 我们在游戏里打开人物的状态窗口,可以看到大部分属性, ...
- NS版暗黑破坏神3金手指开发教程(3)
上一节,我们初步介绍了修改人物力量的方法,也大致说了一下hexworkshop和IDA的简单操作,这一节,我们将进阶到复杂度高一些的人物全属性修改,搜索方法基本跟上一节的力量公式一样,需要一定的耐心和 ...
- NS版暗黑破坏神3金手指开发教程(13)
上一节,我们讲解了关于各种延时机制的hack,这一节,将会介绍全传奇威能的制作 1. 因为传奇威能的收集比较困难,需要获取到大部分拥有传奇技能的装备,而且还要提取传奇威能,因此,我们考虑从程序中Hac ...
- NS版暗黑破坏神3金手指开发教程(8)
上一节,我们通过代码Hack的方式修改了移速和攻速,这一节,将通过程序分析的方式,制作出各种强力的战斗杀敌金手指功能 1. 我们先修改暴击几率和暴击伤害,先搜索critchance, 找到PowerC ...
最新文章
- 【免费获取】80+页PPT全方位解读半导体行业
- 如何合理的学习Netty?(学习目录)
- 实时获取vuex更新的新数据_京东手机销量实时数据更新 荣耀Play4T Pro位列第一
- boost::fusion模块实现一个函数绑定器的测试程序
- Android Studio自动排版的两种方法
- oracle 定时任务例子【项目例子】
- web前端到底怎么学?干货资料!
- Linux基础(2)-基础命令和bash的基础特性(1)
- 【JAVA笔记】线程(1):多线程的介绍和实现
- 安卓开发 登录用户信息缓存_Firefox 将向用户警告被泄露的登录信息
- CCNA Cisco 安全配置
- macOS镜像下载(ISO、DMG)
- ⑤初识java:打印日历
- 企业网中nextcloud与iRedmail邮件系统的配合
- 如何创建sis文件——PKG文件格式
- 三个数中寻找最大值的5种方法-C语言实现
- 免费下载有声读物获取您自己!
- 安装SQL Server 2000时出现“以前的某个程序安装已在安装……”
- Python爬取豆瓣网影评展示
- AxiomSL任命David Weber为首席运营官兼首席财务官以应对快速的全球增长
热门文章
- 【KMP】从原理上详解next数组和nextval数组
- BaseActivity 中使用广播接收器时,onReceive 会多次执行
- playbook简单使用
- aspx.net响应点击事件(页面button的onclick事件)
- 「手机秒变照片传送门!使用 Flask 打造你的个人云相册!」
- b级计算机考试在线试题及答案,计算机等级考试一级B测试题及参考答案
- 实验9-10 平面向量加法(15分)
- 八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)...
- KETTLE 请求HTTPS接口
- 机器学习实战之支持向量机(SVM)(三)SMO高效优化算法