设为首页收藏本站

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

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

  [复制链接]

签到天数: 1933 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
8 b2 p" _' x5 Y
1 q4 T( {$ {6 [+ o$ A
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
" L* I" x6 d/ U7 _9 NBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) ( I* x+ F* E! ~* c: k$ D  @# X

! v( |* d7 g5 u9 Y$ h◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
. s4 P3 C% k+ B# r0 o6 j◆日期:2007 11/18 (日) ! G) v: ^# U+ _( P( M0 \8 w
◆組織: DARK SHADOW GAME HACK TEAM , G: v6 ^# C# U  X; J
0 T1 {" ~" u% k% D4 M5 }

9 ]) t+ Q" e9 F( N( n9 vMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, 2 B) @' y( Q2 q" }* D2 j; T
接著我會慢慢收手,今天上線剛好收到疾風的PM,
" H3 u' I, k. |& Q問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
) u8 F) b, g+ B( U沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 , w; C" G& ^* |3 }. a7 ~
講解一下MD CHECKSUM的修正方法。 , C! X6 K# L& G. d
(以下方法不適用於MD版 洛克人,
8 ~+ q1 t+ E% `MD 洛克人驗證需詳細分析過才能下定論, ! Y2 o0 }0 Y; b' a4 y2 ]
目前對HACK漸漸沒興趣,所以應該不會去弄了) + f) D8 Y( z4 R! P9 C
! D/ c) P  l8 J$ F3 H% V. f" b
, Z3 h+ m' Q) {# Q; D- j! ~
首先我們先談談並不是所有rom修改後,
1 [% u- y- D* f5 d都會檢查checksum強制進入紅屏, & ?) @2 E0 H, M* R/ e
此方法也不是適用於所有rom(例如:rockman),
/ g3 g- ^* F1 B# |& y' H大至少8~9成以上適用。
6 s6 n+ r7 L7 _& R* X- D! B$ q) [4 W2 H1 D. t3 ?9 z. a; V1 ]
好了 工欲善其事 必先利其器,
2 B; v4 B3 K* t8 S5 X準備工具 16進位編輯器 + 你要改的rom + md 模擬器, ; ]: p- }' S, ^3 \* S+ l
準備好後,我們要了解以下幾點。
; U3 H* p1 C- W7 @1 ~7 W1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
& y0 d: E/ q  ]) Z2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
- |' }6 D- m$ C0 _! H3.MD ROM 校驗數據在於$200以後到ROM結尾。
% p1 @) F4 F4 y  [. o3 p2 `( M6 Z$ P0 ]9 e
現在我們來舉例吧,學習最快的方法就是舉例子:
9 j1 {- M, j6 z# w3 Q  ?" p2 v+ E例如我以很久以前我hack的螞蟻騎士作為例子,
* c# o) m, T3 F/ C首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
" w+ {" o" l6 x! a; X5 P
# f5 @3 i$ }. Z+ n# v5 A  M  M由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, ; d8 I4 o- D4 a8 |0 }
我們就將rom裡面分為8bit和16bit。 2 n' h! E8 J& B: j% g& J3 g. D9 L) p
從$200開始雙數為8bit單數為16bit, 1 @( V8 f$ N1 F0 T6 X! \7 f6 A
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
. z+ [8 `; ~! q0 O- ]" T/ r首先我們先到$18E看checksum檢驗數據,
, k2 _" \  y4 p7 C我們會看到3C 52,好! 記下來。
0 ]5 n2 H& a4 {6 t: i. A接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
+ ~$ Q. ]; p1 b" Y, [. D( TOK現在用模擬器開啟ROM看看,紅屏伺候。 0 w7 O) G% g# T6 l. c
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
% R+ R3 K* c2 S( a' C5 u7 }- q; x) g  j6 V( J3 Z1 J
剛剛還記得檢驗數據嗎?沒錯就是3C52, ) m1 w8 c9 }- z+ h" Q
好! 現在來計算修復checksum吧,
4 t5 {+ N! A' f% U. {& i( }: u首先我們要將00 00 改為 4e 71,而且我們又了解
5 K& k3 Y! V3 P2 K0 C9 Y! c此checksum機制是ADD演算法,所以我們多加了4E 71,
# X: r  Y0 B2 w4 b# x; t就要在CHECKSUM驗證上多還給它, + |' F/ a. z# y1 c4 J9 L! D
所以將驗證數據加上NOP機器碼數據:
% b$ c2 ^% \+ Z  [" [3 f( `& d$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
& J# H$ g% @0 o' }再用模擬器測試,ok 紅屏消失了。
# g/ @. U5 \) Q+ ?" U  g9 y
4 d/ s- p. z7 q( k, ?) P" l% x
' Y7 F* G& o) t0 L& ?: k$ c就是那麼簡單。此時你應該還會有其他疑問, 0 _- i; `* l0 j* S
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 ) s* N- Y* j8 z
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
7 a) h2 `0 ~2 \% y. q6 }先將$FF FF-$99A8=$6657,
6 }; h% u3 B* U% U這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
4 H4 R% g  H7 p& V) ^5 k那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 4 m: U( a4 d# j- o
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
- l- a, h8 T7 o6 D檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
( I2 s2 v1 c+ e: @; c- Y+ M先將之前的修改還原,或是重新開一個相同的rom, * Z1 V. k9 d" h
將rom地址$BBBE6填入數據EA 98,
* B% u- c! W2 p) X然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 # E1 u1 I$ l8 c: b9 `. |- f' N3 K

6 L) t( W  A, g1 D數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
. _' X0 |# [! q% n然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
! r# \# h4 U, C: _, u1 S0 U1 w1 Q8 h/ L6 m: N7 L3 P

3 T( @0 i! ]7 X& `- G3 N講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
0 @: ]5 C; x; C: ~; c就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, $ }, n& r: ?& I3 R/ m- y) p7 t9 f
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 ( q! m! q( \4 I, b' A3 z
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
" N0 i  D6 K/ g7 ]3 z) t2 O網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
) @, Q; o0 v" H去下載工具。
. G( q) C( R5 @2 b0 e; K! a( T1 O/ z8 |1 ]& B% p* f9 B3 c0 V4 c
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, . _# e5 B$ I, A9 H8 X% E
相信你也有所收穫。回文是給作者最大的回應, ; N6 u, v1 f5 ?: y: ?) n9 |+ k
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
/ O0 ]: p7 p! ]6 {: c1 p7 ?5 s
8 r: @. \( w/ y2 f0 Y  m( B* EOK 忙碌去~ % a$ x5 M2 L! [0 g! V
" T- c6 V* b. e" U' I/ z( c* \% z
P.S. : v% n4 e5 R6 z# M! ^- [
  g( u# v$ @4 A) L# M
1.歡迎轉載並保持文章完整性,並署明
+ l% _, N* y& V' m1 ^( i作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 ; C. n+ o0 K2 B  L
http://www.superworldz.cn/thread.php?fid-12.html
3 U9 D$ [& ^+ t# M2 W+ L6 V% t+ j% ]0 R/ v. O5 Y
2.EZ轉載禁止。

2 [& a- ~( X! J  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 发表 # r2 t% m9 M& C# k( o
那如果hack了好幾處地方,怎麽計算?
4 b. r  r1 o0 d4 ?+ |# U. x  ]: l
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
% D2 ^6 g1 V4 c那如果hack了好幾處地方,怎麽計算?

4 d) I4 S# B; G/ P: y$ h8 ]; ?此checksum算法計算到檔尾,
3 ]/ }! `5 Y0 r' l9 K) Y: w就算更改了某一處,也須計算到檔尾,
- ^5 Q% R1 Y, u6 @1 r2 M多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:( d+ @4 \0 M$ U% j( b, ~
http://bbs.emu618.com/forum/thread-95790-1-1.html
回复

使用道具 举报

签到天数: 82 天

[LV.6]常住居民II

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

使用道具 举报

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 9 v( {5 A* O1 _$ u
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
8 E7 v9 F1 Z* V6 l
HELLO ,
/ |- h% ^1 C% o需要用到逆向分析或是記憶體搜尋綜合運用,2 l  R! \/ t. i. \, f7 Z) B
前者你必須了解X86或甚至要了解SSE,4 |7 [$ i+ |7 w- N8 S6 z
我當初hack 鬼泣4(DMC4)就有用到SSE2。, B- t- z# n( i* v: {
( i5 D, r! u5 @2 ?: G4 Q5 f2 `* e
記憶體搜尋綜合運用就交給你思考囉,& e& K' [3 w! g5 x6 @4 ^: V
給你個提示: "Difference Value"
% S0 j0 f3 _& E5 }有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:, x( w  f; p! E) E/ X- u3 A
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-26 14:13

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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