古詩詞大全網 - 成語查詢 - 修改GBA遊戲本身

修改GBA遊戲本身

如何Hack GBA ROM

作者:zhaosili(.zZ~~) 轉載請註明

本文假定妳已經了解80x86匯編(盡管指令集不同),並且會使用TRW2000(盡

管沒用到)之類對程序進行調試。

工具:

VisualBoyAdvance-1.5、HexWorkshop(或其它十六進制編輯器)、No$Gba

Debugger

ROM:GBA-302 - Dave Mirra Freestyle BMX 2 (E)

寫本文時筆者也是剛學會如何通過修改程序指令HACK GBA rom。(整整花了我

壹上午時間研究)如果妳不懂THUMB和ARM指令集的話(和我壹樣)就先看

No$Gba HELP中的CPU Reference部分,裏面有較為詳細的介紹。在我所HACK的

這個rom用的是THUMB。Hack的目標是時間無限(盡管在遊戲中如果這樣改就相

當於遊戲無法結束)。

首先,用VisualBoyAdvance-1.5的Search for Cheats...功能找到時間的地址

為0200DBF0。(註:不要用Emucheat之類找,否則還要加上壹定的偏移地址,

很麻煩)

用No$gba載入ROM。選擇DEBUG->DEFINE BREAK/CONDITION。在文本框中填入

[0200DBF0]!,這樣壹個斷點就設置好了。(具體斷點怎麽設看No$gba的HELP)

這樣當0200DBF0中的數值改變時就會中斷下來。按F9(可能要多次)進入,正

常進行遊戲。當出現時間改變時就會中斷在0800A292。觀察上方有指令sub

r0,1h及str r0,[r1]估計時間就是在sub r0,1h處被減少的(為什麽?如果妳

會用trw2000經驗告訴妳就是這樣)。於是雙擊0800a28e這壹行,在sub處設斷。

按F9,遊戲正常進行壹兩秒後就會被中斷。此時寄存器r0=77h(十進制119,就是

119秒,在遊戲中顯示1:59)。按F7,到下壹條指令str r0,[r1](r1=0200dbf0是

時間的地址),這條指令作用是使r1內對應地址所存的數值等於r0內的值(具

體看No$Gba HELP中的CPU Reference部分)。可見要使時間無限只要將sub

r0,1h改掉,r0內的數值就不會變,0200dbf0處的數值也就不會變。我選擇將

sub r0,1h改為sub r0,0h(在sub上點右鍵,選change instrution,填入sub

r0,0h)。將斷點刪除,按F9進入遊戲,時間是不是不會減了呢?

接下來就要改rom了,先記下沒修改前的機器code,就是0800xxxx旁邊的數值

(應該是6808 3801 6008 6810)。然後記下改後的機器code,應為6808 3800

6008 6810。把高低位對調,對調完後應該是0868 0138 0860 1068和0868

0038 0860 1068。用HexWorkshop打開rom,查找0868 0138 0860 1068。找到

後修改為0868 0038 0860 1068。存盤。用VisualBoyAdvance-1.5載入play看

看,時間是不是無限了。收工。

有什麽問題歡迎***同探討,我的QQ:32743622