爱夏的炼金工房DX时间修改方法 CE修改教程分享

时间:2022-11-19 07:31

爱夏的炼金工房目前已经推出DX加强版,游戏中如何更改时间?下面给大家分享一个爱夏的炼金工房DX CE修改教程

爱夏的炼金工房DX CE修改教程分享

Part.1 你需要准备工具

(大名鼎鼎的CheatEngine,下文简称CE),官网在这里

注意,如果你不是在patreon上赞助过作者的话,直接下载的安装包会捆绑2个软件,安装的时候注意跳过安装推广软件。或者自行寻找其他安装包。

Part.2 定位时间地址

先吐槽一句,Gust的程序员脑洞十分之大。目前测试的A14。

A14工坊世界的的日历算法类似日本公司的财年。每年4月1日到本年3月30日为一年(是的,工坊世界先过4月,然后到12月,再到1月2月3月,3月30日后是第二年,非常反直觉),一年12个月,每个月固定30天。

但是年份在内存中的记录方式却是按照自然年开始记录的,并且包含了最开始并不能游玩的1月1日也就是第零年1月1日,它在内存中被记录第0天,第一年4月1日则是第90天。

虽然作为玩家,你根本不能游玩第0天到第89天的内容。

第一步:

在开启游戏的情况下打开CE,在CE中选择你的游戏进程

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第二步:

根据我在吐槽中给出的信息,计算出当前日期在内存中实际储存的值。在CE中搜索该值,会有多个结果。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第三步:

睡一觉,改变日期值,再次搜索。实际上老手这时候已经能看出应该用哪个地址了。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第四步:

再一次筛选出3个地址,对于新手来说,最简便的办法就是试错法。在地址上双击,逐个更改这3个地址,看哪个地址能顺利变更游戏里的日期就行。

当然风险就是如果游戏内置检测(比如DOMO做的轩辕剑就会内置检测,你改错内存被抓到就会被DOOM工作室拒之门外)会被抓小辫子,就算不内置检测,改了错误的地址也可能会导致游戏意外跳出,所以务必存好档再改。

如果你不想手工试错,请接着往下看进阶处理办法:

右击地址,把筛选出的3个地址,全部附加监视器,看是什么改写了这个地址。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第五步:

可以看到可以看到036A3308这个地址,哪怕在游戏中不操作的情况下,依旧被改写到起飞。那么这多半不是存储日期信息的实际地址,而是一个用于显示日期信息的地址或者是暂存的地址。排除。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第六步:

保持监视开启,再睡一天。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

睡完之后,左侧的监视器开始检测到内存被修改的情况,先看左下方的036A3310,因为036A3308已经被猜测为不可靠,所以附近的036A3310有没有可能就是真实地址呢?但是睡了一天就让036A3310被修改了3次,也有点悬。一般来说睡觉这种简单的日期+1动作,应该只变动1次。

双击036A3310的监视信息,查看详情。这里需要一点点汇编基础,没有基础也没事,直接百度/谷歌就行。我也不是学程序的,全靠搜索。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

可以看到是2个mov指令,来,百度关键词:汇编 mov指令,[https://baike.baidu.com/item/MOV/56228441] 在这查到MOV指令的例子:[MOV EAX,#050aH ;将十六进制数050a 传送到通用寄存器eax中]

那红框部分的意思就是:

1402B56F8 - mov eax,[rdi+48]//把[rdi+48]地址里的数传递到eax寄存器。

1402B56FB - mov [rdi+50],eax//把eax寄存器里的数传递到[rdi+50],这就是我们检测到036A3310内存改动的地方。

那rdi是多少呢,看下面的表,RDI=036A32C0。所以[rdi+48]=36A 3308,[rdi+50]=36A 3310

那完犊子了,刚刚分析了36A3308很可能是个临时寄存,这下好了36A3310是从这个临时寄存传递来,所以36A3310这个地址,很可能也不是存放日期信息的原始地址。

排除036A3308和036A3310之后,那就只剩141B5CA00一棵独苗了。如果是单纯的想要调整日期,修改141B5CA00这个地址就可以了,但是都到这一步了,不继续往下学学吗?

− 要在此止步炼金术的研修吗? ...

右击需要修改的地址,选择修改数值

爱夏的炼金工房DX时间修改方法 CE修改教程分享

输入92,即为调整到第一年4月2日

爱夏的炼金工房DX时间修改方法 CE修改教程分享

调整完成

爱夏的炼金工房DX时间修改方法 CE修改教程分享

第七步:

现在看141B5CA00的两条写入。可以看到这两条命令的位置非常接近,一个操作是1403610C0,一个操作是1403610CC,非常接近。双击这两条修改记录,看修改的详细信息。其实详细信息里基本就能看到,1403610C0往下走几条就是1403610CC了。

先看第一条[1403610C0 - add [rcx],edx],右击他,选择在在反汇编程序中显示地址。开启反汇编。画橙色框框的地方就是从1403610C0到1403610CC

爱夏的炼金工房DX时间修改方法 CE修改教程分享

来看看这堆指令大概的意思(我也是猜的,谁让我是个财务,并不懂计算机。)

Atelier_Ayesha.exe+3610C0 - 01 11 - add [rcx],edx 在[rcx]地址的数据上加上edx

Atelier_Ayesha.exe+3610C2 - BA 00000000 - mov edx,00000000 将edx改为0

Atelier_Ayesha.exe+3610C7 - 8B 01 - mov eax,[rcx] 在[rcx]地址的数据写入eax寄存器

Atelier_Ayesha.exe+3610C9 - 0F48 C2 - cmovs eax,edx 看不懂……

Atelier_Ayesha.exe+3610CC - 89 01 - mov [rcx],eax 在eax寄存器写入[rcx]地址

这里的[rcx]可以参考右边监视器中的数据,在指令执行的时候,这个[rcx]实际上就是我们正在监视的内存地址141B5CA00。

那么到这就可以猜测了,add命令很明显是游戏变动日期的操作,edx寄存器中很可能是选择的睡觉天数,如果睡1天,edx就是1,睡2天edx就是2。

那么,只要我们劫持[Atelier_Ayesha.exe+3610C0 - 01 11 - add [rcx],edx ]这条指令,把他替换成nop,就可以让日期永远不前进。

爱夏的炼金工房DX时间修改方法 CE修改教程分享

爱夏的炼金工房DX时间修改方法 CE修改教程分享

替换后的指令明细可以在这里查询

爱夏的炼金工房DX时间修改方法 CE修改教程分享

-----------------------完结的分割线-------------------------------

有的新同学可能要问了,哎我既然能找到地址,为什么要费尽去劫持替换程序的汇编码呢?

因为在大多数的游戏里,内存地址是动态分配的,每一次运行游戏,存储日期的内存地址都不一样。如果你只保存内存地址信息,下一次再想修改日期时,需要重新定位内存地址。

而汇编码是游戏程序的底层,只要游戏主程序不更新,汇编修改永远有效,你大可以把修改后的汇编导出,留待下一次需要的时候使用。

甚至你可以把汇编修改导出为脚本,做出一个小程序,CE本身就内置了一个导出脚本程序的功能。没错,你也可以当枫灵月影,做自己的修改器。

标签:
随便看看
本类推荐
本类排行
热门标签

我国国家通讯社行不行啊细狗新年贺词祝福语2023年祝福语新年新年贺词新年贺词祝福语居家抗病毒小药箱除夕高速免费吗2022年除夕高速免费吗春联春联句子大全春联句子大全七字年夜饭十二道菜年夜饭十二道菜单年夜饭吃什么年夜饭吃什么菜吃年夜饭的寓意年夜饭黑芝麻菊花茶晒菊花茶腌腊肉送妈妈生日礼物汉白玉送闺蜜水钻送女人礼物爸爸生日送礼物送老公