NTR Debugger修改器是一個(gè)由國(guó)內(nèi)的玩家制作的一款3ds游戲的內(nèi)存編輯工具,在活用這個(gè)工具后可以達(dá)成修改游戲的類似金手指的效果,目前該工具正在完善,擁有基本的修改功能,目前提供使用測(cè)試中。目前NTR Debugger暫時(shí)只能運(yùn)行在emu4.5,換句話說也就是只能改一些系統(tǒng)要求4.5或以下的老游戲。
修改具體思路:
1、PC和3DS處于同一局域網(wǎng),打開NTR,連接3DS。
例如:connect('192.168.1.101', 8000)
2、然后輸入 listprocess() ,列舉目前運(yùn)行的進(jìn)程,
NTR會(huì)列舉出3ds運(yùn)行的所有進(jìn)程,很長(zhǎng)的一列。
一般情況下游戲進(jìn)程pid是0x25,位于倒數(shù)第二個(gè),但也不排除游戲退出之后進(jìn)程pid會(huì)變的情況,所以最好上來先查一遍。
3、顯示進(jìn)程內(nèi)存布局,命令是:memlayout(0x25),括號(hào)內(nèi)是進(jìn)程pid。
之后會(huì)顯示幾個(gè)分段,有起始地址和長(zhǎng)度。
0x08000000起始的區(qū)段為堆棧段,0x00100000起始的區(qū)段為數(shù)據(jù)代碼段,要找的地址一般在這兩個(gè)區(qū)域。
4、dump內(nèi)存。
如data(0x00100000, 0x10000, filename='data.bin', pid=0x25) ,即把在0x0010000起始的0x10000個(gè)字節(jié)保存到NTR目錄下。
要搜的區(qū)段只有第三步所述的兩個(gè),所以一般情況下起始填0x00100000或者0x08000000,長(zhǎng)度填第三步中顯示的區(qū)段長(zhǎng)度就好。
另外,因?yàn)橐容^數(shù)據(jù),所以建議重命名保存的文件名,如Data1.bin、Data2.bin等等。
5、搜索Dump出的文件,比較數(shù)據(jù)。
樓主沒有用原帖提供的search.py,機(jī)器沒裝python的環(huán)境。
用16進(jìn)制文件查看器比較就好,樓主平時(shí)hexworkshop用得比較習(xí)慣,其他像hxd,ultraedit也是可以的。
6、寫入內(nèi)存。write(0x00100000, (0x11, 0x22, 0x33, 0x44), pid=0x25) ,字節(jié)序列沒有什么限制,注意格式別寫錯(cuò)了就好。
例如:write(0x003c0a50, (0xff, 0xff), pid=0x25),這是解放之刃EXXiV金錢65535的命令(搗鼓了好久就找到這么一個(gè),樓主果然還是太菜了。。o(╯□╰)o)。
軟件介紹:
可以查看、修改應(yīng)用程序的內(nèi)存。
基于gw2.2,只支持emunand 4.5系統(tǒng),如果emunand里的系統(tǒng)版本大于4.5請(qǐng)重新用gw官方的launcher.dat進(jìn)行format emunand操作。
不支持神游。
另外,在游戲中按下X+Y可以彈出一個(gè)菜單,不過目前截圖功能還沒做好。
NTR Debugger 3DS游戲基礎(chǔ)修改圖文教程
↑在遊戲中先獲得一枚金幣
↑開啟NTR Debugger 中的ntrclient 應(yīng)用程式 ,如圖 輸入 connect('192.168.1.101', 8000) 連上你的 3DS IP
↑連上IP後,接著再查看內(nèi)存的分佈,輸入 memlayout(0x25) #,圖中我選size最大的去dump
->14000000 - 1784ffff , size: 03850000
↑dump好第一次之後你會(huì)看到NTR Debugger目錄底的有剛dump出來的 data.bin ,接著開啟下方的search 展開搜尋
↑load剛獲得一枚金幣的 data.bin ,輸入 start byte 或 start word 或 start dword 開始新的搜尋
想尋找的數(shù)值比較小,於是我輸入 start byte ,接著輸入 search 0x01 搜尋 ,搜尋完後會(huì)告訴你有多少結(jié)果
↑獲得第三枚金幣 ->dump->load->search 0x3
↑試著獲取更多金幣 ->dump->load->search 0x9
按View查看還是都一樣
↑我們從第一個(gè)列出的位置 寫入數(shù)據(jù)到遊戲中,write 命令 寫入遊戲的內(nèi)存
write(0x168b5fa8, (0x0E, 0x27, 0x00, 0x00), pid=0x27) #
3DS的數(shù)據(jù)要相反來寫入,寫入後再輸入 data(0x168b5fa8, pid=0x25) # ,可以看到 0x168b5fa8 附近的value於畫面上
↑寫入後 回到遊戲中 右上角金幣就會(huì)是我們剛輸入的 9998 (0x270E)