设为首页收藏本站

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

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

  [复制链接]

签到天数: 2012 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html2 d5 Y  f% j5 p8 C6 b) j

/ E/ u, x( t! J, _
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 $ r$ q+ c2 {0 Z& x, O$ P, X
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
- y2 u: ~$ y' m9 p! Y. R7 ^/ K4 G0 I# F! m! e: Q
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL + J4 o0 S! g/ s1 V4 f+ O( l
◆日期:2007 11/18 (日)
: z9 B5 d5 M9 l3 U+ _5 K◆組織: DARK SHADOW GAME HACK TEAM
7 P! h/ _( w' Y. o- W6 D+ b9 {# {" Q; S* o8 I- @8 w0 l0 S8 ~! P

- P( b# _1 U, g; O+ C3 z, C8 G- L& |0 ~MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
, c4 a: }6 v/ b$ B) ?3 L" y接著我會慢慢收手,今天上線剛好收到疾風的PM,
- v6 G/ ~4 m0 v6 S* ~9 q問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 ! R: Z, |% k/ \6 j0 F; q
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
1 c7 W" R* |& ^  \講解一下MD CHECKSUM的修正方法。 2 g+ Y; c4 c/ a  j1 l& K' C8 P
(以下方法不適用於MD版 洛克人, 6 G* Z- y( v, h' c
MD 洛克人驗證需詳細分析過才能下定論, $ ~; `( e+ g$ r0 I6 K
目前對HACK漸漸沒興趣,所以應該不會去弄了) . h1 x$ D) M. h0 ^

8 m+ ^  n3 C' v! G$ P# s: q
  R1 x5 H# \1 ], {$ k) p* v% @% y首先我們先談談並不是所有rom修改後, ! m. |, h) L" l0 M& n
都會檢查checksum強制進入紅屏, : }- n$ P: m" m
此方法也不是適用於所有rom(例如:rockman),
8 z; H# y9 W+ f/ c7 y+ P大至少8~9成以上適用。 ! u! w& s; a, x+ ]

$ D# g- G! c# a3 U8 f" d% E好了 工欲善其事 必先利其器,
3 A- [- V, W% ^( u8 U* K2 }準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
/ j: j( x  ^1 `& x- o, D5 @準備好後,我們要了解以下幾點。
9 W: d. K( ^# e5 i1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
0 t! t! m4 s$ v2 f& z. q/ v2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
$ O8 I) G0 i* q5 C( f0 |, Q3.MD ROM 校驗數據在於$200以後到ROM結尾。 $ \$ g% i; z# U  U$ e6 [- e9 ]

) F! e/ ]2 |5 _4 _, n, g5 T, ^( [現在我們來舉例吧,學習最快的方法就是舉例子: 9 d3 @* ^* A+ ?9 F  x: ]5 p, N
例如我以很久以前我hack的螞蟻騎士作為例子, + q& v7 d8 j- x2 u
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 ) y5 f" S9 b9 c! K& h
3 a3 e. D8 `8 N! z5 L" `- Y( j0 [& e
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
! h' @/ G9 V. I1 A* |我們就將rom裡面分為8bit和16bit。
; [) P2 w) _; K從$200開始雙數為8bit單數為16bit,   Y. z5 o6 Y, X5 x
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. . w  S4 z% j! B; h+ V$ J! v
首先我們先到$18E看checksum檢驗數據,
8 f, \, j' V; }( l% y) x0 L我們會看到3C 52,好! 記下來。   k0 q5 Y% u5 n
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, ) y/ d5 t$ C6 ?8 w% j3 k
OK現在用模擬器開啟ROM看看,紅屏伺候。 7 A  `+ \- u) O/ l+ \$ m: G
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 7 U- z3 v3 Q; ^/ d5 r3 I

7 ^) w. U( E) W剛剛還記得檢驗數據嗎?沒錯就是3C52,   q& \/ @( S) W8 W8 M+ N
好! 現在來計算修復checksum吧,
1 s( n8 m8 ~6 \( K' R1 p2 u首先我們要將00 00 改為 4e 71,而且我們又了解 / w  {1 M; h7 x6 O
此checksum機制是ADD演算法,所以我們多加了4E 71,
/ R# r! D% U& [; `( W就要在CHECKSUM驗證上多還給它, + p+ [0 {0 M0 T  A6 |0 M! h
所以將驗證數據加上NOP機器碼數據:
, k- f5 v& Q7 i1 W$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
+ s* W7 e& a8 g再用模擬器測試,ok 紅屏消失了。 ' ]7 }# o" N& U/ C7 ]; U, V

) F8 x6 [, Q8 A( V4 ^' M/ x. l& i4 |" f5 f2 u/ i; Z0 S8 G
就是那麼簡單。此時你應該還會有其他疑問, # V# x6 e% h9 }- j' y, J* w
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
" K" S7 a$ Z, f$ H我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 " K- h& e1 Q7 ?) P
先將$FF FF-$99A8=$6657, $ w$ N# x2 p$ e: I. y0 R( A
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
, `, n2 F! l5 Y. y; c那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? ; l7 k& S- O7 ^# F( f
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
. U/ Q, u# n+ g0 ?0 g檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
! E0 ]/ m, F% y; `; v0 P先將之前的修改還原,或是重新開一個相同的rom,
" D) @5 b9 G) E* Q" K/ f將rom地址$BBBE6填入數據EA 98, 8 S" t4 U* T( u+ ^2 N" ?
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
1 x! k% F4 P) I, [2 l% l
4 [0 r8 \/ ?/ y$ N% L數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
( K) `1 i7 a% M* s$ D然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
4 {4 T( w. e6 T! ?) R2 Y9 x6 L0 G9 _. \' m! E! z, `
! B# L$ C1 N2 H
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, / ?, [" T' b& |6 M, H' `' c
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
4 k  S% u3 i1 }) d0 Z: L然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 . N3 L% U# P5 k% A
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
$ n- [" Y( E* U- s5 d" M: y網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 7 E7 W" p- m; {2 F& Z+ b1 j
去下載工具。 : F) j+ |& p4 S+ q

* v- l/ P1 L6 U# aOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, 0 V& w  k; d' G& \+ f1 ~; q
相信你也有所收穫。回文是給作者最大的回應, ; o6 L3 s6 O+ b- `* k
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
' T" _5 P+ G9 }$ ?9 `  P( Z8 L7 F+ F
OK 忙碌去~ # t& x* c2 g9 S, n$ S

9 B, h0 Q2 d* C" e; }7 ?P.S. / ]1 T( ^8 m$ j% A

2 n% {3 i; t7 ]* ~6 T1.歡迎轉載並保持文章完整性,並署明
' {) t: g5 ~9 E6 w/ F, l作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 , e" F; q- n" y0 b9 r
http://www.superworldz.cn/thread.php?fid-12.html
: u& x2 N( X, c" E
. I2 e' ?1 W& I# J2.EZ轉載禁止。

' @8 g. n/ |' m* z[ 本帖最后由 疾风之狼 于 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 发表 . B2 W& b# J! U, T1 Z/ I/ U
那如果hack了好幾處地方,怎麽計算?

' {+ m, z+ Y9 _! w2 @有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
1 P/ N$ [+ C. d5 D! Z' j那如果hack了好幾處地方,怎麽計算?
  q! {. V( T- K, P
此checksum算法計算到檔尾,
3 @# {2 H  z3 v就算更改了某一處,也須計算到檔尾,- s* K) T7 K( A9 s$ v
多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:+ U" d( S, }2 Z& Z& s. g; ?
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 发表
, T  K1 `* @: }/ p2 P4 y7 M- Q团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

. s  Z$ s# y/ s6 d7 VHELLO ,
* h! }) g# Y& K. I) [$ N需要用到逆向分析或是記憶體搜尋綜合運用,5 |3 }+ Y+ ^2 U1 B4 ]7 p" ?% O
前者你必須了解X86或甚至要了解SSE,2 S5 e& t/ ^2 U  S+ m: m% B  D
我當初hack 鬼泣4(DMC4)就有用到SSE2。
3 l* H3 z# }: T$ R' W( d' q6 w* G7 s* [1 M
記憶體搜尋綜合運用就交給你思考囉,( `/ ~4 f4 D2 h2 a9 o; f9 g# x8 E' T
給你個提示: "Difference Value"
  V+ M! S) G- s# Z3 o有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:! w9 A( ]" G: t% [/ m
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-15 23:50

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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