綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[已解決] FGO.Tweaks.Managed.dll是怎樣對遊戲進行修改的

 關閉 [複製連結] 查看: 2527|回覆: 6|好評: 0
跳轉到指定樓層
樓主
demos1029 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2017-9-8 09:36

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 demos1029 於 2017-9-8 17:21 編輯

一直不明白FGO.Tweaks.Managed.dll是怎樣對遊戲進行修改的,Assembly-CSharp.dll和FGO.Tweaks.Managed.dll裏除了相互引用了一下,在檔案內並沒有引用相關類,像2個單獨的檔案一樣,有沒有大佬指點下思路。
有個想法是:戰鬥開始可能會有Notification,FGOTweak接受這個Notification開始工作,不過蒐索了並沒有Notification

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏1 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
 樓主| demos1029 | 收聽TA | 只看該作者
發表於 2017-9-8 15:41
本帖最後由 demos1029 於 2017-9-8 15:57 編輯

大概知道是怎么回事了,有兴趣的可以看一看FGOPatcher的实现
作者新写了FGO.Tweaks.Managed.dll,FGOTweak是一个静态类,修改的方法都在这个dll里面,在Assembly-CSharp.dll里需要修改的方法的地方加上FGOTweak.xxx(),就实现了修改
FGOPatcher则用ReiPatch实现了自动对Assembly-CSharp.dll打补丁
只要FGOTweak方法未失效,实际情况可以手动对Assembly-CSharp.dll进行修改实现版本更新。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
zw1983527 | 收聽TA | 只看該作者
發表於 2017-9-9 04:18
所以不用直接对Assembly-CSharp.dll进行修改了么?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
 樓主| demos1029 | 收聽TA | 只看該作者
發表於 2017-9-9 07:08
zw1983527 發表於 2017-9-9 04:18
所以不用直接对Assembly-CSharp.dll进行修改了么?

需要的,不让FGOTweak里的函数从哪执行
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
hiersword | 收聽TA | 只看該作者
發表於 2017-9-9 12:48
demos1029 發表於 2017-9-9 07:08
需要的,不让FGOTweak里的函数从哪执行

是的,所以修復補丁可能比直接修改來的容易
只要補全並修正AB檔案缺失的部分
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
 樓主| demos1029 | 收聽TA | 只看該作者
發表於 2017-9-9 13:22
hiersword 發表於 2017-9-9 12:48
是的,所以修復補丁可能比直接修改來的容易
只要補全並修正AB檔案缺失的部分
...

大大 能提示下FGOTewak是怎么修改ATK的吗? 从patch里看是把BattleServantData::getBaseATK()替换成FGOTweak.getBaseATK()。但是遍历整个Assembly-CSharp文件,都没有看到FGOTweak.getBaseATK()调用,也没有看到修改ATK的代码,然而确实倍攻生效了,就很迷。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
hiersword | 收聽TA | 只看該作者
發表於 2017-9-9 14:21
本帖最後由 hiersword 於 2017-9-9 14:24 編輯
demos1029 發表於 2017-9-9 13:22
大大 能提示下FGOTewak是怎么修改ATK的吗? 从patch里看是把BattleServantData::getBaseATK()替换成FGOTw ...

就算調用失敗了,代碼本身是系統可辨識的,所以即使替換失敗了也會發生效用,因為FGO.Tweaks那裡依然能正常引用,攻擊力修改失敗是因為最後的時候又回去引用BattleServantData::getBaseATK()的相關代碼,而這裡有反修改的部分,出錯了以後系統自行合理化的結果就是改10倍不會被檢測,而太高的倍數被這裡的代碼偵測,我想B站其實不是完全想找修改麻煩,但是太高調只好出手
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則