EMU618社区

 找回密码
 立即注册
搜索
查看: 4040|回复: 7

[转载HACK教程] [教學]MD HACK 紅屏CHECKSUM修復教學 BY 闇影旅團團長KRIZAL

 关闭 [复制链接]

签到天数: 1759 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html+ n9 S; A5 W; v5 w" s9 \1 t
8 d* o: e7 ]# |2 o/ w
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 , J* I) _3 a0 g6 O) {6 G. H4 R
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 1 F" C6 ^* W1 P6 n, N
% g& Q6 _7 [) Q- M
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
! U* y* T/ o& B& F1 h6 {) }3 W◆日期:2007 11/18 (日)
/ `( e, `4 x* F+ S◆組織: DARK SHADOW GAME HACK TEAM
& d0 ^" H/ H% |4 G. w
) O# {' A+ |3 ~% z% [$ K
1 s7 \$ r- j& l7 A! x  M: x0 x# k& ]MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
4 Y2 q6 K6 Y3 _( d- x! T接著我會慢慢收手,今天上線剛好收到疾風的PM,
/ P5 P! }, g8 w$ `/ x問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
8 n. P: m0 v! W- I" G沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 ; V3 o: O4 |0 G6 |3 P
講解一下MD CHECKSUM的修正方法。 4 N9 u* W4 y) t8 ^5 K; D( [" w
(以下方法不適用於MD版 洛克人,
: k) p8 P0 U- m1 ], J7 yMD 洛克人驗證需詳細分析過才能下定論, $ ]5 Y; g8 |# r9 u; j
目前對HACK漸漸沒興趣,所以應該不會去弄了)
; e+ f& l. T% c( r; U7 m% j" u0 F
* i" M. h# \+ z; {0 o$ ^
6 f( w. ^( Y7 Q* e3 }+ i" ]9 [首先我們先談談並不是所有rom修改後,
; e$ E4 y* [- p( u5 h都會檢查checksum強制進入紅屏,
) Y/ T/ O4 t  |8 G6 R, L此方法也不是適用於所有rom(例如:rockman),
3 k7 J9 t6 F  S$ F3 T( K  F大至少8~9成以上適用。 ) T' S! ]: ?6 L3 g

( ^3 x# l7 v0 E4 ]0 g9 `' d5 T/ w好了 工欲善其事 必先利其器,
0 y- k' R, Y/ M! d/ ~準備工具 16進位編輯器 + 你要改的rom + md 模擬器, - |" G0 M* |9 R$ n( R4 q, P+ X! R) J
準備好後,我們要了解以下幾點。
; F. J( S) F) x& @" Y1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。   E0 Y. h1 T8 C$ H
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
0 m- @/ ?& ^! U% c9 y1 `3 i3.MD ROM 校驗數據在於$200以後到ROM結尾。 ' ?" {8 n# y/ s% J' Y- Y) M
0 Y- ~3 C* R: o5 f- |$ E
現在我們來舉例吧,學習最快的方法就是舉例子: " \, `+ p( w) E  e/ j0 z
例如我以很久以前我hack的螞蟻騎士作為例子, ' ~$ C3 C0 ~; p% c( B3 J3 X
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
, P" N% D, b4 x( h8 e& E  i$ c) i3 o8 R, p( `$ B
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, * f! E3 t8 B9 r. G; K& H) M
我們就將rom裡面分為8bit和16bit。
$ u1 @8 A3 o" o: d) {從$200開始雙數為8bit單數為16bit, 2 Y% X* m) l- v3 h7 a5 u3 D) G7 j
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. 5 Q6 v0 Q5 Z6 z
首先我們先到$18E看checksum檢驗數據, 9 o0 W7 p/ _2 @
我們會看到3C 52,好! 記下來。 - {7 s3 ]' y3 r/ L' l3 a/ d3 J
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 0 d" D2 y6 L6 H
OK現在用模擬器開啟ROM看看,紅屏伺候。
5 W" Q" R- p+ K5 G5 u- f沒錯 此ROM有檢驗機制,OK 現在來修復吧。 4 x( u4 W# k  r5 `; s
) B% Z$ |& f; N" o$ B1 F
剛剛還記得檢驗數據嗎?沒錯就是3C52,
/ L6 e0 Y% H+ z" \好! 現在來計算修復checksum吧,
. ^9 ~% a) }2 h首先我們要將00 00 改為 4e 71,而且我們又了解 # E* q4 f+ U$ v, s0 _
此checksum機制是ADD演算法,所以我們多加了4E 71, 2 p4 W. g+ [; J* X: q% c
就要在CHECKSUM驗證上多還給它, % J; L/ x) k7 ^9 f6 u
所以將驗證數據加上NOP機器碼數據:
2 V+ W/ T* b" B: R$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
- [+ T2 y/ [3 o4 L/ r再用模擬器測試,ok 紅屏消失了。
2 v) o1 B/ r/ m% C# L( U& z* ~, }8 \
1 O2 o1 U6 e2 H8 t) Y
9 H' g$ P& b5 d" S就是那麼簡單。此時你應該還會有其他疑問,
8 B  c7 i( |6 L% L9 V2 o7 Y如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
3 ^. U9 V5 }' d$ O3 P6 w我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 5 b- [1 ?9 n6 O& ?. o: E
先將$FF FF-$99A8=$6657, ; S' D7 i$ ?' P. p
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 * s5 g& P+ U) c# X& P: q
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? ( s! }8 z; _6 s7 O2 r) g
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
3 l; I+ L! O9 p9 }$ V; P檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
1 H1 i3 h4 S7 _$ ?9 B' e0 v% o( b先將之前的修改還原,或是重新開一個相同的rom,
+ v, A1 @: ^" V9 V0 e5 B; S將rom地址$BBBE6填入數據EA 98,
- u* `( a2 O9 Y5 m4 v然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 4 X" k0 S. V0 K. ]5 z) |" d# _

4 U" ^/ R2 k% M0 g5 C數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, 4 U8 i* C0 ]0 n4 L. ^+ [$ b9 |
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
+ T8 i. U- t+ b0 Z8 Q, o8 \: x3 x2 m: @( c
6 g, g5 K7 N( ^5 @. L7 }
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, 2 L. [! F1 Q7 G1 \4 p
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, / t6 v* G* d, C1 L
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
0 x; D2 z3 d/ I0 N! O5 U一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
4 |+ i/ X5 [7 l4 l+ p; b網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
/ M2 H1 d" Q- L去下載工具。 " E! [0 n$ h) i& s& {$ c/ x" ?
" U" L8 j' ~6 s
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, * O- F1 E% |% N0 |1 K, `1 W
相信你也有所收穫。回文是給作者最大的回應, 1 i: o0 n6 ?0 y  T
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^ 2 }+ h: f& R3 v

9 q/ w: R2 D2 v0 ~OK 忙碌去~
$ L, j8 ^9 W/ e8 F' F' ^9 Z. ?
% S/ v$ O5 b6 ~: XP.S.
1 A2 Q3 ^) v' ^* g1 A& b. k9 p7 q( k  a
1.歡迎轉載並保持文章完整性,並署明
- Y/ G* j4 _% g作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 ' u7 |( N3 V6 Q0 p6 g2 F, y' X
http://www.superworldz.cn/thread.php?fid-12.html
4 y1 y2 `, q, ~- o! b2 d
, S, B/ O! ^( g. m/ R7 a9 L2.EZ轉載禁止。

) @/ a6 e9 _- f2 l, `, W( _[ 本帖最后由 疾风之狼 于 2009-3-13 18:06 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

该用户从未签到

发表于 2009-3-12 22:20:13 | 显示全部楼层
那如果hack了好幾處地方,怎麽計算?

该用户从未签到

发表于 2009-3-13 00:21:48 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
" T/ E; Z, Y+ C2 ~0 t3 _那如果hack了好幾處地方,怎麽計算?
( V0 P4 l- u; ?
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 * e6 D3 [1 a. a: S9 W& p5 H
那如果hack了好幾處地方,怎麽計算?

: L# |- d0 N) ?: i此checksum算法計算到檔尾,3 z; e. A6 i) P- ?
就算更改了某一處,也須計算到檔尾,
0 X6 U: }4 L3 k" n1 H多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层

签到天数: 80 天

[LV.6]常住居民II

发表于 2009-3-13 14:16:59 | 显示全部楼层
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 0 D  Z2 X9 `7 f, @
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

5 A8 o: W- u5 h# j% `4 L0 ?) eHELLO ,- c: B% }% k: c
需要用到逆向分析或是記憶體搜尋綜合運用,. k% [1 Y! a* u
前者你必須了解X86或甚至要了解SSE,
+ v1 b, m+ ?: F/ s- h# Q我當初hack 鬼泣4(DMC4)就有用到SSE2。$ N$ D0 M, i" x' w1 U! N. t2 p

/ w4 B$ n- ^) O& M; W記憶體搜尋綜合運用就交給你思考囉,
6 |6 I- {2 C+ E( C4 Z- Y給你個提示: "Difference Value"' |. s5 z" I* g  r8 M" l" ?- |
有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:/ f% Y, q% R  [( i+ I- N: D
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2024-11-5 20:26 , Processed in 1.061523 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表