设为首页收藏本站

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

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

  [复制链接]

签到天数: 1897 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
8 x3 ]) e: q& U; O: y/ ?' w% Z
3 ^7 L" o9 [0 }! z: q8 T
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
+ x) H; ^- H( x0 a$ H) A! r; ABY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 4 S# t- E, V! s" }2 @

* P6 O0 u' e5 I5 ]# U$ f/ ]◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL " y, |$ \* P* N: G
◆日期:2007 11/18 (日) . M1 l( o: W6 r2 Y
◆組織: DARK SHADOW GAME HACK TEAM
+ g) M5 l5 o6 P4 ~. Q5 v& b# U* e( a* ?) \' F3 L

% t. W/ G" P% x) t0 NMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, & Z* q, C- W9 z$ q  @6 P
接著我會慢慢收手,今天上線剛好收到疾風的PM, - Z- E9 C6 P5 r, \' i; V( ^
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
7 \. e% _" Y) e沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
* ]# D2 }- `! l# l; y0 D$ f3 I3 x7 N講解一下MD CHECKSUM的修正方法。
" c( r& ^: Z( z$ M/ n+ i3 K. v(以下方法不適用於MD版 洛克人,   C8 Z' ]3 p% R3 `( t( K' E
MD 洛克人驗證需詳細分析過才能下定論,
" G5 l2 }3 H5 e目前對HACK漸漸沒興趣,所以應該不會去弄了)
% S. q% W2 O0 P: h2 ?% M6 ]
$ X( t8 N. v% U! g) \) K/ d+ }! e; d% r. F) Q) t8 C/ t: j2 A# N
首先我們先談談並不是所有rom修改後,
+ _/ F. x/ s. B) ^) g都會檢查checksum強制進入紅屏,
( g5 M% k( @& T此方法也不是適用於所有rom(例如:rockman),
  R( a& s4 c6 {8 D; E大至少8~9成以上適用。
" j$ q7 [* m" Z/ l* _) n3 f
) ]% O2 Q7 ^/ z好了 工欲善其事 必先利其器,
  ]8 G, v, q6 L) {' I準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
( c& A& Y& w# s" j$ ~+ t8 D準備好後,我們要了解以下幾點。
3 i( _9 T2 \; M7 f5 E1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
) m" j. w5 _$ n& R- I. m/ \2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 8 R) `7 i$ t& N) G
3.MD ROM 校驗數據在於$200以後到ROM結尾。
0 ]9 Q# m, r$ X: x: z
; k, q0 L) X" `" d2 P1 x" m  G, `現在我們來舉例吧,學習最快的方法就是舉例子:
& ~. J$ S' r: c8 M" [例如我以很久以前我hack的螞蟻騎士作為例子, 8 w6 r. Z: r* Z1 v
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
/ r; E8 P% O) u2 r/ ^+ T2 H+ k; ?( O$ u4 W6 X
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, # [2 L% q9 a. P# n- N" R' f; A
我們就將rom裡面分為8bit和16bit。
# @  ]: n; O3 d; O6 m從$200開始雙數為8bit單數為16bit, . ?$ B2 R. C1 j$ C2 A! d
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. + Q+ m8 y; i/ ~+ H7 o+ q
首先我們先到$18E看checksum檢驗數據, 1 A! K5 L) r4 D; ?+ ?3 `  J
我們會看到3C 52,好! 記下來。
6 F4 P( }* p4 r- e! a- h$ p接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, ; b1 ]3 W# J2 K3 J1 m' e
OK現在用模擬器開啟ROM看看,紅屏伺候。 . @# d5 L/ i7 t' W
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
% k0 g- S8 y+ l
/ c/ D7 e8 o2 n) ^# H剛剛還記得檢驗數據嗎?沒錯就是3C52,
+ ?% O: p! F/ E6 x8 r好! 現在來計算修復checksum吧, ' F. `, }7 f( x. g
首先我們要將00 00 改為 4e 71,而且我們又了解
# W2 q" [# ^  C; F  h$ t此checksum機制是ADD演算法,所以我們多加了4E 71,
8 ~, B. k* A  i/ I就要在CHECKSUM驗證上多還給它,
/ m) l" X# E, v( i所以將驗證數據加上NOP機器碼數據:
3 z  i# v) l' a; V$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 4 s. r+ F3 H6 Y
再用模擬器測試,ok 紅屏消失了。
2 j( C! C) u, X: ^4 [$ b7 r; I- N$ [4 x9 C) i! N! N6 K' @

) A  T# y' D7 T3 H" C就是那麼簡單。此時你應該還會有其他疑問, * J! P" U) h3 h; T- ?- h& G
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
9 L- c; A# L8 R# ]& X$ R0 G我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 , V) {7 @- J7 t1 ^# A0 X) V
先將$FF FF-$99A8=$6657, & [9 Z( W, @% K
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
% U2 s1 }8 w2 }0 N, N6 R那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
7 `# i4 y; X. V. M一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
$ J  o2 B( ^/ o% @$ l% }檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
8 C; e: i8 b. M+ f, s! a先將之前的修改還原,或是重新開一個相同的rom,
+ s& Q& ]* a3 P! z5 P$ Y" [將rom地址$BBBE6填入數據EA 98, ; {: J/ |$ O* T0 ~- y# }
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
! U* b( J% Y* u! }9 N$ U8 b; N- d
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
3 P/ a' N# V) n$ G然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 + ?( V3 m+ w5 W
5 u& \, }5 U) t: Q2 }
7 m: ^/ G- K4 g' l/ h
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, % z8 d; o7 a: a5 s  a; V1 q8 k
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, , |; K  \5 K: [
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
5 P8 Y+ l' _7 T" {3 Q) Q" k4 A一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
- ]; R$ x' b6 q+ B網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 9 W5 d. d1 f# ^" z7 t  }6 r
去下載工具。
: J$ H& p3 e+ X9 u- Q! j* n2 _4 {6 z" l9 c" u
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, * k+ F: P/ d. @+ V+ ?* r5 \) v& v
相信你也有所收穫。回文是給作者最大的回應, 4 t; T# q; G3 v9 U$ O
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
: m; V' w# V# q& o( G. A9 q0 }/ w
3 S* x3 I) Y) S8 U# @) t  POK 忙碌去~
3 P$ Z" b: o( D) L; u
4 y+ v5 H: p; B, vP.S. , D- q- W* k5 E0 M5 |1 r
+ l, i3 ~: X( V' k7 j  b
1.歡迎轉載並保持文章完整性,並署明
+ P3 o% Q0 u& Z. D+ m作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 3 K& J0 o: [5 N
http://www.superworldz.cn/thread.php?fid-12.html
) a/ y% s$ t' L& t& _4 D0 d0 `+ _. p+ q' E
2.EZ轉載禁止。
1 m! y' B' f5 m. Y; V$ j
[ 本帖最后由 疾风之狼 于 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 发表
  {# R0 O$ S: I# t3 b那如果hack了好幾處地方,怎麽計算?
: O/ l. D3 z% u
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 - N) }) L+ H7 e6 V4 x9 U5 Q
那如果hack了好幾處地方,怎麽計算?

. n! T3 b, P# z- U/ w- C此checksum算法計算到檔尾,& S. i% D" B! \& z, F1 r9 j- \
就算更改了某一處,也須計算到檔尾,
' g9 x0 c9 V$ D  d4 v7 R多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 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 发表 8 G( f; P3 r0 Z- t2 ]  W
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
# f. _# d( Z. R. W0 n$ p$ K. }5 j
HELLO ,( t5 \9 r; K% z  J" k2 _8 h
需要用到逆向分析或是記憶體搜尋綜合運用,' K1 s3 R: {8 }$ `
前者你必須了解X86或甚至要了解SSE,  O* T/ `  f/ J
我當初hack 鬼泣4(DMC4)就有用到SSE2。: T$ W' C$ J/ v( E5 z9 A" D
& S+ \; w4 d: Y. A
記憶體搜尋綜合運用就交給你思考囉,
7 o; a2 P9 n' R給你個提示: "Difference Value"
" r6 B) o8 j9 U9 n. H5 Q有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
6 |9 b0 p: F$ Z- e& f0 ?( u( P6 G: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-17 02:31

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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