设为首页收藏本站

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

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

  [复制链接]

签到天数: 1952 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html% @* W- f8 c. {& P6 b

1 |( K! J' E& I  M% d* S7 Y3 i# L
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 ; p6 a4 Y+ g* D0 U9 Z. P: w
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
6 m4 Q+ p& A/ K' C6 q5 X
2 d2 k7 {  g# G- V◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
# _) T! W* l2 r) O; d0 x9 J◆日期:2007 11/18 (日)
3 }7 z2 H2 u) g& \" I; Q◆組織: DARK SHADOW GAME HACK TEAM
, @& K" v3 {0 c( n& H
% t5 A1 i& \! j! L3 \; \8 B" \2 v/ a! c+ t
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
# g7 B( C% x$ l8 N4 d接著我會慢慢收手,今天上線剛好收到疾風的PM, 1 h/ D# c- b7 c# y1 v% i
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 + t3 @! K1 q( i% k. }* v
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 2 A# }+ |, O: }" t
講解一下MD CHECKSUM的修正方法。 - a) e& E5 j7 D2 o6 ~) _
(以下方法不適用於MD版 洛克人,
$ _- F4 b" y! T* G# vMD 洛克人驗證需詳細分析過才能下定論,
  I7 T" D! @; J& a6 S& J3 d/ w目前對HACK漸漸沒興趣,所以應該不會去弄了) ! A3 W  j' J# D6 `
* L& H$ J9 a- R& T: j4 w8 _- T
. `& @7 C2 _% N8 _" b2 ^
首先我們先談談並不是所有rom修改後,
& V6 [; S/ a/ R1 W都會檢查checksum強制進入紅屏, . V& d# ], u/ U. B4 u/ O# @5 y
此方法也不是適用於所有rom(例如:rockman),
+ p( o" W2 E0 J8 v+ l1 I大至少8~9成以上適用。
9 ?9 U( c/ N- X1 u) I; _6 B/ N4 ?! |1 [( |( R% ]
好了 工欲善其事 必先利其器, ; S+ W0 y8 B2 s8 @; D: I. J* A
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
$ A7 M' c4 Z0 q  F( ?準備好後,我們要了解以下幾點。
8 o) k+ o& v" X+ J- t1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
8 B, I& n3 v9 G) i3 V  i2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 # B' B6 S+ H2 o" J) B# Q/ s
3.MD ROM 校驗數據在於$200以後到ROM結尾。 ' @: Q1 f8 P" u# Z( p3 `

2 a/ K9 S4 ^' P4 e現在我們來舉例吧,學習最快的方法就是舉例子: : Z- P& ?5 F$ d
例如我以很久以前我hack的螞蟻騎士作為例子,
  ?& _* C, w" {) P首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 3 e$ V6 v9 j, o7 B# K& W

( H. }3 w! h+ l" g! C5 n5 t$ m' m由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, + X% d; [! u- Q5 g9 @5 t
我們就將rom裡面分為8bit和16bit。
- u+ T4 d: q0 O) x& q& j7 G從$200開始雙數為8bit單數為16bit, ; [8 L7 y8 K5 H$ C. r% q
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
) a! _+ T+ U5 H# H/ _% K首先我們先到$18E看checksum檢驗數據,
2 @& E6 L7 c, L我們會看到3C 52,好! 記下來。
; Z% i2 E" s" ~3 c8 M3 S接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, # Y4 ?  ?9 i! Q* e; ^- m
OK現在用模擬器開啟ROM看看,紅屏伺候。 ! }; {+ g6 e2 z& g8 H
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
/ x' B1 r; }# e; R7 N0 Y2 a
0 q4 ?! ^1 _+ y8 L7 \, W剛剛還記得檢驗數據嗎?沒錯就是3C52,
  Y; e. v: D( A2 _0 w+ |好! 現在來計算修復checksum吧, ( Y2 F& M4 h" \1 O2 y: @
首先我們要將00 00 改為 4e 71,而且我們又了解 ! N9 b* s4 O7 b
此checksum機制是ADD演算法,所以我們多加了4E 71,
" u9 @. m: ?# a1 }0 P8 B就要在CHECKSUM驗證上多還給它,
6 H# d! R% G- E, P# ^8 }4 B6 k所以將驗證數據加上NOP機器碼數據: ! C& q' ^5 n( }$ B2 a) u
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
- n9 s: ?9 U9 o1 V2 b再用模擬器測試,ok 紅屏消失了。
1 q8 Y0 L6 |) s' h5 B0 B* S. I
) v- X  D- J0 F/ {, w, E$ s  ^/ r9 H( r0 U7 L
就是那麼簡單。此時你應該還會有其他疑問, 5 k. }' n; T! b# o6 s! ]8 N5 r. i
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 4 v) q" I, k6 V+ J4 Y0 T! F
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
6 v  w- ^% z$ x' y6 p. R先將$FF FF-$99A8=$6657,
9 e. @# X" C- f這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 $ u/ h+ u8 [* B2 J- _( z& a
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
$ P) E- @9 Z  Z' ^& |6 K, M; K一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 4 m* f- c7 F( _5 ]' K
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
& ^7 D! e, e7 |; w! [) W& t先將之前的修改還原,或是重新開一個相同的rom, . b( E- {( C5 B$ a: J$ J8 [' a  g
將rom地址$BBBE6填入數據EA 98,
$ \7 D( O/ u* t然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 ; f7 y0 }9 V9 e4 X& }1 a

7 @, k* r* K1 j7 r! \7 E數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,   Y+ `( M* n$ d# n
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
0 }+ ]$ [$ g' I& M$ {& H8 B2 v6 ?- A8 o+ Q" f* Z, X

% Q* r  f- y- R$ _講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
' s7 W# n7 B) _. |. m就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 0 B7 M& K# Q& H7 r
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 3 N5 @  z9 R) r" E  f
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
# e* m4 R" J- l, _網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 + s$ V: J6 \7 n/ Q
去下載工具。 # @! w# ~# m/ {. r4 j

" z, l1 {2 g+ Y1 T! V8 g" NOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
# i1 y  S6 _: Y  W5 X* Y. P  @0 F6 f相信你也有所收穫。回文是給作者最大的回應,
+ L# O8 F5 E7 m* v4 T希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
3 X: y5 |! j) m2 F! |
# N: g9 y8 N4 c& f$ i  `3 `: G: GOK 忙碌去~
" t" Q" T' @" M/ }
- i! {( O' `! {- R& cP.S. 1 f0 K/ f' U9 T

  W; Y1 A* R; a2 L1.歡迎轉載並保持文章完整性,並署明 * D4 g8 x$ G! {; Q. u
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 7 ?4 W; \1 F* J! H% w( N, z; Q- B
http://www.superworldz.cn/thread.php?fid-12.html ( l8 ~' r- d* M

6 b( J; d  t- F  P2.EZ轉載禁止。
! E( k, U  f& }1 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 发表
1 X: f1 I# k! ^9 A( p1 {8 `! v那如果hack了好幾處地方,怎麽計算?
' L- i  J3 I9 C# o( S
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 " q1 J. ]8 x( m+ v0 u3 u" e0 y6 x
那如果hack了好幾處地方,怎麽計算?
4 m6 n7 e4 X* T% @3 D: A; T8 F) e; u
此checksum算法計算到檔尾,
0 u! z. h0 V! o" F0 o* ]就算更改了某一處,也須計算到檔尾,% V) q# a9 ^4 f$ H7 S% q' Z. l* N
多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:6 V6 ]9 d* R1 f' Y% y% M7 S
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 发表 # g/ T, t8 L& s) `! o
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

) e" H2 `4 T! K* t5 SHELLO ,8 i# Z) L* Y. g: B( Z+ @$ [4 i7 L1 A
需要用到逆向分析或是記憶體搜尋綜合運用,
7 R" H; d# ?6 v9 }前者你必須了解X86或甚至要了解SSE,8 \$ E( y0 h, G0 V+ V. l
我當初hack 鬼泣4(DMC4)就有用到SSE2。# w: i0 [! m6 Z( ]6 e$ @
0 v/ o7 ^# B0 ?0 p1 P
記憶體搜尋綜合運用就交給你思考囉,% y6 T  a6 G+ L
給你個提示: "Difference Value"
% f9 [& C6 ~3 R6 B有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
8 x4 F: M7 C$ G( R" |- @1 y5 O# `: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-16 13:52

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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