逗游網(wǎng):值得大家信賴的游戲下載站!
發(fā)布時間:2021-05-12 11:56 來源:NGA 作者:琉璃雪羽
愛夏的煉金工房目前已經(jīng)推出DX加強(qiáng)版,游戲中如何更改時間?下面給大家分享一個愛夏的煉金工房DX CE修改教程
Part.1 你需要準(zhǔn)備工具
(大名鼎鼎的CheatEngine,下文簡稱CE),官網(wǎng)在這里
注意,如果你不是在patreon上贊助過作者的話,直接下載的安裝包會捆綁2個軟件,安裝的時候注意跳過安裝推廣軟件?;蛘咦孕袑ふ移渌惭b包。
Part.2 定位時間地址
先吐槽一句,Gust的程序員腦洞十分之大。目前測試的A14。
A14工坊世界的的日歷算法類似日本公司的財年。每年4月1日到本年3月30日為一年(是的,工坊世界先過4月,然后到12月,再到1月2月3月,3月30日后是第二年,非常反直覺),一年12個月,每個月固定30天。
但是年份在內(nèi)存中的記錄方式卻是按照自然年開始記錄的,并且包含了最開始并不能游玩的1月1日也就是第零年1月1日,它在內(nèi)存中被記錄第0天,第一年4月1日則是第90天。
雖然作為玩家,你根本不能游玩第0天到第89天的內(nèi)容。
第一步:
在開啟游戲的情況下打開CE,在CE中選擇你的游戲進(jìn)程
第二步:
根據(jù)我在吐槽中給出的信息,計算出當(dāng)前日期在內(nèi)存中實際儲存的值。在CE中搜索該值,會有多個結(jié)果。
第三步:
睡一覺,改變?nèi)掌谥?,再次搜索。實際上老手這時候已經(jīng)能看出應(yīng)該用哪個地址了。
第四步:
再一次篩選出3個地址,對于新手來說,最簡便的辦法就是試錯法。在地址上雙擊,逐個更改這3個地址,看哪個地址能順利變更游戲里的日期就行。
當(dāng)然風(fēng)險就是如果游戲內(nèi)置檢測(比如DOMO做的軒轅劍就會內(nèi)置檢測,你改錯內(nèi)存被抓到就會被DOOM工作室拒之門外)會被抓小辮子,就算不內(nèi)置檢測,改了錯誤的地址也可能會導(dǎo)致游戲意外跳出,所以務(wù)必存好檔再改。
如果你不想手工試錯,請接著往下看進(jìn)階處理辦法:
右擊地址,把篩選出的3個地址,全部附加監(jiān)視器,看是什么改寫了這個地址。
第五步:
可以看到可以看到036A3308這個地址,哪怕在游戲中不操作的情況下,依舊被改寫到起飛。那么這多半不是存儲日期信息的實際地址,而是一個用于顯示日期信息的地址或者是暫存的地址。排除。
第六步:
保持監(jiān)視開啟,再睡一天。
睡完之后,左側(cè)的監(jiān)視器開始檢測到內(nèi)存被修改的情況,先看左下方的036A3310,因為036A3308已經(jīng)被猜測為不可靠,所以附近的036A3310有沒有可能就是真實地址呢?但是睡了一天就讓036A3310被修改了3次,也有點(diǎn)懸。一般來說睡覺這種簡單的日期+1動作,應(yīng)該只變動1次。
雙擊036A3310的監(jiān)視信息,查看詳情。這里需要一點(diǎn)點(diǎn)匯編基礎(chǔ),沒有基礎(chǔ)也沒事,直接百度/谷歌就行。我也不是學(xué)程序的,全靠搜索。
可以看到是2個mov指令,來,百度關(guān)鍵詞:匯編 mov指令,[https://baike.baidu.com/item/MOV/56228441] 在這查到MOV指令的例子:[MOV EAX,#050aH ;將十六進(jìn)制數(shù)050a 傳送到通用寄存器eax中]
那紅框部分的意思就是:
1402B56F8 - mov eax,[rdi+48]//把[rdi+48]地址里的數(shù)傳遞到eax寄存器。
1402B56FB - mov [rdi+50],eax//把eax寄存器里的數(shù)傳遞到[rdi+50],這就是我們檢測到036A3310內(nèi)存改動的地方。
那rdi是多少呢,看下面的表,RDI=036A32C0。所以[rdi+48]=36A 3308,[rdi+50]=36A 3310
那完犢子了,剛剛分析了36A3308很可能是個臨時寄存,這下好了36A3310是從這個臨時寄存?zhèn)鬟f來,所以36A3310這個地址,很可能也不是存放日期信息的原始地址。
排除036A3308和036A3310之后,那就只剩141B5CA00一棵獨(dú)苗了。如果是單純的想要調(diào)整日期,修改141B5CA00這個地址就可以了,但是都到這一步了,不繼續(xù)往下學(xué)學(xué)嗎?? 要在此止步煉金術(shù)的研修嗎? ...
右擊需要修改的地址,選擇修改數(shù)值
輸入92,即為調(diào)整到第一年4月2日
調(diào)整完成
第七步:
現(xiàn)在看141B5CA00的兩條寫入??梢钥吹竭@兩條命令的位置非常接近,一個操作是1403610C0,一個操作是1403610CC,非常接近。雙擊這兩條修改記錄,看修改的詳細(xì)信息。其實詳細(xì)信息里基本就能看到,1403610C0往下走幾條就是1403610CC了。
先看第一條[1403610C0 - add [rcx],edx],右擊他,選擇在在反匯編程序中顯示地址。開啟反匯編。畫橙色框框的地方就是從1403610C0到1403610CC
來看看這堆指令大概的意思(我也是猜的,誰讓我是個財務(wù),并不懂計算機(jī)。)
Atelier_Ayesha.exe+3610C0 - 01 11 - add [rcx],edx 在[rcx]地址的數(shù)據(jù)上加上edx
Atelier_Ayesha.exe+3610C2 - BA 00000000 - mov edx,00000000 將edx改為0
Atelier_Ayesha.exe+3610C7 - 8B 01 - mov eax,[rcx] 在[rcx]地址的數(shù)據(jù)寫入eax寄存器
Atelier_Ayesha.exe+3610C9 - 0F48 C2 - cmovs eax,edx 看不懂……
Atelier_Ayesha.exe+3610CC - 89 01 - mov [rcx],eax 在eax寄存器寫入[rcx]地址
這里的[rcx]可以參考右邊監(jiān)視器中的數(shù)據(jù),在指令執(zhí)行的時候,這個[rcx]實際上就是我們正在監(jiān)視的內(nèi)存地址141B5CA00。
那么到這就可以猜測了,add命令很明顯是游戲變動日期的操作,edx寄存器中很可能是選擇的睡覺天數(shù),如果睡1天,edx就是1,睡2天edx就是2。
那么,只要我們劫持[Atelier_Ayesha.exe+3610C0 - 01 11 - add [rcx],edx ]這條指令,把他替換成nop,就可以讓日期永遠(yuǎn)不前進(jìn)。
替換后的指令明細(xì)可以在這里查詢
-----------------------完結(jié)的分割線-------------------------------
有的新同學(xué)可能要問了,哎我既然能找到地址,為什么要費(fèi)盡去劫持替換程序的匯編碼呢?
因為在大多數(shù)的游戲里,內(nèi)存地址是動態(tài)分配的,每一次運(yùn)行游戲,存儲日期的內(nèi)存地址都不一樣。如果你只保存內(nèi)存地址信息,下一次再想修改日期時,需要重新定位內(nèi)存地址。
而匯編碼是游戲程序的底層,只要游戲主程序不更新,匯編修改永遠(yuǎn)有效,你大可以把修改后的匯編導(dǎo)出,留待下一次需要的時候使用。
甚至你可以把匯編修改導(dǎo)出為腳本,做出一個小程序,CE本身就內(nèi)置了一個導(dǎo)出腳本程序的功能。沒錯,你也可以當(dāng)楓靈月影,做自己的修改器。
《罪惡都市》決定版數(shù)據(jù)在Steam后臺更新
《Apex英雄》日蝕戰(zhàn)斗通行證預(yù)告 全新傳說皮膚等
《霍格沃茨之遺》登上Steam愿望單排行榜榜首
《布蘭博:山丘之王》試玩Demo上線 2023年發(fā)售
《刀劍神域》“今日正式發(fā)售” 官方發(fā)布周年紀(jì)念禮盒
《七龍珠:破界斗士》公布賽季更新路線圖
《獵天使魔女3》通過NS模擬器 在PC上以4K/60幀運(yùn)行
《刺客信條:幻景》樂曲“Into the light”欣賞
《獵天使魔女3》首日更新 改進(jìn)防走光模式調(diào)整平衡
《生化危機(jī)8》云游戲版發(fā)售預(yù)告公布 今日登陸Switch