遊戲輔助 | 小朋友下樓梯 (C# 無限血量)
工具準備
Cheat Engine
Visual 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 70
AC
變成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