EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1925 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
  v% C* k( [# S; u- k
3 Q  u+ C# j9 b5 G  [/ I
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 * B8 b/ v1 O/ @
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
5 b: j4 p3 _) }; d3 b' t) P) i2 p* G8 X2 _- v! s
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
) p, s8 M* r* O$ D8 p◆日期:2007 11/18 (日)
1 U* }; W# I% d. u7 ~3 Y! g7 `◆組織: DARK SHADOW GAME HACK TEAM 9 i; q; _/ I2 I1 C
2 W1 k- |. V+ y3 o3 j

  `( u( R7 H  T% V, R2 \$ ?, kMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
2 i# D" L# V  ?" P* o+ ^接著我會慢慢收手,今天上線剛好收到疾風的PM, + _9 L% s$ {$ \; @
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
) ^1 z  h7 g- N  ~沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
& |, |/ k. a- A講解一下MD CHECKSUM的修正方法。
0 Y- C; a! g* k* S(以下方法不適用於MD版 洛克人, 7 h0 A& V2 M2 V& P1 h4 `) t
MD 洛克人驗證需詳細分析過才能下定論,
" ~! F) h2 |1 j& {" O$ ?目前對HACK漸漸沒興趣,所以應該不會去弄了)
; P! q. }, Q8 Y$ |# x  Q
. F1 k! X- W  K8 {7 U- Y; E$ T# \( P: {# b. m
首先我們先談談並不是所有rom修改後,
8 I" p9 X$ \0 C& z4 n" E6 A都會檢查checksum強制進入紅屏,
" W# o* w5 O% y2 I" j此方法也不是適用於所有rom(例如:rockman),
# `# Z  K/ C+ x* ]* J大至少8~9成以上適用。
% H, c. N* r4 a: Y1 K+ Z8 \) [2 w: W/ O9 n
好了 工欲善其事 必先利其器, ( a4 F. j1 g/ M( _7 g% _! x
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
: o# ]. Z6 n3 C" P4 Y2 k; H( t% f4 N% ~5 d準備好後,我們要了解以下幾點。 . v) P' Q9 x3 a- c5 f/ D3 ~
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
0 s( A+ V& @/ ^# s# r! Q2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 . u" K  U! q' g: s* n) K
3.MD ROM 校驗數據在於$200以後到ROM結尾。 3 E9 q6 M2 @% @; R* B

6 j5 i) J9 S; C% U' A* G8 j3 q+ b* K( j現在我們來舉例吧,學習最快的方法就是舉例子: 9 q* l" [2 l: ?' W( M  @  A7 Y
例如我以很久以前我hack的螞蟻騎士作為例子, / ^2 Y- {4 b! Q% _' W& f
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 + \* H' N6 _0 \: r0 L" B$ j: Y% ?* R
7 I4 Q( c/ l) ^6 {: `
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
4 u& Y1 C, B4 [* m$ [6 x. [我們就將rom裡面分為8bit和16bit。
9 v5 [" Z9 e! s  Y1 S: e5 I5 F7 i從$200開始雙數為8bit單數為16bit,
) Q; H. s8 ]2 t$ w% Y% t  ], [好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
& k5 E8 \( G9 Y% g2 c/ ~首先我們先到$18E看checksum檢驗數據,
3 H( Y) {; K; ?# u* ?5 r; d我們會看到3C 52,好! 記下來。
2 p% {/ f1 t  J  b9 f1 b( V1 d接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
$ D6 Q/ S0 ]5 U% v1 m( E5 l9 b. qOK現在用模擬器開啟ROM看看,紅屏伺候。
$ A. i0 u* f/ l7 q沒錯 此ROM有檢驗機制,OK 現在來修復吧。 * D* A- n5 v+ q5 i. X

% ~1 r0 a$ O# D2 F+ h5 W; f剛剛還記得檢驗數據嗎?沒錯就是3C52,
- E5 |) h$ Y8 a' `好! 現在來計算修復checksum吧,
# G$ C5 m& P$ [首先我們要將00 00 改為 4e 71,而且我們又了解 + Y* X2 B7 e. Y! d3 k9 n# h
此checksum機制是ADD演算法,所以我們多加了4E 71,
6 R, {; t. R& U就要在CHECKSUM驗證上多還給它, $ o5 K- N- P8 i+ v; i' q- u& J- R5 `
所以將驗證數據加上NOP機器碼數據:   s. i" a# \' D2 a2 |/ \6 e- h* M
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, , F8 @$ i7 Z# v! i
再用模擬器測試,ok 紅屏消失了。
2 a' |4 f: b) {9 S6 C  H. }) j& t

( d+ ^, h" x( ]5 g! G2 [就是那麼簡單。此時你應該還會有其他疑問, 5 b  ?0 g& b* q5 `
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 : Z- }5 T+ T7 O- Y+ I0 c  a4 T* T
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
; o: `, V7 a% t* A先將$FF FF-$99A8=$6657,
* U9 P+ l8 Y& l9 p# }這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
. m' Z* K/ J4 [& Z+ L. v; t那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? . r) R' X+ Y1 l6 v& X
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 " x* U5 c: x- e4 r  [9 J9 o( _: S! f
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, , T' P2 ^7 Q  M9 X
先將之前的修改還原,或是重新開一個相同的rom,
4 o! n) I8 y1 R6 x將rom地址$BBBE6填入數據EA 98,
4 r# z1 A2 g8 E" c3 q1 _然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 # j; y5 a- u0 U
, V1 s8 L. D" ^
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
+ H* E$ p6 N0 K  m6 _! J2 t然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 + y- j; \! d; x5 W( V5 _8 E" j

2 r) t  x* |. |
$ o# F" E1 E9 B0 @講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
) E$ `, c7 u' ?8 [( B$ f就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
- b1 n: y9 o( H/ z3 V, V1 e然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 : D9 K& t* b6 [  V7 O. h
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 0 v# V9 u/ B  u' Y# A
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 " X/ u5 m* B. R9 u
去下載工具。
- I1 X7 c! R0 b% @' J2 \1 d  Z( I0 @8 ^* R
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
, D+ G7 o4 {+ ]相信你也有所收穫。回文是給作者最大的回應,
% C7 u8 }# \/ @" B. V希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
8 i' r# s/ \2 \7 r1 u" C1 @' ~1 u  o9 ?
OK 忙碌去~ 8 `  |6 ]& _; U/ K( X- S3 G# K

+ b1 u6 w1 C* x8 }) gP.S. ) C% L- ^5 p7 o7 R1 P
5 w, f6 [6 t  s' R
1.歡迎轉載並保持文章完整性,並署明
& I: I) i7 c8 G: u6 F' u作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
2 V0 a8 y5 V6 Y* w, ^6 uhttp://www.superworldz.cn/thread.php?fid-12.html * C* V! H3 J' k7 L, Z* \" F+ i
* N  j2 Y" M6 A+ R8 V
2.EZ轉載禁止。
! ~1 ^5 n7 F' u7 b5 U
[ 本帖最后由 疾风之狼 于 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 ~/ S/ s$ ^/ P$ w2 Y; I那如果hack了好幾處地方,怎麽計算?
0 V2 s5 D! I$ h! k6 s( P9 O1 P
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 % `0 a: {6 k" W! V
那如果hack了好幾處地方,怎麽計算?
3 y" L, g* }/ i7 h' y
此checksum算法計算到檔尾,
3 u- h; N: x; B0 F3 d就算更改了某一處,也須計算到檔尾,
! o- X; U% W& l; r/ j, [& b; L$ S$ T多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:4 P. J' |0 C& |5 Y  |. u
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 y7 [3 R" Q; Z- p/ T1 w
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

  S+ j6 o+ ]) |. v# A. SHELLO ,
. F; v( T: }8 _6 v# S! ?- ^需要用到逆向分析或是記憶體搜尋綜合運用,, X& p' Y1 ^9 B& S2 _5 u
前者你必須了解X86或甚至要了解SSE,3 ]" K4 h8 I- i0 D5 x
我當初hack 鬼泣4(DMC4)就有用到SSE2。- f- t4 [1 n8 D' f% Y
) l1 l9 @" Z! m
記憶體搜尋綜合運用就交給你思考囉,: {+ O; V) @0 H- x! s
給你個提示: "Difference Value"$ |  `$ O+ v; \8 ?: l# D
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-4-20 22:31 , Processed in 1.111329 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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