设为首页收藏本站

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

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

  [复制链接]

签到天数: 2012 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html! R) @8 O0 D0 Q
6 Y' S# f% J: f3 l( j' r
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 6 Q' R+ v  V" Q) V$ S: G
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
5 _; v8 O. G! E2 H' e4 Q" n8 k
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL $ E: r0 M- L- n
◆日期:2007 11/18 (日)
' O9 g% i. r' m$ D1 Z◆組織: DARK SHADOW GAME HACK TEAM 9 m& W; u8 E% K

+ X0 G) B% \: Y4 V; p
' W6 z" @' H. k4 dMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, ) C* R: M7 X" ]+ l  N' v' I7 }$ @
接著我會慢慢收手,今天上線剛好收到疾風的PM,
5 g% R: \% @. {1 y- N  E7 x5 |$ `問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
" M, T6 j1 w- n  B7 T* E$ a沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 / A8 R9 F' g+ I8 O0 r5 t9 f# {
講解一下MD CHECKSUM的修正方法。 6 }/ ~" _& b0 ]
(以下方法不適用於MD版 洛克人,
0 i/ }% b, B  a/ X9 r. RMD 洛克人驗證需詳細分析過才能下定論, # K4 d$ F  R) e; F2 D/ G) D
目前對HACK漸漸沒興趣,所以應該不會去弄了)
# c0 X, j' s1 Q' n
& ~3 F- i9 m2 Y: F* Q6 Y! `( i
; T. J! d, B1 g; i首先我們先談談並不是所有rom修改後, % I4 C$ T9 |8 R: l( R. b! }
都會檢查checksum強制進入紅屏,
) u, ^  \* J: \6 }# e0 e此方法也不是適用於所有rom(例如:rockman),
  K8 n* U' H; z4 U( n; `* b大至少8~9成以上適用。
) q* F! c0 n+ V% k% g! ?2 V. P( s3 V$ h$ S, E" v
好了 工欲善其事 必先利其器,
& Z0 Y+ U5 H0 f% [# g3 Q2 D$ C準備工具 16進位編輯器 + 你要改的rom + md 模擬器, : h1 ~; J* U8 h0 c. |7 ~+ q' e
準備好後,我們要了解以下幾點。 3 q: }1 F4 Z0 }' p3 ^
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 . P- k  h0 u) e3 r
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
- \4 e( m' W  [$ V& U; {# g- b3 ?$ W3.MD ROM 校驗數據在於$200以後到ROM結尾。 . H) |; e. Z. a' j

- N9 o4 S& x7 z$ f現在我們來舉例吧,學習最快的方法就是舉例子:
3 X  V* a$ ?. F  e; M: t2 g& d例如我以很久以前我hack的螞蟻騎士作為例子,
0 [" l6 B4 q/ K) _( a- W$ w& c1 e首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
$ B3 ]+ d) r: A$ @
$ w% I0 I, \' F由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
5 g) c' i  ?' c8 H1 C- c6 v我們就將rom裡面分為8bit和16bit。
9 K' `, b8 t& O從$200開始雙數為8bit單數為16bit,
( f( F! e6 s" d# E3 o: n4 s( e好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. 1 J7 @2 e/ M' v
首先我們先到$18E看checksum檢驗數據, 5 F6 i5 A( r- A% e/ v8 t
我們會看到3C 52,好! 記下來。 . r+ W% u9 q. B) ^% I8 _
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
; H& ^# P2 F3 f: m% ROK現在用模擬器開啟ROM看看,紅屏伺候。 & d0 l& h( Z* o9 R- o. [# |  w
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 * @+ N$ `2 a) X( _( z

0 ^3 e0 D5 X7 j: C; X, W# F9 T剛剛還記得檢驗數據嗎?沒錯就是3C52, - T8 p" p. I% `5 L' s
好! 現在來計算修復checksum吧,
8 }2 o7 e& \5 }0 R8 F首先我們要將00 00 改為 4e 71,而且我們又了解
. ^; X+ K: e8 o" N) q: e0 i* V此checksum機制是ADD演算法,所以我們多加了4E 71, 4 |& Z  \' K5 R' p
就要在CHECKSUM驗證上多還給它, % Q! U, Q, p7 q7 p% {/ {& W
所以將驗證數據加上NOP機器碼數據:
: m* N7 D. e/ t: x$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
+ G% x* m% C/ k# G. u: Q& Q) {' [再用模擬器測試,ok 紅屏消失了。
) J. U/ v$ K. f& V; r1 V, i
  c" c1 }6 g8 I! A: ?( U; C
( y# M7 R& k, ?( d* m; a- Y就是那麼簡單。此時你應該還會有其他疑問,
& s6 n+ M+ Y( V% s如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 , E4 R: u$ d2 C
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 ( ]& |: j& Y% n/ U2 o
先將$FF FF-$99A8=$6657, 7 }9 [% h! w! V7 O" n( ^+ b5 j
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 2 x$ L$ N9 o4 n! q8 C* H
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 7 y1 {( K$ ?0 P
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 2 n7 D& i8 g$ v! }! N& M
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
) J- W1 b8 W5 G) G1 A/ D先將之前的修改還原,或是重新開一個相同的rom, ! n6 v% c" N/ i# m$ G) D( h
將rom地址$BBBE6填入數據EA 98,
4 }6 J8 m3 c; b% l然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
5 e: |0 j2 P# j. D' v. [% f* i0 L( |7 P  o  h2 I( w$ b5 V
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, ; a) n! l6 t; R7 F5 |4 B6 h
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 8 f/ A, g( [2 l" C7 v' j( G

, @9 @' m$ Y- v  |9 r: j6 ^. ~  O$ J1 R+ K. T, `: \
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, % N1 s- ^9 a% h" ~( b5 W
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 3 a! [* o9 R- L
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
  k- @- z9 s3 R  k# h7 w一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 3 k3 E( E, |& l+ E5 e* q; _
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 ( p5 N5 Y6 a, P# g/ S; }7 z
去下載工具。
" d2 C3 a$ G% j1 v& X; o7 [% v$ L9 J: t: w2 R9 v
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
9 E6 |, C$ L' g相信你也有所收穫。回文是給作者最大的回應, 8 r7 R) r% _  [0 L
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
( n: L0 T$ @- e0 u( f) h
& a: D& |: r" W& Z3 `/ ROK 忙碌去~
% G1 _  ^1 E$ K+ f" O/ U+ L. c
) `  X) e2 n5 R# |. O5 pP.S.
# i* `2 t* a% ]# l
0 w, h: V7 b3 A! A. Z1.歡迎轉載並保持文章完整性,並署明 5 I  h' F) }9 Z9 V' V
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 & x% _% r- k$ q' j4 I6 f5 k: H
http://www.superworldz.cn/thread.php?fid-12.html
1 F* O) z4 h( s( R4 z7 e* D% \. V- R- M0 s' v, O
2.EZ轉載禁止。
6 H4 w1 l. P: R: z, o1 R
[ 本帖最后由 疾风之狼 于 2009-3-13 18:06 编辑 ]

本帖子中包含更多资源

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

×

该用户从未签到

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

使用道具 举报

该用户从未签到

发表于 2009-3-13 00:21:48 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 8 b7 {1 _3 R. j9 t* ?- `
那如果hack了好幾處地方,怎麽計算?

6 X0 u; B$ f. V有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 # R6 {# P9 c% D- Q+ b) w
那如果hack了好幾處地方,怎麽計算?
' F/ {8 D# S( q& v; K3 }
此checksum算法計算到檔尾,; r( D! t7 a% ~
就算更改了某一處,也須計算到檔尾,4 \5 z7 u5 E- l! K; o1 A. Y
多處處理方法相同。
回复

使用道具 举报

该用户从未签到

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

使用道具 举报

签到天数: 82 天

[LV.6]常住居民II

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

使用道具 举报

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表
5 u. b" i% K1 b, T0 \/ @团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

: J  R9 n0 [' k) z! v/ I; \HELLO ,
1 D; [$ s4 f: s2 f需要用到逆向分析或是記憶體搜尋綜合運用,7 H! s5 J1 h6 L/ r) v) L. X7 B' {& I
前者你必須了解X86或甚至要了解SSE,
' p2 ^. ~; ~$ Y: Z2 [我當初hack 鬼泣4(DMC4)就有用到SSE2。
+ I( F6 B* v% a- m9 l& x
* U  `0 A6 |& F" P記憶體搜尋綜合運用就交給你思考囉,/ b; V2 M5 d) P+ p' x/ d  G
給你個提示: "Difference Value"( w# U: x+ k' w" J7 o4 w- j
有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:1 |( S8 z# H( H5 D! y1 G/ Y$ H
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-7-16 00:36

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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