逗游网:值得大家信赖的游戏下载站!

微信:doyo_game
关注逗游
单机首页 游戏库 排行榜 资讯 攻略 专题 合集 工具补丁 手机游戏 正版商城
所在位置:攻略中心 > 图文攻略 > 爱夏的炼金工房 ~黄昏大地之炼金术士~ DX > 正文

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

发布时间:2021-05-12 11:56 来源:NGA  作者:琉璃雪羽

 

爱夏的炼金工房目前已经推出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中选择你的游戏进程

第二步:

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

第三步:

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

第四步:

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

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

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

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

第五步:

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

第六步:

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

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

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

可以看到是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这个地址就可以了,但是都到这一步了,不继续往下学学吗?

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

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

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

调整完成

第七步:

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

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

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

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,就可以让日期永远不前进。

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

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

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

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

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

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

进入《爱夏的炼金工房 ~黄昏大地之炼金术士~ DX》专区
查看更多《爱夏的炼金工房 ~黄昏大地之炼金术士~ DX》攻略
标签: 
https://www.doyo.cn/article/442193复制本文地址
阅读本文后,您的心情是:(选择后可查看结果)
 
恶心
愤怒
强赞
感动
路过
无聊
雷囧
关注
今日关注游戏
游戏专题
IGN 9分以上作品 愿者上钩钓鱼的那点趣事 深冬之寒,来一起看看游戏中精美的雪景吧