设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 4332|回复: 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.html
: |0 X1 H' j& P0 ^: N( q( S3 t) Z( c- ]5 g) Z
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
3 b, d" v- d! t: n7 [2 q; m) h" r6 A. tBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 1 q$ O) R( ^7 F, U7 ]- i, h0 S

) i) J" n9 c" E; c  ~◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
' O2 }# a3 [4 _* \- D- w. r4 z/ o◆日期:2007 11/18 (日) . X( o: G' p0 n! B# g
◆組織: DARK SHADOW GAME HACK TEAM
, t) m+ b' C5 j4 G# `. A* ~  W# f7 g% d$ {! _
6 d8 L& h2 U' U! [2 J; F
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
9 L. ?: I0 _4 c! n; p接著我會慢慢收手,今天上線剛好收到疾風的PM,
- E9 `! [9 ]: z# N% J問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
3 |3 z- I% O! ]: z沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
1 e4 d" n  Y3 z, z/ a5 i9 g$ ]! v講解一下MD CHECKSUM的修正方法。
+ Z  K- c! `+ p2 t% M! J+ q(以下方法不適用於MD版 洛克人,
9 A8 _9 L* Q' o+ f+ O- I0 WMD 洛克人驗證需詳細分析過才能下定論, 3 O# y* n# q: J4 A1 v: h
目前對HACK漸漸沒興趣,所以應該不會去弄了) 2 N" t: P$ F4 S* \
: ~" C. ?7 x  l: u7 f: r% y

* C% ?* H) Z% A( w. H4 b首先我們先談談並不是所有rom修改後,
/ n, v* H7 S& j. S" N+ n9 c都會檢查checksum強制進入紅屏,
) m' Y! v" C1 ?% m. S此方法也不是適用於所有rom(例如:rockman),
8 K. c  _, |6 S- i大至少8~9成以上適用。 # \2 p+ I- |9 k+ D+ V( x! c
% k/ M: c& [3 c. A0 L3 D: p
好了 工欲善其事 必先利其器, $ z$ ~* S6 H) x3 l1 D7 F+ S
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
# d0 ?, S7 n1 z) J7 O# Y準備好後,我們要了解以下幾點。
' q+ M0 g) g" D, c0 e* W1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 ) ~# a; p0 F; F4 v$ b- D
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
$ m( E4 O! R. e# `) @3.MD ROM 校驗數據在於$200以後到ROM結尾。 9 `, O* v7 U9 R1 ?

7 E- y% S, W8 m現在我們來舉例吧,學習最快的方法就是舉例子: 0 G2 m* U4 V2 Y, P/ {
例如我以很久以前我hack的螞蟻騎士作為例子, ! u" q+ w) l7 E' M8 R
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
& v8 {5 p& l( L4 b$ P, q8 e; t8 P9 f! k: [5 o
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 6 r1 {/ A! ]# f# [2 N- a# ?" c
我們就將rom裡面分為8bit和16bit。 + B' \3 e5 ^1 @4 ?  T& _
從$200開始雙數為8bit單數為16bit,
, o3 b5 s0 l' }9 s好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
; y1 n! G% _8 x4 S首先我們先到$18E看checksum檢驗數據,
9 l- o0 ]- E% P0 t+ d  m' e我們會看到3C 52,好! 記下來。
( H2 l  i0 p  j$ r: b% T4 f接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 3 A% d. e5 I4 D6 w
OK現在用模擬器開啟ROM看看,紅屏伺候。
! u" ~# m: q) s! V: v# C5 @沒錯 此ROM有檢驗機制,OK 現在來修復吧。
. D7 ?, W. ~/ @! V5 f/ i, p. T. |. g$ |/ C" H, [
剛剛還記得檢驗數據嗎?沒錯就是3C52,
7 r' J2 J7 p2 O( F+ c& ~好! 現在來計算修復checksum吧, % R& y9 j6 N+ B/ N5 _. H8 a* c
首先我們要將00 00 改為 4e 71,而且我們又了解 : }4 K# S+ X2 w$ ]% I# d/ q
此checksum機制是ADD演算法,所以我們多加了4E 71, , v& I- ?. b! A0 G# {* y2 A* m
就要在CHECKSUM驗證上多還給它, ; F; u- e/ \1 v: {9 t5 h& s
所以將驗證數據加上NOP機器碼數據: 2 S% c. @4 p: H! v7 R6 ^
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 9 i1 s2 {7 W  A. o% S+ y" F0 o
再用模擬器測試,ok 紅屏消失了。 1 ^$ K7 k& F' {4 L6 C
2 r8 c2 W# e: }* @5 Q/ G
  e/ Z$ S1 M5 K5 S9 {6 u. [
就是那麼簡單。此時你應該還會有其他疑問,
+ J# _! j5 I, v% H2 T8 E! ~# v如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 # j2 h7 j" n" x6 M6 a
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
& ?6 T! R8 c6 @4 K0 ^0 H先將$FF FF-$99A8=$6657,
) X) y3 p: M8 F+ `9 b/ k) ^這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 ( a, t, g: p1 u: X$ L
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? * i5 Q( `% x: d0 u
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
! \0 z" I2 V& \. }3 \/ f檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, ; m9 _$ G. Y/ B  ?- v+ z
先將之前的修改還原,或是重新開一個相同的rom, ; ^! K9 l; T- A5 A# e5 x/ {) P
將rom地址$BBBE6填入數據EA 98, / ?7 b8 i8 I$ y1 j
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
9 s* K. X; m, u7 z
) F9 p  _, C" s. b3 U! X$ g5 s  @數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, 1 s; V+ y2 Y( S! z
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 * _; O) h3 b. K' _# ?

6 i  T9 R$ U* |4 e/ V6 L2 _* @' f$ q* ~6 j, s9 }
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
" J! @# T7 X2 p3 {) e就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 1 d. {0 t7 m) ]
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
! x$ N6 ^  ~% Z  ~$ h4 P7 v一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 % }8 u' e; |2 c1 P5 W; i% d- g
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 6 P" ?- @4 {+ u
去下載工具。 + K. b$ S! I0 l+ e: _. T
, @: Z- L7 x, p
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, / F- d6 V7 ?% j8 \* c  |) w- w
相信你也有所收穫。回文是給作者最大的回應, # N# o3 H# T2 |% A$ B$ c/ Z! X& T
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
9 H7 o% G; E2 a8 x1 f; `) G2 `" d- k& s' P
OK 忙碌去~ ) X/ E3 r; j$ M$ Q5 [* l, \& y$ x( E

- d% N  O- b) c7 o. wP.S. 4 k9 ?8 G$ D, P/ Q
3 h6 m, e% y, H: b) s. ~( J6 Q
1.歡迎轉載並保持文章完整性,並署明
+ g6 k0 V1 F8 Z作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
4 q  V" `6 n8 K1 Ehttp://www.superworldz.cn/thread.php?fid-12.html # @& s# o" {2 m# N$ f) }
! K0 H0 ^$ G4 a$ i+ {
2.EZ轉載禁止。

  d5 ]4 I! h2 a[ 本帖最后由 疾风之狼 于 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 发表 3 H) ^1 ^, `: K  j* z
那如果hack了好幾處地方,怎麽計算?
( c8 ?* h2 ?; X3 U- p
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 9 R" X4 x2 Y# M+ R
那如果hack了好幾處地方,怎麽計算?
; T: r2 X+ i" \
此checksum算法計算到檔尾,
! w/ V( \- ]5 Y$ F5 a就算更改了某一處,也須計算到檔尾,
5 i  Z& _! |7 Z- c7 P. n9 a8 u多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:5 p5 j( G7 v) Z( o& X2 z" A: L
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 发表 6 H5 `" n9 Q) @0 A, v4 O
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

' p. X% s( o$ i6 R- b4 tHELLO ,
9 `+ s& n8 H: N5 x# t. o2 O! e+ T. O需要用到逆向分析或是記憶體搜尋綜合運用,
) L" b: P* d0 m8 |6 r. E" e前者你必須了解X86或甚至要了解SSE,) X( ]: L# C" A. A# X' Y7 r/ D
我當初hack 鬼泣4(DMC4)就有用到SSE2。
9 g7 l  j4 k+ v
5 P0 r) Z4 V+ P0 n/ s記憶體搜尋綜合運用就交給你思考囉,
- L7 g+ j. ]+ V( h9 j給你個提示: "Difference Value") N* A* K# e7 ~4 M, Q
有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
- Q- K- G) Q# {8 w  s- {0 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 18:25

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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