[教學]MD HACK 紅屏CHECKSUM修復教學 BY 闇影旅團團長KRIZAL
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html[原創][教學]MD HACK 紅屏CHECKSUM修復教學
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
◆日期:2007 11/18 (日)
◆組織: DARK SHADOW GAME HACK TEAM
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
接著我會慢慢收手,今天上線剛好收到疾風的PM,
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
講解一下MD CHECKSUM的修正方法。
(以下方法不適用於MD版 洛克人,
MD 洛克人驗證需詳細分析過才能下定論,
目前對HACK漸漸沒興趣,所以應該不會去弄了)
首先我們先談談並不是所有rom修改後,
都會檢查checksum強制進入紅屏,
此方法也不是適用於所有rom(例如:rockman),
大至少8~9成以上適用。
好了 工欲善其事 必先利其器,
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
準備好後,我們要了解以下幾點。
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
3.MD ROM 校驗數據在於$200以後到ROM結尾。
現在我們來舉例吧,學習最快的方法就是舉例子:
例如我以很久以前我hack的螞蟻騎士作為例子,
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
我們就將rom裡面分為8bit和16bit。
從$200開始雙數為8bit單數為16bit,
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
首先我們先到$18E看checksum檢驗數據,
我們會看到3C 52,好! 記下來。
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
OK現在用模擬器開啟ROM看看,紅屏伺候。
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
剛剛還記得檢驗數據嗎?沒錯就是3C52,
好! 現在來計算修復checksum吧,
首先我們要將00 00 改為 4e 71,而且我們又了解
此checksum機制是ADD演算法,所以我們多加了4E 71,
就要在CHECKSUM驗證上多還給它,
所以將驗證數據加上NOP機器碼數據:
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
再用模擬器測試,ok 紅屏消失了。
就是那麼簡單。此時你應該還會有其他疑問,
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
先將$FF FF-$99A8=$6657,
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
先將之前的修改還原,或是重新開一個相同的rom,
將rom地址$BBBE6填入數據EA 98,
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
去下載工具。
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
相信你也有所收穫。回文是給作者最大的回應,
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
OK 忙碌去~
P.S.
1.歡迎轉載並保持文章完整性,並署明
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
http://www.superworldz.cn/thread.php?fid-12.html
2.EZ轉載禁止。
[ 本帖最后由 疾风之狼 于 2009-3-13 18:06 编辑 ] 那如果hack了好幾處地方,怎麽計算? 原帖由 money_114 于 2009-3-12 22:20 发表 http://bbs.emu618.com/forum/images/common/back.gif
那如果hack了好幾處地方,怎麽計算?
有个工具的,老狼的网盘有下 原帖由 money_114 于 2009-3-12 22:20 发表 http://bbs.emu618.com/forum/images/common/back.gif
那如果hack了好幾處地方,怎麽計算?
此checksum算法計算到檔尾,
就算更改了某一處,也須計算到檔尾,
多處處理方法相同。 工具:
http://bbs.emu618.com/forum/thread-95790-1-1.html 团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下, 原帖由 李伟 于 2009-3-13 14:16 发表 http://bbs.emu618.com/forum/images/common/back.gif
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
HELLO ,
需要用到逆向分析或是記憶體搜尋綜合運用,
前者你必須了解X86或甚至要了解SSE,
我當初hack 鬼泣4(DMC4)就有用到SSE2。
記憶體搜尋綜合運用就交給你思考囉,
給你個提示: "Difference Value"
有思考就有進步。 加油 工具:
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
页:
[1]