设为首页收藏本站

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

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

  [复制链接]

签到天数: 1993 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html* s$ a; I; T$ _' H' G
! h! K! n! n9 `; T
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
7 x$ ^1 G2 a& s& S0 @BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) % K  |1 ~9 O' q* t" E
1 F& j. |; m1 R$ B2 G: ]+ _! c
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL , `* ]4 k& N3 O" j9 @8 |8 k
◆日期:2007 11/18 (日)
9 T# D6 r1 i$ [/ [2 g, l◆組織: DARK SHADOW GAME HACK TEAM $ [+ n6 Z$ J$ m. O3 H3 ~

* k( a) ?( Z$ z* W( J2 \! T" S6 b/ u3 U8 u* ^) a. c6 _! y
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
9 E: q7 T( F4 W2 M" f6 ^3 Z3 `) u接著我會慢慢收手,今天上線剛好收到疾風的PM,
% k2 A. }7 ?9 t# h+ b6 V: A. w8 k問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 # }. E: m. V/ }) e0 O6 F
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
% ?# G# j8 G; N5 B講解一下MD CHECKSUM的修正方法。 # I4 a' l: ]; J. j8 C6 z7 }
(以下方法不適用於MD版 洛克人,
+ x% i( G* f  u$ S) p0 uMD 洛克人驗證需詳細分析過才能下定論,
+ y$ P! i/ R# Z$ r/ k  B目前對HACK漸漸沒興趣,所以應該不會去弄了)
0 ~8 {+ T( w4 }
; Z# }: Z# t) r! {8 l3 L& P
' a% i: q  E+ |首先我們先談談並不是所有rom修改後,
3 e: K8 `1 T8 \0 y' S都會檢查checksum強制進入紅屏,
, L# u+ Y* Q4 Q" v此方法也不是適用於所有rom(例如:rockman),
1 A! e  O1 H+ _大至少8~9成以上適用。 ' z: z5 o% B" O0 G+ A

9 T7 w. G- H. @8 Z- \% s好了 工欲善其事 必先利其器,
# p9 C( y2 p6 h; v6 J準備工具 16進位編輯器 + 你要改的rom + md 模擬器, & n4 k9 {7 F4 f) c" t
準備好後,我們要了解以下幾點。
9 e- v+ a, Y* ^- u* `& P- R1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
5 B8 [; Z' s# i# x+ u2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 % p" a# a) _7 V5 \0 t8 k
3.MD ROM 校驗數據在於$200以後到ROM結尾。 7 D" v: I' `8 X. o8 _4 Y

7 E% U, b$ {, K; w4 A, h  ^. p$ O, Y  W$ C現在我們來舉例吧,學習最快的方法就是舉例子: : i: E1 S! }8 x' o6 E
例如我以很久以前我hack的螞蟻騎士作為例子, , _2 d/ t# R/ l. s' Z# s) Q3 |$ i
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 0 d9 g7 g# Q+ A1 s" f' |

' \: X( L2 d# N0 w6 o* T, Y3 ?由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, ( \% v; T4 J; O: C- L
我們就將rom裡面分為8bit和16bit。   b( B; ^- X: c3 _4 O- K
從$200開始雙數為8bit單數為16bit,
. j1 c0 R" R; c) T4 i: j# ~0 r好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
) k  b: W* T/ T0 I- ~; M首先我們先到$18E看checksum檢驗數據,
  Y( L, u* _# K: s$ T我們會看到3C 52,好! 記下來。
( Z  ]6 _( S0 X* @/ \6 k" a/ I5 x: R接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 9 U) l; f. T2 K. U# T
OK現在用模擬器開啟ROM看看,紅屏伺候。 + R$ N# R" W% D5 j3 {
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
7 X/ [9 I/ h9 X# G! m5 Z% `3 L% w; N; M! U* D* s1 R- C
剛剛還記得檢驗數據嗎?沒錯就是3C52, 5 m* x9 D" G. M) }; C
好! 現在來計算修復checksum吧, / J$ _" n9 d1 E8 J) d
首先我們要將00 00 改為 4e 71,而且我們又了解 6 V, A/ I- ], J
此checksum機制是ADD演算法,所以我們多加了4E 71,
5 c. `7 e2 O% ?: K就要在CHECKSUM驗證上多還給它,
* n( P' r$ s0 m# c所以將驗證數據加上NOP機器碼數據: ) N1 y' ]+ M; U, q" @8 `
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
! n1 z7 K9 g' ^" V$ p0 t再用模擬器測試,ok 紅屏消失了。
, Y5 ~6 p% f3 B6 J: ?3 V; S
( v; q# g0 m2 @" F  |4 [1 S$ w0 G# h4 l5 x- m0 _5 ]
就是那麼簡單。此時你應該還會有其他疑問, 6 `1 ~0 ^  M& Z" {  q$ z- t
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 ) S$ [( k% L& d3 d  P+ l
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 # r: B  P) C* ?9 q- U7 D$ N
先將$FF FF-$99A8=$6657,
  E) M6 u+ U+ \+ s" `這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
1 ^3 |4 U) L" Z( s5 C' [, x1 }7 x那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
6 m' v7 N+ k, l" [) d3 s一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 ( R2 m! Q# a/ q5 I
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
& t9 y( I% ^$ ]  K7 \0 f" A$ [先將之前的修改還原,或是重新開一個相同的rom,
1 j$ I5 A5 K' U, k將rom地址$BBBE6填入數據EA 98, 1 n4 `' X# ^& k6 `
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 1 I5 X2 b, L; o9 D% m9 I, Q* k& M
% h- t# i  k1 B
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
; @( D' |, V, K; q然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
3 i/ f& @8 d9 i/ y3 K9 x7 H! Y0 B6 d/ J

7 u( S0 D7 v5 R9 x6 M" e& w講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, 8 Q( u# J8 _* y* j2 h
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, # o$ _5 Y1 @8 w3 ?1 w+ J, _- T
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 " t& r2 T" H: B; \7 S* O7 x
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
* y* ^/ C% q8 @( R, F網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 % T' l& X  `! T! E
去下載工具。 + P. L$ H; a" B) i

' x8 e" f3 n4 o- _$ bOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, ) P3 i) N* ^* Z, `
相信你也有所收穫。回文是給作者最大的回應,
$ C* |& d" B( P" X7 B希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^ , a8 \9 l: Y5 d: a
! u/ l. u/ H: I& j2 N/ I
OK 忙碌去~
& s' y* P3 |' j) @) X) n: b  n7 H3 c; i( s+ ]4 @
P.S.
2 \9 a+ K! @2 ]$ X  [% U  E9 `9 c8 ?
1.歡迎轉載並保持文章完整性,並署明 1 N7 S3 R$ w& |1 K. U7 d+ p
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
6 ^! q9 _0 C4 f$ Whttp://www.superworldz.cn/thread.php?fid-12.html ! B; C! C, `) L" Z! I

/ f# u' t) W- m$ F  h' G5 {: i2.EZ轉載禁止。

3 B, e# y1 `0 s[ 本帖最后由 疾风之狼 于 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 发表 6 y# c( u' j, f' i  K
那如果hack了好幾處地方,怎麽計算?
8 U. C8 S  K2 k! x. a& W
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 ' b4 V6 R: C9 f6 o
那如果hack了好幾處地方,怎麽計算?

1 _5 b" F! n1 F) R# q. l5 j0 J此checksum算法計算到檔尾,9 s  S. o" Q( U
就算更改了某一處,也須計算到檔尾,
6 E$ B; v' V9 l9 s+ |. ~多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:$ Q4 `- m! G+ I& ?% K: w5 ~/ G
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 发表 5 [" ~* S2 }) m) ]+ a) {
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
5 U- o% V' d2 K/ H  M
HELLO ,; D0 S' z& q# r9 M9 e# O& F
需要用到逆向分析或是記憶體搜尋綜合運用,
: u8 R$ K5 ^9 v( l+ i4 f前者你必須了解X86或甚至要了解SSE,
/ S4 ]. ^# G5 b( H我當初hack 鬼泣4(DMC4)就有用到SSE2。
/ ]1 V, }5 x  Y# y
0 R( R/ `2 n" J, e' a記憶體搜尋綜合運用就交給你思考囉,- S* T6 r! }* T2 [5 `! p
給你個提示: "Difference Value"
9 m$ s$ x& `; G0 d; U# B有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
* b& b' V% V" B1 Q. i9 d3 x: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-26 06:59

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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