EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1779 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
0 }/ r/ E4 @- @7 q  J$ Q1 h  O1 B/ {/ a, G: d- K& x" }& }2 U' m
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
: U- N) w' B$ g) J" }* @/ [9 qBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 8 O7 h/ _" m% b
4 o  O$ L5 s& [: z7 v( I
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL 2 Y* u7 _+ {, u- A
◆日期:2007 11/18 (日)
: D/ `$ E# v3 U◆組織: DARK SHADOW GAME HACK TEAM
9 q( _7 ~  H, n2 u% ^& U  f
; D) S! C2 u- V7 ^
7 A  ?2 l5 Y- pMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
! [1 q4 C$ |9 f- S接著我會慢慢收手,今天上線剛好收到疾風的PM, . i  i; Q* V/ t7 H6 U
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
" r6 K& ^, S$ D/ D- {9 Z沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
  l5 |8 }1 p/ d3 j講解一下MD CHECKSUM的修正方法。 4 A$ l" Q( a% l7 Z; K3 g- `# E+ Q) `
(以下方法不適用於MD版 洛克人,
5 g" b4 a, h; ?MD 洛克人驗證需詳細分析過才能下定論,
2 f- K* K0 N1 p# w8 @, s目前對HACK漸漸沒興趣,所以應該不會去弄了)
. @: s; ~9 q8 @
" R3 T0 x+ x% Z8 F" T- a$ ?# E$ k: X' N" l4 e. M; B5 ^
首先我們先談談並不是所有rom修改後,
7 s: T& W# b- |都會檢查checksum強制進入紅屏, : e" Z9 {3 C6 _
此方法也不是適用於所有rom(例如:rockman),
/ Y+ W2 U0 d6 Q  Y7 c大至少8~9成以上適用。 # l  c- G) E6 V  P  ]+ n7 N# K7 O

. v5 c  s4 \8 U+ D+ G0 M3 P好了 工欲善其事 必先利其器, 3 q+ r% Q# T% x, ?
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, ( ~, }+ W" L3 A* j) @5 E0 x9 x
準備好後,我們要了解以下幾點。
8 M& I3 ?  |5 y+ o0 m, \1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 5 @2 E& z) R; b- C) b# b
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
' W7 ^- C7 ?1 J5 o6 q3.MD ROM 校驗數據在於$200以後到ROM結尾。 ' V4 g  C" g3 H8 L, ]& Z  v

1 w) O7 H3 B* x現在我們來舉例吧,學習最快的方法就是舉例子: $ U; `0 X+ |, P) S6 I
例如我以很久以前我hack的螞蟻騎士作為例子, ( O+ m$ Z# b+ \; f3 ^
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
, Q# j; O4 M. }# `0 p3 @; i& c  {9 d* N6 s4 U$ D3 k& B0 l0 @+ N+ Q
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 5 H. \3 M' w2 F5 K) |& ]
我們就將rom裡面分為8bit和16bit。 / n& b5 p, ?' i
從$200開始雙數為8bit單數為16bit, 2 j  \. m# U! H4 z/ Y
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. 5 ]* `* [' O) e# ]6 Y
首先我們先到$18E看checksum檢驗數據,
% i9 [, F0 {8 A* m# n! H; p) U3 Y1 r6 x我們會看到3C 52,好! 記下來。 3 f8 l  G( U! _0 i" Y
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 9 S- ^' X, m9 U5 j
OK現在用模擬器開啟ROM看看,紅屏伺候。 1 F, O' N. q: n* g
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 * }9 l( C2 a; i  |$ w, m* [

: H, B( f& @& V剛剛還記得檢驗數據嗎?沒錯就是3C52, ; ^& V! \6 A( C8 X
好! 現在來計算修復checksum吧, " v2 ~. U7 U: @7 ]! R
首先我們要將00 00 改為 4e 71,而且我們又了解
1 b. w/ C, E' L' {2 j0 {此checksum機制是ADD演算法,所以我們多加了4E 71, & V. i8 O8 D7 C( Z/ V  j$ b
就要在CHECKSUM驗證上多還給它,
  @( O; e6 p" |& X8 Z3 K; t8 `所以將驗證數據加上NOP機器碼數據: ( j! |1 S  S4 h/ B
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 8 {% i8 S. V' k, C
再用模擬器測試,ok 紅屏消失了。 . l2 B) K3 g" U3 ~$ g

+ l1 c0 ^5 J! l1 u& s- F) x! U4 R& _3 ?$ Y$ l% `5 b! H
就是那麼簡單。此時你應該還會有其他疑問,
9 H' p) P8 u! y6 Z0 k0 W如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
3 E3 V* g( n  ]* [5 H' ?我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
, P2 W6 s6 `- M( x8 q# _先將$FF FF-$99A8=$6657, ! R$ X" U' P: A/ t2 w6 }
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
& l/ g) M2 g8 J4 f那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
" p0 o' @' D: G4 X5 E一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 & P* p4 N4 p" Q0 J" W1 f2 j
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
. |& j. C; g6 @0 E先將之前的修改還原,或是重新開一個相同的rom,
5 f$ f  b5 r! U* m- i將rom地址$BBBE6填入數據EA 98, ' K1 s! J& l1 @; k2 }
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
: p+ K  I6 |: N. v, y, C
( O; r( Q1 r7 L. ~9 r6 b8 w數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
4 w% G* Y* t4 Y然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
$ }( o' s3 K* p0 B' V: m( A6 y4 U0 X' q: Z- T8 C; {

& [( d. u3 V& T  U4 O3 A講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, $ v" h- U3 P5 R4 x  X4 n
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, # K% B, h1 R# w/ V# U/ Z. [
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 # G* L5 ~8 U; h' v. ?) I8 {9 Z- X
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
, z) V; n7 e+ l' r% Z" I網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 ) N. {+ u8 M9 t+ i7 |  N, C
去下載工具。
2 z! I* k. b" S, }5 W5 V0 C- b8 r, }1 J0 t+ u
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, 6 P# C) ?9 s" G6 v. H$ G
相信你也有所收穫。回文是給作者最大的回應,
: A0 y5 m3 L* m9 y. G0 o: }希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^ 2 n# a: ]- b* r5 U7 p: ?1 g- N
; L& r% U) S, e% l5 [' Y5 V
OK 忙碌去~ # |$ }4 B- ^: q8 r
$ C/ x) }# M1 r0 c  A- M, n
P.S.
0 l# \% o" Z" }& d2 E2 Q( U6 `% [# M7 p4 u  W
1.歡迎轉載並保持文章完整性,並署明 , p8 v# [$ M6 @: h. B8 G
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
* Q" E' C/ D1 B2 Ahttp://www.superworldz.cn/thread.php?fid-12.html 8 _/ F# z$ Z( S) O

" C" h, R8 ?/ O4 `- j1 M. \6 \2.EZ轉載禁止。

0 a) n: t! q5 m) U  S4 ^1 O[ 本帖最后由 疾风之狼 于 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 发表 / G: E( L% x6 G% x2 H' {
那如果hack了好幾處地方,怎麽計算?

9 v3 d/ E9 b% F8 `有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 & U! e5 K* r' {- H# u+ y
那如果hack了好幾處地方,怎麽計算?
( Y$ |8 B4 q- m
此checksum算法計算到檔尾,* N( M$ P& k) r3 F2 f
就算更改了某一處,也須計算到檔尾,
. M' Y% E0 }6 Y+ Y多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:* L& ~. v# V$ @0 \! y1 u- i  N& h
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 发表 0 \1 N$ ?- {' M+ x
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
0 o6 z. G: u% |, V
HELLO ,
* Y% Y& V& R8 N需要用到逆向分析或是記憶體搜尋綜合運用,
, ]5 K0 Y- Y) C3 q前者你必須了解X86或甚至要了解SSE,2 b( b- k1 L% [5 Z; z6 q& X
我當初hack 鬼泣4(DMC4)就有用到SSE2。
) h& ?' D3 B) L1 `0 R" O# {5 ~
' P) u3 B& j5 y記憶體搜尋綜合運用就交給你思考囉,) ?/ Q/ H9 h0 p, S- h5 U' g" ?6 `
給你個提示: "Difference Value"1 f% v1 j3 q! D; I
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2024-11-25 08:02 , Processed in 1.100586 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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