遊戲輔助 | 小朋友下樓梯 (C# 無限血量)
工具準備
Cheat EngineVisual Studio
行前準備
- 閱讀x86組合語言教學。
- 閱讀Cheat Engine基本教學。
- 閱讀x64dbg教學。
輔助構思
- 透過
Cheat Engine抓取血量基址與偏移量 - 透過
Cheat Engine抓取修改血量的地址並分析 - 使用
C#呼叫Win32API進行修改
找尋基址
- 開啟
down.exe程式

- 開啟
Cheat Engine - 選擇
down.exe程序 (00000C50-NS-SHAFT)

- 回到
down.exe - 並開啟一場新遊戲,並馬上按下暫停
- 回到
Cheat Engine - 新的搜尋
12(滿血量為12格)

- 回到
down.exe - 讓血量扣血,然後快速再次暫停
- 其血量格數為
7

- 回至
Cheat Engine - 再次搜尋
7 - 僅剩下一個地址
0064CD48(每次都會不一樣)

對該地址點擊兩下,新增至下方的作弊表內
對
0064CD48右鍵選擇Find out what writes to this address(找出是什麼改寫了這個地址)會開啟
The following opcodes write to 0064CD48視窗

- 回到
down.exe - 讓血量扣血
- 其血量格數為
3 - 回至
Cheat Engine - 找尋
The following opcodes write to 0064CD48視窗內為sub的動作
註:
sub是組合語言的減的動作

- 點擊該筆資料
1 | EAX=00000000 |
- 這邊要知道的是做
sub這個指令是在哪個地址,發現是00406311 - 這邊可以判定為,當我碰到上方尖刺的時候,扣血是這地址做的動作

- 開啟
x32dbg,並開啟down.exe

- 反匯編視窗中按下
Ctrl + G輸入00406311,會跳轉到00406311位址

- 對其位址
00406311點選在資料視窗中跟隨(F)->選定的地址(S)

- 在最下面的資料視窗會看到
00406311的十六進位資料為83 AC 08 70

00406311 | 83AC08 70110000 05 | sub dword ptr ds:[eax+ecx+1170],5 |按下空白鍵將指令修改為
add dword ptr ds:[eax+ecx*1+0x1170], 0x5,按下確定修改後如下
1
2
3
4//修改前
00406311 | 83AC08 70110000 05 | sub dword ptr ds:[eax+ecx+1170],5 |
//修改後
00406311 | 838408 70110000 05 | add dword ptr ds:[eax+ecx+1170],5 |注意最下面的資料視窗會看到
00406311的十六進位資料為83 84 08 70AC變成84
注意:變動的位置是第二個位置,所以需要修改的位置為
00406312

F9執行程式- 開啟一場新遊戲,開始遊玩
- 發現都不會因為扣血導致遊戲結束
註:如果有興趣,可以開啟
Cheat Engine,去監控血量數值,會發現血量一直在向上加;這就是sub改成add的效果。
編寫輔助
沿用上一章節的DownCheat project程式碼來進行修改
- 調整
DownHelper
1 | using System; |
- 開啟
Form1.cs[設計] - 新增一個
CheckBox

雙擊
CheckBox建立CheckedChanged事件撰寫程式
1 | private Boolean add_blood = false; |
關閉
x32dbg關閉所有
down.exe開啟新的
down.exe運行測試
勾選
CheckBox開始遊玩遊戲,發現血量不會扣血
恭喜無限血量的修改完成
註:如要分享
.exe檔案,請到專案目錄下的Debug資料夾內,將其全部複製給別人即可。注意因為使用C#撰寫,對方的電腦要有安裝.NET Framework才可執行。
註:以上參考了
小朋友下樓梯輔助程式
Download Games
