设为首页收藏本站

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

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

  [复制链接]

签到天数: 2052 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
) P4 z8 ]  n$ ]
& Q: l8 S, ?: W2 C3 E8 q# b
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
) O% V: s* q+ T6 q. fBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 6 g; B+ @4 _) ]* |' K# ?
; B4 Z' b$ ~% L3 W0 j! ~* |7 _/ l( [
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
: i: V  @4 h8 }: x◆日期:2007 11/18 (日) ) \1 W7 R, l% ^6 k2 J4 U7 V( e
◆組織: DARK SHADOW GAME HACK TEAM
, x# j" T% d) X" U, ?% Y, \" S. T) A' I

& q' P5 ^7 \9 j; ~MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, ! ]6 g! s( }1 s2 x6 z) f/ L7 u
接著我會慢慢收手,今天上線剛好收到疾風的PM, ! P1 t, T3 S. p$ Y1 K: r3 i
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
) T  [. H1 Q6 s/ r8 i# d3 w2 e沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
+ Z  k+ U) m, K( g講解一下MD CHECKSUM的修正方法。 ) p: @; M, [( n( q# b
(以下方法不適用於MD版 洛克人, 0 a- I6 x4 L+ c) P4 ?$ B6 k7 X
MD 洛克人驗證需詳細分析過才能下定論, . ~1 b+ |" L  s3 l. L3 L
目前對HACK漸漸沒興趣,所以應該不會去弄了)
4 d& Y4 M8 o5 V7 l
8 P6 [6 U4 g  \: y. i4 i* z6 H
# n. r3 E+ `/ {; [. i/ W8 F7 h首先我們先談談並不是所有rom修改後, 8 t) [- _8 Y# W* D
都會檢查checksum強制進入紅屏, 4 g3 ]  h* G' w' _; L  x# b
此方法也不是適用於所有rom(例如:rockman),
* \# M( Z% a0 e- R; B( L大至少8~9成以上適用。
: v! t2 v' {2 ?9 K1 ?
' q4 G3 j* G. N6 u3 f好了 工欲善其事 必先利其器, 1 p( B0 }- A% c# f0 G7 ]% K
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, ; G0 w* |- J- W% r( |
準備好後,我們要了解以下幾點。
: e. R& _2 [/ a' j1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 $ M( ?$ S% T# w/ p
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
, q: |/ d0 R4 k, [3.MD ROM 校驗數據在於$200以後到ROM結尾。 & Q! a( b" `9 K% u( ^, ~
& ^! ?5 h; T4 _8 O/ n5 Q% k$ ?
現在我們來舉例吧,學習最快的方法就是舉例子: - Q" X2 |9 y; k1 f; K: W
例如我以很久以前我hack的螞蟻騎士作為例子,
. \& F( K6 l1 ?. \: o首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
3 A8 ]8 e5 D* C  w
" F: D! l3 P4 d% y! X  H由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
9 P" Z6 v+ i- n4 c$ V5 A) Z" p我們就將rom裡面分為8bit和16bit。
7 c3 p9 P2 m$ U0 ^3 s; ?6 X5 `從$200開始雙數為8bit單數為16bit, : h6 O/ Q) z7 H$ X) M7 V
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
& ?- P2 G3 a# m- N首先我們先到$18E看checksum檢驗數據, 9 O$ X# N5 ?" \0 o
我們會看到3C 52,好! 記下來。 ' S; v/ N( B3 q5 A
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
' }0 i' U3 [- _0 E2 }OK現在用模擬器開啟ROM看看,紅屏伺候。
: f  ^  s$ n' _: P6 ^4 x沒錯 此ROM有檢驗機制,OK 現在來修復吧。
- `) W+ r; P  k& Y* ?2 y4 Q: T+ j' x+ x: w# U. D/ _& D6 `3 ]
剛剛還記得檢驗數據嗎?沒錯就是3C52, 3 I: e) h: Q8 [3 W
好! 現在來計算修復checksum吧, $ ]) f9 }" X3 f, T8 I6 p
首先我們要將00 00 改為 4e 71,而且我們又了解 ! A7 p: s: i9 y1 A
此checksum機制是ADD演算法,所以我們多加了4E 71,
1 ]! L* A; J8 l: s就要在CHECKSUM驗證上多還給它, / H3 n: u3 d$ j& }, X8 W' Y
所以將驗證數據加上NOP機器碼數據: % J1 d9 {( E5 s
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
# J: g/ L* P, ^/ w2 T, c1 x再用模擬器測試,ok 紅屏消失了。
+ U$ F4 C) L$ ?/ i. ]( X
" H! w) ^  P5 ~, x4 g3 f2 {3 J& h* d6 R; ]2 Q3 V5 T
就是那麼簡單。此時你應該還會有其他疑問, ! b) U! g* ~) d' j" ?
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
* l3 A" S+ S2 m  n& h  l我要改為FF FF,那怎麼辦? 其實很簡單,按照原理   p  v' ~1 v1 ]# ^- K5 t$ b
先將$FF FF-$99A8=$6657, , H9 e7 ?+ M( V$ G8 X( j
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
2 J& g) \1 w5 h3 ]5 z* i4 E  a. D6 z那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 3 j6 S1 z1 h7 ]) V" K
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
7 R# h2 q7 J% K" l; ]" y檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,   O3 l8 G* T) M% s
先將之前的修改還原,或是重新開一個相同的rom, 4 F, t3 l$ i: g4 y" i, V0 i
將rom地址$BBBE6填入數據EA 98,
8 z" A3 T+ o7 |0 H+ [8 Y8 N然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
( l, A- s6 y0 c, ~- m5 s# D) _; D! n: _# `0 R. A
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, 2 g2 G+ S: K( @/ U' I0 N1 t
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
) L' @: H# K, R7 ~- q
3 R4 W+ q7 Y+ b# l5 q: q  V0 k. u+ f0 @+ l7 d
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, - o# @( g9 O/ a& \
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 3 ^& @1 L+ x! D. ?* F
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
  a$ T$ C, M) G& x一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 # ~: i0 q! o" r  a/ i
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
9 ~6 |6 x* C7 p% y) p8 f5 D去下載工具。
; r% @  k# q% b* Z& Y' \' I  b  J, ^! F( C5 f  j* ^
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, 6 O* X" f" F" G! ]* G1 r
相信你也有所收穫。回文是給作者最大的回應, & \9 ]- w5 _% V1 A; E! F+ {
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
; L1 T3 y# P. v& w5 H$ ]* H6 A3 [) n
OK 忙碌去~ $ t$ E% Y# M$ g+ C3 m3 c9 B

7 K  o( W+ v7 `3 Y- O8 t2 xP.S. - `. W3 v* k" I0 ~. X: y2 e% Y

5 d# X) `, l6 o9 A& u5 f, j. \1.歡迎轉載並保持文章完整性,並署明 ) t7 U2 S4 N  B3 _
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 5 F/ v! ]3 P8 h/ h4 H3 T3 ^# J/ c
http://www.superworldz.cn/thread.php?fid-12.html - n$ V* c. Z( T6 V

4 O! a. B$ E* ^/ c, @' C/ p) c2.EZ轉載禁止。

: ^8 t' j$ m3 W1 H[ 本帖最后由 疾风之狼 于 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 发表 ' x5 O( r$ f0 B
那如果hack了好幾處地方,怎麽計算?
) V! p* t; Z3 J6 _1 o. |2 _
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
0 ^1 R/ R9 P4 P那如果hack了好幾處地方,怎麽計算?

" e5 r9 ]8 X7 c4 z- \# v! o此checksum算法計算到檔尾,4 v  [  b6 k9 V
就算更改了某一處,也須計算到檔尾,
, K$ p- Z9 P4 p# y6 ?! p多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:0 v6 a+ x9 S5 l$ L" @2 d# h4 a& v
http://bbs.emu618.com/forum/thread-95790-1-1.html
回复

使用道具 举报

签到天数: 82 天

[LV.6]常住居民II

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

使用道具 举报

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表
& l5 R& v7 G' y+ Y4 m- \团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
1 y3 V, v5 Y8 q1 n
HELLO ,
, \/ r2 @+ ?0 U7 [3 O  O需要用到逆向分析或是記憶體搜尋綜合運用,( H  @, [9 v; O% V
前者你必須了解X86或甚至要了解SSE,& ], M5 o# j9 }  I2 j4 K8 [
我當初hack 鬼泣4(DMC4)就有用到SSE2。
9 Z; ~; o  l$ B8 V) S5 a* a- h) m3 n. o
記憶體搜尋綜合運用就交給你思考囉,6 I- w. a- V" D( j  c
給你個提示: "Difference Value"
0 c. Z* {" ?8 c0 V3 W, W/ e有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:) V# Y% V, N: ]5 R
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-8-25 05:16

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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