EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1810 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html2 V- w7 B5 ~- \' _$ T

1 m6 y" [; T1 G8 m3 w
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
0 k- z8 K  a; qBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
- A) n5 n# {3 z% P2 j, w) {% Q9 J, d4 g! z8 X$ Q+ i2 J  X
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL % I4 u$ c7 z- L. x$ V8 G7 }/ S. z
◆日期:2007 11/18 (日)
) o! c5 t4 b$ b" @0 N" h8 p' d◆組織: DARK SHADOW GAME HACK TEAM
+ a+ n( Y( a+ @1 U0 Q  ~0 o. d; I
$ s. }& h$ _1 t4 R. V$ V6 I, D
& M4 n6 ]' n' u  E2 XMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, 8 [+ s5 N, c, w& E4 Z) f
接著我會慢慢收手,今天上線剛好收到疾風的PM, ( R9 m* ]; F4 ]& I( O
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 ; `; y5 `; p; M; N' l
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
2 j" M: K% E; J講解一下MD CHECKSUM的修正方法。 2 Y' y+ C8 S  A8 P6 ]( l0 N, A
(以下方法不適用於MD版 洛克人, 7 m8 |% N: x7 f1 J- L; a7 i9 R9 U0 g% _
MD 洛克人驗證需詳細分析過才能下定論,
. t0 Q% @7 F, a4 H" @# ?4 l0 f$ T目前對HACK漸漸沒興趣,所以應該不會去弄了)
0 P* D- n# J& u: U" x, `& Q0 @/ Y, `! _' w* m6 z
' C- B' e3 A5 v4 a6 g8 ~! }  o' M
首先我們先談談並不是所有rom修改後, 5 @# R3 X9 z" R
都會檢查checksum強制進入紅屏, $ O3 |/ _6 P- H! |* \0 Q; i
此方法也不是適用於所有rom(例如:rockman), 8 d8 }8 \4 ]/ U; J0 `+ V3 Y
大至少8~9成以上適用。 * O* J, G/ b0 ^0 A+ P

" V/ ]% k5 c0 w8 Z: u: _' D3 }好了 工欲善其事 必先利其器, ' ~; V* U& G+ v* b4 T2 g
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, , g! D0 `! G  o/ r0 x* _: T
準備好後,我們要了解以下幾點。
/ ]8 Z( D! k% e- t+ X; A0 x# `1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
) S4 y! H; F$ g, Y9 n2 W# t( N2 m, }8 B& Q2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 6 a+ E+ O5 [* U
3.MD ROM 校驗數據在於$200以後到ROM結尾。
5 V  c  p! L1 _+ R4 z; ^! A* {9 ~- l3 f7 A7 [( Z' j
現在我們來舉例吧,學習最快的方法就是舉例子: - k: D) w! u& B8 T  J! G/ F. f3 u
例如我以很久以前我hack的螞蟻騎士作為例子,
( P& r* p/ t6 v1 q% P& U; b首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 0 K  Q' ^7 Q* ^; t

2 K! v1 r7 ^6 U. |3 W1 t& N由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
# N' u* x1 n' a5 y* U我們就將rom裡面分為8bit和16bit。 6 m* L( [" \2 G: Y! a: n4 @$ X8 p8 `
從$200開始雙數為8bit單數為16bit,
0 Y0 |/ k5 a: u5 |% H! F# O4 x好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. # i4 o; B/ B- V8 y9 O. g$ h
首先我們先到$18E看checksum檢驗數據, ' |* @0 B; `0 b7 n& d$ g/ W( q2 F9 ~
我們會看到3C 52,好! 記下來。 : V2 w1 a! g& K3 \2 w1 v
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
- \' L$ W* M7 S+ e8 U$ B6 K7 |OK現在用模擬器開啟ROM看看,紅屏伺候。
# ^7 F3 a/ Q4 S4 L2 P沒錯 此ROM有檢驗機制,OK 現在來修復吧。
4 ^; y! R, f6 z0 a' ~+ a0 k, P% x. n$ ^* M0 R; R7 H/ I! }. E: O2 |
剛剛還記得檢驗數據嗎?沒錯就是3C52,
. C9 y0 b3 b8 z( M8 b, n好! 現在來計算修復checksum吧, " n7 ]' n2 N: {" I0 v& L% F& Z+ o
首先我們要將00 00 改為 4e 71,而且我們又了解 1 z% Y+ J2 b3 S  q
此checksum機制是ADD演算法,所以我們多加了4E 71,
2 w+ y7 A, ~4 d9 Z; i6 ~2 d0 ?就要在CHECKSUM驗證上多還給它, * e4 |# c5 H( ?+ s. E
所以將驗證數據加上NOP機器碼數據:
+ l% Q; L* s& W, j$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, . W2 d/ j' Q# |6 }* `+ k
再用模擬器測試,ok 紅屏消失了。
) I3 n) M% _6 G: b
( L. i: G) `. U# A, }/ ^; @4 `. O  z, P& M5 k
就是那麼簡單。此時你應該還會有其他疑問,
' k% i6 e( ~$ C2 |, u如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 ; j7 X0 ]$ ~% d7 {
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 & Q* p; T! D6 B
先將$FF FF-$99A8=$6657,
8 @( P1 R+ s3 k" o+ N3 w, ?這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 # {8 ]/ z7 H. D- u( r' C
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
; K: v; E: e$ G+ P; ^: x一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 4 v+ v/ N: z( u
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, " a& ]1 t- G! G
先將之前的修改還原,或是重新開一個相同的rom,
4 b, v4 N8 f% }2 Y. d3 k將rom地址$BBBE6填入數據EA 98,
6 ?* b5 L& U) e: |5 \  }然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 8 B0 V/ F% _% [

+ _: v1 O; Y( c數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, $ D; B3 i3 {( C2 @
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
/ V1 x6 n. n. S) {6 g& y! B% F
- b3 K7 }# P5 I
/ r! ?. t: n" W4 f; h4 b* l講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
! q6 @1 G1 t( H3 P6 b6 p就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, ' @  N0 B9 y/ S5 s' G/ Y
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
/ N& i" |" o6 H5 Q一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
9 c7 i) W4 ]! K1 s; o7 }+ V網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
' F7 j, B8 f7 Q7 J, Q- k去下載工具。
5 l9 o$ i- p3 |4 B7 ~
2 a: [/ j1 f- [# ?7 OOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
: k( v2 N  m) x1 Z" s相信你也有所收穫。回文是給作者最大的回應,   i- e& O3 y) G
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^   C7 \, Z5 z8 }0 D
* ^, e9 n: }' A' _2 [
OK 忙碌去~
) ~% Q9 ~) B; Q+ t' [8 Y! N8 i3 V
P.S. . T/ t2 J; b/ F& L( D+ u

/ ^! E; L& Y; ]* y& d/ _4 V* K/ [, P1.歡迎轉載並保持文章完整性,並署明   L* J. X0 e" a( w9 m2 p3 U$ D6 {4 V
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
7 n  i; z1 a1 R. Q1 E" h! whttp://www.superworldz.cn/thread.php?fid-12.html
6 `; A/ y2 a' E% B6 m- p  u
* ^7 w# N& _4 I+ Q+ a" M% h) u2.EZ轉載禁止。
+ W2 |! e( L# m9 ]% ^# S
[ 本帖最后由 疾风之狼 于 2009-3-13 18:06 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

该用户从未签到

发表于 2009-3-12 22:20:13 | 显示全部楼层
那如果hack了好幾處地方,怎麽計算?

该用户从未签到

发表于 2009-3-13 00:21:48 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
3 G, y7 y. Q8 g- v8 ~那如果hack了好幾處地方,怎麽計算?

/ p9 F& s3 r. w8 D8 B有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
* W3 n( _) A+ s0 z0 q那如果hack了好幾處地方,怎麽計算?
( j9 ?6 T- [' p6 ?) X: f1 f3 `
此checksum算法計算到檔尾,+ A. d* h& [' V, ~
就算更改了某一處,也須計算到檔尾,6 \7 e$ o; L% v" k
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:6 @# r) R0 I3 ]. f$ u+ G) ~
http://bbs.emu618.com/forum/thread-95790-1-1.html

签到天数: 80 天

[LV.6]常住居民II

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

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表
* `% U6 y2 U* W, E% Y团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
; l! y4 y' g* ?9 w
HELLO ,; I( T+ R" t* y& o/ r
需要用到逆向分析或是記憶體搜尋綜合運用,
' }& e& {. {) F5 P3 C' W前者你必須了解X86或甚至要了解SSE,. E" }/ [# G9 V0 u& z7 J
我當初hack 鬼泣4(DMC4)就有用到SSE2。
4 \9 ~' J& v2 [8 l
* B# J* B) a) T- a- O! o* w記憶體搜尋綜合運用就交給你思考囉,/ W( X7 P2 N4 V, V4 y
給你個提示: "Difference Value"2 T" U( n4 S3 T
有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:: [' n7 Y6 n6 ^$ G: J
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-26 04:44 , Processed in 1.081055 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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