上一节,我们学会了通过修改程序指令的方式制作金手指,这一节,将引出真正的高手级金手指开发方法

除了必掉太古这个极其护肝和有用的金手指外,我们能想到的另一个金手指就是人物背包里的素材,包括金钱,宝石,材料等各种日常必需品,具体的固定素材有以下这些:

金钱
大秘境钥匙
血岩碎片
万用材料
奥术之尘
萦雾水晶
死亡之息
遗忘之魂
堪杜拉斯符文
卡尔蒂姆龙葵蝶
亚瑞特战争挂毯
腐化的天使肉块
威斯特玛圣水
惊悚之心
腐臭试剂
恐惧神像
李奥瑞克的悔恨
怨毒之眼
蠕动的脊骨

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)相关推荐

  1. NS版暗黑破坏神3金手指开发教程(15)

    上一节,我们介绍了全饰品的制作方法,这一节将讲解全幻化的制作,涉及到的汇编和逆向知识比较多,代码量也很大,读者需要一定的耐心,理解了本节意味着已经没有什么困难可以阻挡你前进了 1. 我们搜索幻化tra ...

  2. NS版暗黑破坏神3金手指开发教程(17)

    终于到最后一节了,在这一节中我们将讲解如何利用hack制作出丰富多彩的世界,开个玩笑,其实是因为由于暗黑三的AMIIBO功能很有意思,不但可以用普通手办在城外召唤出一组精英怪,而且在城内用专用哥布林手 ...

  3. NS版暗黑破坏神3金手指开发教程(2)

    上一节,介绍了开发金手指所需的工具,这一节,正式开始简单的金手指修改 1. 首先,分别要准备好2.6.6的main.elf和原始版本待调试信息的DiabloIIINX64ra.elf,因为我们要修改的 ...

  4. NS版暗黑破坏神3金手指开发教程(9)

    上一节我们介绍了暴击爆伤的修改,这一节将讲解一些变态功能的制作,由于前面的章节已经详细地将大部分hack制作方法都讲解的差不多了,从这一节开始将会加速金手指教程 1. 我们先从生命不减和一击必杀的功能 ...

  5. NS版暗黑破坏神3金手指开发教程(16)

    上一节,我们学会了全幻化的制作,功力精进了一步,这一节,将会讲解全图纸的制作,也基本上是金手指教程的最后一节了,通过这一节,读者将会看到如何将逆向程序分析方法使用得淋漓尽致,面对任何困难也能无坚不摧 ...

  6. NS版暗黑破坏神3金手指开发教程(6)

    上一节,我们介绍了金钱血岩以及全素材的代码Hack修改,这一节,我们将解决第二节提出的问题,如何能在游戏中实时动态地开启和关闭人物属性的修改 1. 我们在游戏里打开人物的状态窗口,可以看到大部分属性, ...

  7. NS版暗黑破坏神3金手指开发教程(3)

    上一节,我们初步介绍了修改人物力量的方法,也大致说了一下hexworkshop和IDA的简单操作,这一节,我们将进阶到复杂度高一些的人物全属性修改,搜索方法基本跟上一节的力量公式一样,需要一定的耐心和 ...

  8. NS版暗黑破坏神3金手指开发教程(13)

    上一节,我们讲解了关于各种延时机制的hack,这一节,将会介绍全传奇威能的制作 1. 因为传奇威能的收集比较困难,需要获取到大部分拥有传奇技能的装备,而且还要提取传奇威能,因此,我们考虑从程序中Hac ...

  9. NS版暗黑破坏神3金手指开发教程(8)

    上一节,我们通过代码Hack的方式修改了移速和攻速,这一节,将通过程序分析的方式,制作出各种强力的战斗杀敌金手指功能 1. 我们先修改暴击几率和暴击伤害,先搜索critchance, 找到PowerC ...

最新文章

  1. 【免费获取】80+页PPT全方位解读半导体行业
  2. 如何合理的学习Netty?(学习目录)
  3. 实时获取vuex更新的新数据_京东手机销量实时数据更新 荣耀Play4T Pro位列第一
  4. boost::fusion模块实现一个函数绑定器的测试程序
  5. Android Studio自动排版的两种方法
  6. oracle 定时任务例子【项目例子】
  7. web前端到底怎么学?干货资料!
  8. Linux基础(2)-基础命令和bash的基础特性(1)
  9. 【JAVA笔记】线程(1):多线程的介绍和实现
  10. 安卓开发 登录用户信息缓存_Firefox 将向用户警告被泄露的登录信息
  11. CCNA Cisco 安全配置
  12. macOS镜像下载(ISO、DMG)
  13. ⑤初识java:打印日历
  14. 企业网中nextcloud与iRedmail邮件系统的配合
  15. 如何创建sis文件——PKG文件格式
  16. 三个数中寻找最大值的5种方法-C语言实现
  17. 免费下载有声读物获取您自己!
  18. 安装SQL Server 2000时出现“以前的某个程序安装已在安装……”
  19. Python爬取豆瓣网影评展示
  20. AxiomSL任命David Weber为首席运营官兼首席财务官以应对快速的全球增长

热门文章

  1. 【KMP】从原理上详解next数组和nextval数组
  2. BaseActivity 中使用广播接收器时,onReceive 会多次执行
  3. playbook简单使用
  4. aspx.net响应点击事件(页面button的onclick事件)
  5. 「手机秒变照片传送门!使用 Flask 打造你的个人云相册!」
  6. b级计算机考试在线试题及答案,计算机等级考试一级B测试题及参考答案
  7. 实验9-10 平面向量加法(15分)
  8. 八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)...
  9. KETTLE 请求HTTPS接口
  10. 机器学习实战之支持向量机(SVM)(三)SMO高效优化算法