EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1888 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
2 D, S5 W$ f  a% j) f5 O4 W6 z2 o! _8 C/ P7 x* U) l8 P
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
1 ?5 e# k) P" q# g7 }7 Y$ tBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 0 h. p' z! }4 f- z6 s

6 P  G* _% i. J' t, |◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
% j& E$ ^' E; [! }" ?- G9 K+ N5 M- f8 P◆日期:2007 11/18 (日) 8 b6 r3 A* z/ W1 [5 L+ ~- l
◆組織: DARK SHADOW GAME HACK TEAM 0 N. A. c6 h& B1 w& T/ l

; P! _/ f+ `7 f
* i( M7 {( p/ M! v: y0 uMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, , D( _) F0 N: R. s) I. M' U
接著我會慢慢收手,今天上線剛好收到疾風的PM,
+ S& l9 f2 |6 K- v! M& r+ k問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 7 V) {/ q" c3 r  Q0 V* p* P
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
5 x( j& n; T7 E3 D8 R3 V) k講解一下MD CHECKSUM的修正方法。 2 J8 R5 A' B) `6 s3 d
(以下方法不適用於MD版 洛克人,
* p8 `9 ~" V! _MD 洛克人驗證需詳細分析過才能下定論,
" g$ B' o) U% `! A目前對HACK漸漸沒興趣,所以應該不會去弄了) 0 D  h/ |+ @8 x& D$ }) Z
( d3 A& ]- @( a9 \9 I- R
( G' \( `9 M6 E* s
首先我們先談談並不是所有rom修改後,
- g' n* z+ n2 g都會檢查checksum強制進入紅屏,
% V# n9 z2 j, j4 g+ H此方法也不是適用於所有rom(例如:rockman),
% D/ z4 k: O/ I) G" S: z大至少8~9成以上適用。 ! @; ~" r% S5 H. i8 \& A; Z0 W
7 |: F/ j9 F% w) O
好了 工欲善其事 必先利其器,
) k0 @5 J6 ]8 j) T9 \# T' m準備工具 16進位編輯器 + 你要改的rom + md 模擬器, 8 a9 G# w7 H/ a2 u. }3 |& B
準備好後,我們要了解以下幾點。
$ _; R' r% s" z' l/ t7 `: r1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
$ O: F9 [/ C& l* u5 b5 j* j2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 0 j4 \  O/ ]! V) y
3.MD ROM 校驗數據在於$200以後到ROM結尾。
( j- ?6 _6 o" H( n% T9 b
4 ]1 s+ R4 d* [( X; h4 a現在我們來舉例吧,學習最快的方法就是舉例子:
5 q' i# s% W0 D( z. f例如我以很久以前我hack的螞蟻騎士作為例子,
# _. `( G$ M; e5 U首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
/ f9 }, }5 h/ ], H% c5 ~4 h* A/ f& _  ~: j
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
- |! g' I9 ^; x4 Z" \. O  \$ @我們就將rom裡面分為8bit和16bit。 7 a$ M- B' n4 ?  Z% e* D
從$200開始雙數為8bit單數為16bit,
0 v5 v* I1 `: S. R* u  n好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
! x! K' |2 V7 t+ c* j首先我們先到$18E看checksum檢驗數據, ! U! Q4 a3 j3 c; X
我們會看到3C 52,好! 記下來。 5 C6 V* R/ {6 l
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, ' ^( Z7 p/ ^  {6 p8 i
OK現在用模擬器開啟ROM看看,紅屏伺候。
$ F# C; c8 G5 l- m- y7 I沒錯 此ROM有檢驗機制,OK 現在來修復吧。
# R. }9 X8 `9 U
/ `1 ?3 h$ W% N% C) p! T2 D: M剛剛還記得檢驗數據嗎?沒錯就是3C52, 6 K; m3 |5 j; Z# N8 ^! c
好! 現在來計算修復checksum吧, # W' E8 h, T' f. g# a5 S( O! u
首先我們要將00 00 改為 4e 71,而且我們又了解 / `4 j/ V9 z! p0 j
此checksum機制是ADD演算法,所以我們多加了4E 71, 9 ]  {" {. y3 O% {, F0 S1 R- @; H8 Z
就要在CHECKSUM驗證上多還給它, - X+ F5 B/ U7 G
所以將驗證數據加上NOP機器碼數據:
( \9 X7 f  y# S5 _$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 8 g8 A( r" s6 t2 i- i; A: H) {
再用模擬器測試,ok 紅屏消失了。
; f6 S4 q1 q& J9 k* e$ g+ U1 y) b- L. r  {7 S2 s; z$ ?

6 b  q' {( S5 z( z+ o" V+ l2 Z就是那麼簡單。此時你應該還會有其他疑問,
& d. W) C6 E5 S; n$ G如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 # w, x9 f# i( g/ G4 ]
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
) e$ g  x, I; k4 m! P* C" _6 W2 X先將$FF FF-$99A8=$6657,
) w" o. L( R* e  q) S( G; Z/ N這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 7 r2 v0 O- X) C; h
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
0 d1 I' N+ s: A" d一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 ( C. l9 A6 U- z
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
, [$ @. ], H6 N" `- f先將之前的修改還原,或是重新開一個相同的rom, 5 U# }- A; e$ r3 e7 Q2 o
將rom地址$BBBE6填入數據EA 98,
) C2 ]* f- `7 O' P# h然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 ) U$ a/ F: M9 q( E# d5 g& B( C

) x1 m: o! f! D0 M2 p% w1 ~+ p數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, 4 \1 e! s- A, p
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 + a, A- l% j( m$ r5 m; C  X  o

; Y0 R0 e, D) p+ P% q/ L/ S1 `/ d8 d0 o- E. w
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, ' ?( x0 t" d' I# C" w
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, $ D/ o. b) f0 {
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 " L) l" s1 d/ q# {  l- S
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
. Y% g/ U0 V- c% Q. h# e1 q網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
5 J! q/ `7 {9 o' ]% L- e去下載工具。
! ^6 X, U! ~; G4 w# t. ?
  Q$ ?  D7 B. ]+ o/ OOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, # v( ]1 W, M; ]% Q8 V% N* ^
相信你也有所收穫。回文是給作者最大的回應,   A# Z- O+ ^6 |  c8 v" `
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
5 {0 ^) ?. P2 ]1 ?& t. d$ t1 }; D/ Q* F! o
OK 忙碌去~
& j8 T9 _# p  X5 j. T$ n7 a* q& f$ i# d
P.S.
  k( I6 S0 E  t* z: x9 |  G. M- K6 h1 X1 G' h5 L( ~
1.歡迎轉載並保持文章完整性,並署明 5 i6 E. R! W5 b& J
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 " v8 L0 l3 p9 ^; |1 Z
http://www.superworldz.cn/thread.php?fid-12.html   g9 R2 R1 ]2 x/ ~

/ e6 R" ~* [% p7 f2.EZ轉載禁止。

5 g% S% x" z# ]( L4 B[ 本帖最后由 疾风之狼 于 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 发表
; z, K* F5 _! a$ S! {# [% \那如果hack了好幾處地方,怎麽計算?
* b" h/ C& j* N) B7 S
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 8 I4 f4 l% P2 R. Q
那如果hack了好幾處地方,怎麽計算?

% z0 i. k+ _6 N此checksum算法計算到檔尾,
( {4 v$ ?+ E9 D8 I就算更改了某一處,也須計算到檔尾,* H; W: ^; |- j6 s- `
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:# f* K! U6 z" X3 Q0 w0 e6 m
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 发表
2 i% v( P0 I7 _. y' k6 K; k! }团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

. x) c2 P; M% p" Q8 EHELLO ,
( @- @: ]) Z# I& p需要用到逆向分析或是記憶體搜尋綜合運用,
0 v4 O! k" }1 T& _! L前者你必須了解X86或甚至要了解SSE,1 L* Z" n. |2 d/ s. U: _
我當初hack 鬼泣4(DMC4)就有用到SSE2。" @, b  z; ~& H/ X/ u$ Z
+ V9 f& y6 H; K* P; V
記憶體搜尋綜合運用就交給你思考囉,
5 f$ X4 \: c. g% L給你個提示: "Difference Value"
$ H: f) [. c! c有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-3-14 22:14 , Processed in 1.183593 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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