前言:
這個游戲確實是蠻有意思的,勾起了我曾經想寫小說的夢想。
准備:
1.小說家模擬器1.1.8
2.IDA
3.IL2cppdumper
4.MT管理器
過程:
一、dump出cs文件
1.看lib文件夾內有il2cpp文件,於是祭出神器il2cppdumper,下載地址
2.下載成功後,雙擊Il2CppDumper.exe,先選擇so,然後選擇dat文件(在這之前記得把這兩個文件從游戲安裝包裡提取出來)
二、IDA分析
1.首先把我們的so拖進ida,然後左上角加載腳本,並選擇好我們剛才dump的script.json(方便我們分析函數)。
2.等待ida加載,這時打開我們dump好的dump.cs文件,搜索get_money,並復制RVA地址0x347B5C- // RVA: 0x347B5C Offset: 0x347B5C VA: 0x347B5C
- public static long get_Money() { }
- // RVA: 0x347BE8 Offset: 0x347BE8 VA: 0x347BE8
- public static void set_Money(long value) { }
複製代碼 3.回到IDA,按G鍵跳轉地址,如果這時IDA還沒加載到這裡,可以按下C鍵讓它提前顯示出來,然後我們直接採用暴力賦值法,Ctrl+Alt+k進行修改(同時需要提醒一下,因為我們改了大量金幣,這個游戲不知道怎麼判斷的,房東阿姨那裡會說我們破產了,沒關系,點免租七天就可以一直玩下去了,只不過是要每天交房租)
4.接著回到dump.cs文件中,搜索reward,定位到這個函數中,很明顯這是和廣告相關的函數,其中的HandleReward是關鍵函數,同樣復制RVA地址(這一步操作完之後需要斷網玩才能獲得獎勵)- public class ADController : MonoBehaviour // TypeDefIndex: 3847
- { //廣告控制
- // Fields
- public static ADController Instance; // 0x0
- public string RewardType; // 0xC
- private bool IsRewardVideoAvailable; // 0x10
- public bool handleReward; // 0x11
- // Methods
- // RVA: 0x67BBB0 Offset: 0x67BBB0 VA: 0x67BBB0
- private void Start() { }
- // RVA: 0x67BC28 Offset: 0x67BC28 VA: 0x67BC28
- public void InitSDK() { }
- // RVA: 0x67BCA0 Offset: 0x67BCA0 VA: 0x67BCA0
- private void Update() { }
- // RVA: 0x67C518 Offset: 0x67C518 VA: 0x67C518
- public void ShowBannerAD() { }
- // RVA: 0x67C54C Offset: 0x67C54C VA: 0x67C54C
- public void HideBannerAD() { }
- // RVA: 0x67C580 Offset: 0x67C580 VA: 0x67C580
- public void DestroyBannerAD() { }
- // RVA: 0x67C5B4 Offset: 0x67C5B4 VA: 0x67C5B4
- public void UserOptToWatchAd(string RewardType) { }
- // RVA: 0x67BD2C Offset: 0x67BD2C VA: 0x67BD2C
- public void HandleReward(string paramHolder) { } //這個是關鍵函數,意思是處理獎勵
- // RVA: 0x67D5BC Offset: 0x67D5BC VA: 0x67D5BC
- private void increaseRewardCountByOne() { }
- // RVA: 0x67D64C Offset: 0x67D64C VA: 0x67D64C
- private void StopRewardVideoForAWhile() { }
- // RVA: 0x67D7A0 Offset: 0x67D7A0 VA: 0x67D7A0
- private bool CheckIfRewardAvailable() { }
- // RVA: 0x67C608 Offset: 0x67C608 VA: 0x67C608
- public bool UseItemToFreeAD() { }
- // RVA: 0x67D974 Offset: 0x67D974 VA: 0x67D974
- public void .ctor() { }
- }
複製代碼 5.打開IDA,跳轉地址,從這個函數內容我們不能看出什麼,於是點擊左上角的函數名,按下X鍵,查看調用,緊接著它就跳到上面一點點的位置。這這裡我們可以發現上方有一個判斷,很明顯就是判斷我們是否有沒有觀看完廣告,因此我們直接把它NOP掉,這樣它就會直接執行獎勵廣告的邏輯
6.再回到dump.cs文件,搜索get_light,復制RVA地址- // RVA: 0x3757C0 Offset: 0x3757C0 VA: 0x3757C0
- public static int get_Light() { }
- // RVA: 0x37B8B0 Offset: 0x37B8B0 VA: 0x37B8B0
- public static void set_Light(int value) { }
複製代碼 老樣子IDA跳轉,同樣暴力賦值完事
7.至於體力的修改暫時還沒找到關鍵函數,大佬們可以試一試
三、 簡單修改方法:
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
最後:
最後我們看一下效果:
|