EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2124 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
; G4 \7 i; s% ?$ @! k( ~# ?7 m6 Q. ?& x5 U
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
1 Z" e4 j  J" o+ e0 O, a5 _BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 1 ?- p& ^  F5 |0 D

- C6 I0 h, A3 j; i◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL % X, S4 y; h. D2 [5 x
◆日期:2007 11/18 (日)
. }: O: g4 [) [  p/ r◆組織: DARK SHADOW GAME HACK TEAM
; O- Q* ~/ j3 m/ q4 b2 x. q) @# F2 X7 N1 P

% |/ y% {) A6 t. P9 M! w: qMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
* K3 v) i' o2 J( Y7 d接著我會慢慢收手,今天上線剛好收到疾風的PM,
: f: L" _( Q) m; _) _問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 - p# R& b; z2 A4 q8 c! t
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
8 h$ U- P; y  U' _3 Q% D, k講解一下MD CHECKSUM的修正方法。 + G- q6 S$ s3 k8 n& E% j7 |# I. B8 A
(以下方法不適用於MD版 洛克人,
4 d: i3 r, O# w- F/ KMD 洛克人驗證需詳細分析過才能下定論,
, ~/ W: V( O& Q; m6 }! c' E目前對HACK漸漸沒興趣,所以應該不會去弄了) ' M# @0 ]& U+ e
4 y! l2 ~/ }8 m

/ B' d- K  i4 c首先我們先談談並不是所有rom修改後, 2 z  ~# E& \: }5 }# k
都會檢查checksum強制進入紅屏,
" F% _3 Y2 a) ~- k" u5 Q( b0 P此方法也不是適用於所有rom(例如:rockman), ; ]) Q9 J9 J* S+ f0 D
大至少8~9成以上適用。
! D3 }  W! W) H9 `, @3 [! k
1 s6 U- z! X* q. y  d好了 工欲善其事 必先利其器,
) F" ]. b" [* g4 B" l, g4 D準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
- h7 G/ G, O& s準備好後,我們要了解以下幾點。
. D3 G2 w& E; ^" s. L1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 0 f' ^+ g% P" t/ C* |$ h4 z& {
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 0 V6 Q! @- r" ?' v4 y  I
3.MD ROM 校驗數據在於$200以後到ROM結尾。 % R6 H( I, O! }

1 n2 E0 I# w5 d% _4 ]6 u現在我們來舉例吧,學習最快的方法就是舉例子: 3 u2 t, }/ {; X8 j) [# N0 v0 x
例如我以很久以前我hack的螞蟻騎士作為例子, 4 N+ c9 q- f4 g- z& Z. U3 F4 I
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
" D$ j/ x3 D% X5 p( [/ a$ D' W2 s& }' Y
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, . W1 F9 j2 ]1 |8 ]; D  O/ w
我們就將rom裡面分為8bit和16bit。
+ t$ o0 r) S6 W! X1 A3 C  u2 h從$200開始雙數為8bit單數為16bit,
' i1 _( R! o  l" j好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
9 x) ]0 _8 Y2 `: w首先我們先到$18E看checksum檢驗數據, & g! b7 b" K; Q6 T
我們會看到3C 52,好! 記下來。 $ i% z( s1 J3 P
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, - ]4 t" s4 r/ y1 T
OK現在用模擬器開啟ROM看看,紅屏伺候。 - c# M: p1 d2 n6 u+ {
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
  G  Q$ n. V1 x. U5 d
* H4 J- C& s3 s/ \4 a4 a; M剛剛還記得檢驗數據嗎?沒錯就是3C52, , g$ U8 y7 [# j) `/ K' Q8 I; q
好! 現在來計算修復checksum吧, 7 Q0 S. R9 g1 P
首先我們要將00 00 改為 4e 71,而且我們又了解
7 n+ z& c: i% c( p; n此checksum機制是ADD演算法,所以我們多加了4E 71, 1 }" \$ G* o" R0 |; T
就要在CHECKSUM驗證上多還給它,
  s; [. v. M* T- [所以將驗證數據加上NOP機器碼數據: : N0 X- @" |; ]) z6 T: S
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
" V4 m( r( r9 I再用模擬器測試,ok 紅屏消失了。 % I2 u& y; P2 U2 j) v9 p

$ {5 d3 l0 i: m3 k+ Q: T& e( D4 f/ V& x- y; g7 \0 I
就是那麼簡單。此時你應該還會有其他疑問, 1 t& G; A- P* s* C# J) `; P& {
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 0 N2 X. Q4 }5 B- g3 i6 H2 q% n5 ^7 P
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
) j) G8 ~) X( U1 W6 n' l先將$FF FF-$99A8=$6657,   _8 ?- w$ ]5 o, Y2 ?; u
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 " L) O0 i+ C# B* F+ I% P. V
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 1 K, X# m) C' e
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
% L0 Z1 W, Z8 x" U6 I7 D3 |檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
: O" G6 s- l* Y, d先將之前的修改還原,或是重新開一個相同的rom,
5 R; t) A- w1 F, A5 R. u: Z將rom地址$BBBE6填入數據EA 98, 4 d; O% E* ]" C8 i% c8 N* l+ [( k
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
8 W$ s+ N. ~. ~: Z- |
- N& |! R- D5 D; e) ]& M+ @, T  J數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
' T* n$ p; E6 T* c然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 1 y0 y% E0 B% E$ @. g
. B4 ]! M- e+ t7 o2 ]+ s2 m' D

4 ~  Y, U& C7 S& _( m: F, v講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, 0 f- Y; ?: w+ ]& u/ N& _7 y
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 9 L! O& _: B7 n  j6 O
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 - h4 a) \+ T+ b/ G2 h
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
3 n' K/ ?0 c! U網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 6 k) s0 H; k$ U0 k8 f; n' O
去下載工具。 " \( B( ]: v/ N- X6 f

0 n; v  I; w4 J+ \. C+ P: sOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
  w' L. e3 S  N. s5 K相信你也有所收穫。回文是給作者最大的回應, 8 A" [) i1 J/ U5 `: P! m
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
. K# j9 |- j9 M" S) F% \  u9 f$ k  g: s/ h) s5 K! |% L0 R9 C; R
OK 忙碌去~ : o3 r0 F; c; k5 J5 F

, B0 T, x0 {3 fP.S.
: P  v2 w, H- U0 E) V8 I4 n$ A+ b- d0 |5 _
1.歡迎轉載並保持文章完整性,並署明
, B0 N8 |3 W) f9 n4 |作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
- |3 K/ s% @7 }http://www.superworldz.cn/thread.php?fid-12.html
3 L7 ]7 w- i: n' s% A, w) A" I/ o' [8 f  v
2.EZ轉載禁止。
% a  E+ v0 Z; q% q# `
[ 本帖最后由 疾风之狼 于 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 发表
. {9 H. \1 y+ Z' |9 R0 {% _那如果hack了好幾處地方,怎麽計算?
( o$ z7 J3 D  H' a8 t) `
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 ( s, K/ X: T/ n2 t
那如果hack了好幾處地方,怎麽計算?
- P9 D- {: T: ?# v
此checksum算法計算到檔尾,
% k- U  O$ Q8 D( _% X' O就算更改了某一處,也須計算到檔尾,
) w6 Q  T( u; y多處處理方法相同。

该用户从未签到

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

签到天数: 80 天

[LV.6]常住居民II

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

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 $ N0 ~* B0 e6 u& P. |
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

5 Z' b1 d! ^* u, t, D( Z1 s: pHELLO ,
6 b2 l  L+ ^& e% V需要用到逆向分析或是記憶體搜尋綜合運用,
& j' t* W+ w% I% e$ ^/ r7 }" Q! N! C前者你必須了解X86或甚至要了解SSE,
9 @) D- B* p6 d/ W- }, k7 z9 p我當初hack 鬼泣4(DMC4)就有用到SSE2。" [& K3 d4 J: `( h: M

% g( A# v, a1 N4 L3 y& x記憶體搜尋綜合運用就交給你思考囉,5 r1 Y% [+ J2 [# z4 [
給你個提示: "Difference Value"
& D( o* P+ V2 v% f* X3 c有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:; `% l7 o+ l6 N5 V6 x) V
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-7 18:49 , Processed in 1.073242 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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