设为首页收藏本站

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

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

  [复制链接]

签到天数: 1972 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html7 h2 {* F: r' {$ X8 g0 W$ p
/ {" i& m9 x7 c1 I4 s9 k0 @1 J3 j5 `
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 % p6 _4 q1 F. \' W; W) h( v
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
0 I  e$ X! f& W% W- {: K, e% u4 s! m
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL # X) b& w" s# ^
◆日期:2007 11/18 (日) 1 _1 S; ?6 R$ g5 ?
◆組織: DARK SHADOW GAME HACK TEAM 9 _$ }6 O0 i+ _) M' n4 D0 @
7 R1 {: _, `8 _
- H0 T: \4 ^5 c8 B, ^
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
. a$ |  K: z5 M, P+ k  f# j* s1 u接著我會慢慢收手,今天上線剛好收到疾風的PM, $ m5 p6 S; G" ~# \+ F
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 ' d1 E: }9 q9 {: ]" I
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
2 H' Z: f& O5 T; K4 s講解一下MD CHECKSUM的修正方法。 , \& D$ z7 l  o! i& K/ L" t
(以下方法不適用於MD版 洛克人, ' q5 e* w6 C6 R% F7 D- u
MD 洛克人驗證需詳細分析過才能下定論,
6 b* \0 L( t; T+ U- p& L目前對HACK漸漸沒興趣,所以應該不會去弄了) ) P' o/ A' z  w$ x9 {4 g

; r3 H( p: b4 e/ R) `9 j; p9 v- }8 f1 F
首先我們先談談並不是所有rom修改後, / r3 \5 k8 s( O8 A3 w! h) ]
都會檢查checksum強制進入紅屏,
$ S& R& x. E+ v! h此方法也不是適用於所有rom(例如:rockman), 1 f& O8 o* ~: h; C+ x
大至少8~9成以上適用。
/ _  U! v$ K, O4 [+ S* \+ }* A. K: I4 c$ V$ ?, o: ~
好了 工欲善其事 必先利其器, & m. L0 S0 g  D+ j4 j
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, $ P  m0 w! h% A4 B% G, E
準備好後,我們要了解以下幾點。
' Z" }+ {1 ]/ J, |2 ?: B" ]4 V; r1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 % H, [' m6 U- j; `% s, q8 t, u6 [
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 - s6 |" }6 P) x
3.MD ROM 校驗數據在於$200以後到ROM結尾。 - X  \. o5 W6 ]% d. {, n

! f/ r* q# @* i8 @+ t; I" K現在我們來舉例吧,學習最快的方法就是舉例子:
# v' }+ Z) ]0 q. W4 M+ a& R* V7 k+ x例如我以很久以前我hack的螞蟻騎士作為例子,
! E: A8 M) p2 c0 H7 f首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
. I6 U& S$ a0 }7 g8 k% A  z# E2 d, G& O. ~( R
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, / c& l# D& C" Y
我們就將rom裡面分為8bit和16bit。 5 w: H7 r0 i+ W. S( L! L
從$200開始雙數為8bit單數為16bit, " i# P* T* u: J# |# ^
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
8 E3 b0 a" ~. J2 Q% \1 |首先我們先到$18E看checksum檢驗數據,
% G* A/ }0 t  p8 L' f3 ], F我們會看到3C 52,好! 記下來。
1 M* i6 t3 Q1 y" O, j接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 8 {, |$ @) n  Q
OK現在用模擬器開啟ROM看看,紅屏伺候。 - X( t1 U3 e$ h+ p
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
) _* Z' n; o* u9 P. q# ]! u) e# F. o3 p! X$ j# S! q1 M7 O& `/ x2 O4 O
剛剛還記得檢驗數據嗎?沒錯就是3C52, + z. _9 w# R  N$ ]5 R
好! 現在來計算修復checksum吧,   d1 Y+ x% Z1 r' ~% X: N& X
首先我們要將00 00 改為 4e 71,而且我們又了解
* ]% \) b: e* O4 ]! g& x此checksum機制是ADD演算法,所以我們多加了4E 71, ; J9 L4 l% o0 a) z1 \3 i
就要在CHECKSUM驗證上多還給它, ' }! S# ~( u1 O6 x0 l$ p
所以將驗證數據加上NOP機器碼數據:
+ p; t; y% n. _0 x+ y+ d$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
, l6 S- d6 \: K) ?' b再用模擬器測試,ok 紅屏消失了。
8 F( ~4 s; K7 S( r9 B# X/ i: r: J. Z7 [/ r: G8 u8 ^. _! J

# q) K( R8 n3 B5 R就是那麼簡單。此時你應該還會有其他疑問,   F& R% G. f6 A+ R: A+ g
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
7 H* f  r8 a6 u6 ^/ E我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
$ P( C. \4 P# g* g6 Z  B6 m7 q先將$FF FF-$99A8=$6657,
! Y. Q2 Z! E5 }( X4 N這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。   l4 g) H) S0 Z& M/ [" q$ ^
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 0 H  q) w# m# \9 |
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 * T4 t3 j, Q& n2 u# ~3 k: n+ e
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, ; a1 {1 x3 U! i- m
先將之前的修改還原,或是重新開一個相同的rom, # V6 [$ F  H. s- i5 [$ p
將rom地址$BBBE6填入數據EA 98,
- _1 E) O4 S: n然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
: T5 h& ~: V1 X1 N1 ~" o4 J# h* y$ M* [% U' n0 ~( h1 T% i8 ?
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
" I, e6 [8 h- r" U& d+ R然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 ' F: P0 Y2 L$ Q- T' ]
6 W, S" r/ _, z( a) P3 {8 A" Q
" x6 H* Q* i8 r; y3 |* c
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
1 T; ^4 _2 L+ i9 A$ l就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, / D. h4 }; I- L& f8 y
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
; c, q9 G7 Y8 k$ D' L, E一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 ' A' h. w$ \+ E  D
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 ) C+ b$ Y' R# A' E
去下載工具。 6 L+ B9 G9 j9 J, ^  n' r

1 q7 e/ k7 H2 d4 g2 z/ i0 nOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, $ n5 [" R% D6 Y% g7 r
相信你也有所收穫。回文是給作者最大的回應, : @$ R7 Z7 z: I6 J( A/ h. a
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
2 {/ k7 Z+ ^- D
8 }4 u/ v# \9 G, |! COK 忙碌去~ " S# M* d! Y( a5 N5 v8 y2 r0 [

0 Z: A* H+ ]" S: ]) F, t; i7 rP.S. $ G/ ?8 D, ~; m8 p
, |& p/ ]1 k- l2 z8 I
1.歡迎轉載並保持文章完整性,並署明 & ^! p/ b, d9 }+ G: Q5 R
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
) v8 K- _3 ^% m) uhttp://www.superworldz.cn/thread.php?fid-12.html
$ T4 q1 p% a" i$ V
' j0 h$ \8 F8 y2 ~2.EZ轉載禁止。

! B0 d5 t6 `5 j" }# M  T! l# ][ 本帖最后由 疾风之狼 于 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 发表
$ s/ F- b9 m; K; Y$ {那如果hack了好幾處地方,怎麽計算?

$ m( u5 J& Q8 J/ D% z8 x% X有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
) z  Z$ \0 b* ~" H/ U+ y那如果hack了好幾處地方,怎麽計算?
4 W0 O+ j* k  n! g3 E! X
此checksum算法計算到檔尾,+ G8 v9 p, H$ K- A0 ^/ @+ s& a; F- y
就算更改了某一處,也須計算到檔尾,
  _9 d9 |5 f6 G/ f& ^! L多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
; g  _9 ]( d& Q1 U$ thttp://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 发表 ! P4 N! h. X' T' R3 W" g
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

$ B0 V% ^/ P  @* M7 X. u. ~: t& dHELLO ,6 U& o( N0 O' h3 D
需要用到逆向分析或是記憶體搜尋綜合運用,
* N9 P. ^0 a3 x前者你必須了解X86或甚至要了解SSE,, M; R& l& ?7 L# w
我當初hack 鬼泣4(DMC4)就有用到SSE2。9 l, a3 @# w9 W/ F( ^: I) J
( T9 ]0 E. F% o$ ^
記憶體搜尋綜合運用就交給你思考囉,
! k7 M/ r: b( n: ~給你個提示: "Difference Value"+ H) p7 S: s1 X' k. |1 b
有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:/ s1 k7 ?+ u1 y4 Y$ b7 H
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-6-5 19:07

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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