EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1845 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html0 ^+ K3 z: y6 Q+ `7 }

1 p, p5 o; v( ]. s& i0 N
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
4 e! ]- X6 `$ b! X& qBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
1 L8 }* i: @& F8 Y7 E! P  w3 q; `" g4 @% O
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL $ b, w# D! i" M" N
◆日期:2007 11/18 (日) 2 B7 n7 H8 I# }% X" d0 I
◆組織: DARK SHADOW GAME HACK TEAM 8 w* W4 ?" c: y

0 i0 A& D9 P( E6 a" Z# L6 y' p2 u- g
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, . m8 h0 k" L3 m! K) X
接著我會慢慢收手,今天上線剛好收到疾風的PM, # X4 Y9 V1 t2 ^$ |5 X! j
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 : [: \5 B& Q( E
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 4 B5 }/ |1 [' b& C7 g
講解一下MD CHECKSUM的修正方法。 , @- ]0 x. d3 h! x' p
(以下方法不適用於MD版 洛克人,
' k9 [" y- a$ A' |8 kMD 洛克人驗證需詳細分析過才能下定論, ' c6 @# H9 B& i2 o8 }6 l) r$ n
目前對HACK漸漸沒興趣,所以應該不會去弄了)
- Y2 ]% ~9 S0 z! X3 }, o; p& {3 }- d! ?

  n% X$ s* a1 r. f0 I. |* O: \首先我們先談談並不是所有rom修改後, 2 o: o/ b+ t/ N( x& ]
都會檢查checksum強制進入紅屏, # v/ X5 Y$ A! \( k; T% A( @4 K
此方法也不是適用於所有rom(例如:rockman), $ s, i7 G6 ^7 }0 Z
大至少8~9成以上適用。
  o: A& ~: _# v( ^1 p4 E* j& Y: t8 b5 U" a! e1 P2 }5 w5 J
好了 工欲善其事 必先利其器,
  S6 W4 Z0 u* h8 u6 ~準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
$ M0 G8 j$ c5 j& @& q! z準備好後,我們要了解以下幾點。 ! I8 {- {" d3 h' l! p
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
7 D8 I2 S( i5 X$ v+ r4 I2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 . c. ?" b9 N* Z; {: n
3.MD ROM 校驗數據在於$200以後到ROM結尾。
, f' D8 s2 u1 B1 r" E6 t
* P9 I9 U+ F/ T2 Q現在我們來舉例吧,學習最快的方法就是舉例子: ) j. D( {, H3 \  X5 D
例如我以很久以前我hack的螞蟻騎士作為例子,
9 J. z" @# s  h8 f1 t( p2 \+ E7 ~首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
. E8 t! i% v4 C
; d7 ]& N  M& }( w* i- f由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
- o* L5 w1 K: i我們就將rom裡面分為8bit和16bit。 0 F1 x& H/ b6 w/ E, h6 ~% C+ t
從$200開始雙數為8bit單數為16bit, : t! p1 p6 s3 J  o# z
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
$ `: {. U* T, C" B  X首先我們先到$18E看checksum檢驗數據, - a8 W. ?% z& N
我們會看到3C 52,好! 記下來。
2 ?9 t( @# `# }8 z; P, m# J接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, & m% N! v' s) U8 J
OK現在用模擬器開啟ROM看看,紅屏伺候。 2 E4 w1 q! U9 k3 g: \  L
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 3 O6 T) Y" t4 p- F
2 a9 Q& @3 H  E. L
剛剛還記得檢驗數據嗎?沒錯就是3C52, $ T: A( l, I9 X2 U: _; `1 }
好! 現在來計算修復checksum吧, 3 K  O" Q- X3 @7 f7 A4 K8 X
首先我們要將00 00 改為 4e 71,而且我們又了解
8 }+ e' V5 Y+ F, t  P此checksum機制是ADD演算法,所以我們多加了4E 71, 2 b# v/ F8 N" N5 B* F, F# S
就要在CHECKSUM驗證上多還給它,
7 D0 ?, ?1 B# C- C% k所以將驗證數據加上NOP機器碼數據:
/ A. n( v5 A: F0 g- S$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 5 Z3 J: L5 a9 P9 b: \* T
再用模擬器測試,ok 紅屏消失了。 ' A/ M# Y, ?+ b" H3 w

" L( s. N* `6 E/ \' w0 x' \, L$ @
就是那麼簡單。此時你應該還會有其他疑問, / u1 `1 T( p6 _2 \4 r* i6 N
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 . X- M8 r) b; S
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
+ E9 s$ e$ w3 t/ R* f* T3 e0 ]+ X先將$FF FF-$99A8=$6657, + f# k: O4 v% q" w' T
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 & K. t- Z4 }) s' `4 ^
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
) p% O: B& ?1 d/ E5 U' u一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 % h) {- a  h0 t( s
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
6 M3 k) n# {4 p& e5 Q先將之前的修改還原,或是重新開一個相同的rom, ! Y8 o- g" F2 K# Y2 S) H+ z- d
將rom地址$BBBE6填入數據EA 98,
" ]/ r. C9 k0 e: n9 C5 d% V然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 # l" Z# I9 Y5 i* N$ q0 p
' P) h# H/ ]' w1 ?& f4 h
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
- m3 J6 W; Q! R然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 / t1 N- m: o4 Y2 l
' w* |/ W" V& K2 C3 ^% S& I

- N  o0 z( h0 G. r4 J' G3 }講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
5 r2 r+ A! Y; S) J就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
% m7 }/ w2 S: m8 J然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 $ V5 v, f7 ~6 [) x$ B6 A
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
7 o2 p- ]/ _( m網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 1 S, ~! C% A) h+ C" ^! h
去下載工具。
" j9 i# Y" M  l, c+ |$ S- s" K; R# H! s- B
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, + }- z. ]. H' S$ z# n
相信你也有所收穫。回文是給作者最大的回應, + t. s) b3 ?4 C: n" K
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
1 M+ }' N' k8 E6 D; H3 R6 E+ s8 F) m
OK 忙碌去~
& n# t- Y) J  b! w, l
: s/ R9 I6 b( C, v% U! N$ Q( fP.S. 8 n$ R7 o6 ~! o  u8 y0 P9 D
1 }9 e2 t, a6 l5 ~+ O* X
1.歡迎轉載並保持文章完整性,並署明 + e' Q4 d- N/ y
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
- ?* S4 H5 L8 t6 O' @http://www.superworldz.cn/thread.php?fid-12.html 9 Q0 |* Y9 p) D+ ~$ q* K

) I" ?$ u2 X* P- C9 l" h' x2.EZ轉載禁止。

  o; G/ o( P. A8 b0 ~5 Y[ 本帖最后由 疾风之狼 于 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 发表 ; {2 d- |2 L! ~7 I4 u3 r
那如果hack了好幾處地方,怎麽計算?
& h! \% A! L  ^  T* @3 b9 ~9 J) }  x, w
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
* H/ A2 N8 b# h# S) a1 b那如果hack了好幾處地方,怎麽計算?
5 c  V+ W$ y( X# v4 L$ ~
此checksum算法計算到檔尾,& U3 G% r% l6 @
就算更改了某一處,也須計算到檔尾,& g; u: M' N% L
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:) `5 p4 ]  m8 r. z" i8 i. I
http://bbs.emu618.com/forum/thread-95790-1-1.html

签到天数: 80 天

[LV.6]常住居民II

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

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 2 Q1 c+ U% P% Y
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

4 \5 P& f5 ]; Y2 m! EHELLO ,( A" }5 n5 A$ `: ~, A8 C
需要用到逆向分析或是記憶體搜尋綜合運用,
. w) T7 Y5 F. a5 y5 [前者你必須了解X86或甚至要了解SSE,
/ \0 |: X& u1 h3 V. b; i我當初hack 鬼泣4(DMC4)就有用到SSE2。$ Z' o' ^, [4 O6 q  l# \

$ p4 D, T  u9 X) c6 k. X0 B- d記憶體搜尋綜合運用就交給你思考囉,
' M  t5 }2 n: y5 e. N, P8 L給你個提示: "Difference Value"1 p9 v. z( l5 N: A
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-1-30 13:13 , Processed in 1.070313 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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