EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1894 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
7 n% ], e% H2 R! L
' ]7 n" C/ Z2 i7 c
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
+ I1 S7 P1 ^. e0 v. mBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
6 }- k7 S3 ]4 L5 W' n: T6 M! K
1 t; |! o& ]! F" ~: m2 X( l◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL + g5 M3 m0 A' [8 h1 E
◆日期:2007 11/18 (日)
( ?5 k6 E/ k5 A6 }◆組織: DARK SHADOW GAME HACK TEAM * [# c6 L5 c+ d" X- J& Q: T

1 h( ?" L$ s. e
) t+ |7 d! }7 }+ {. b8 ]3 CMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, ' F" Y- M+ o& y. \8 X
接著我會慢慢收手,今天上線剛好收到疾風的PM,
4 Q7 h2 M2 P2 n0 ^, g問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
9 K, k, M9 @  R4 }, d( E. V沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 % R2 g4 P/ }; k7 b- ~
講解一下MD CHECKSUM的修正方法。
& P- v4 e5 \- \0 T$ {# C  i+ J(以下方法不適用於MD版 洛克人, / x3 }. _0 U. `1 L5 _$ A- r9 L
MD 洛克人驗證需詳細分析過才能下定論,
/ o6 P' u) L; L: N; Z* q; A目前對HACK漸漸沒興趣,所以應該不會去弄了)
+ u+ M2 k: a/ C2 o% G3 I8 @% X5 _
, T6 T+ @& L+ s: b2 z" s- b+ ]$ [" C" q7 U
首先我們先談談並不是所有rom修改後, / v0 {: |5 N2 ~4 f" A- o
都會檢查checksum強制進入紅屏,
) O8 ]. f: C( ?! _1 q1 F此方法也不是適用於所有rom(例如:rockman),
5 a! S* t1 X) u- t; {* t大至少8~9成以上適用。 4 a7 y: G- Z& [. H2 z* {! n2 J# n& E2 j
4 L3 X) s5 D* ?
好了 工欲善其事 必先利其器, + G' P3 }- f4 N( Z8 c
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
; U5 H9 s) W; ?準備好後,我們要了解以下幾點。
' j5 i) L) X7 |- p* M5 C1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 ! c( Z3 |8 |9 n" ^3 n  d2 p5 k
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
! [/ T5 D" K' d* K. n3.MD ROM 校驗數據在於$200以後到ROM結尾。
7 _2 W; S7 {9 k9 u7 t; m
# M1 f1 D6 L6 o現在我們來舉例吧,學習最快的方法就是舉例子: 2 R& Y5 `9 l: G* K
例如我以很久以前我hack的螞蟻騎士作為例子,
- d# C& E% q; f: i首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 ) P- O7 v% _( ~( P! u
3 c* N0 m; x7 P& e& I" s% a! i
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 2 z0 b( c% @/ @( Z
我們就將rom裡面分為8bit和16bit。
: a+ l& [% P* ^* U2 M& d+ J* u8 |從$200開始雙數為8bit單數為16bit,
$ B( c9 X- K% M- q/ R# ~好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
2 m( v2 J4 }5 _' b2 ^首先我們先到$18E看checksum檢驗數據,
: Y" S9 `7 j7 g( T$ [+ f/ t" `4 b; w+ {我們會看到3C 52,好! 記下來。
" J7 w. c7 I9 ]9 C6 @接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, , ~1 A& l6 h! |- `2 |/ ]. T
OK現在用模擬器開啟ROM看看,紅屏伺候。
3 |0 A  k' M, Y, J沒錯 此ROM有檢驗機制,OK 現在來修復吧。
0 v7 J, A2 {8 s9 r1 d, S; {3 `
7 h  a' y7 o9 v% f4 }' L7 i( s* c剛剛還記得檢驗數據嗎?沒錯就是3C52,
5 S0 ^3 k3 D1 f好! 現在來計算修復checksum吧, # ^7 P& }- D* M& j$ T3 X4 j% t( m
首先我們要將00 00 改為 4e 71,而且我們又了解
' C8 R: O3 a4 E8 B  c此checksum機制是ADD演算法,所以我們多加了4E 71, . V5 y, g9 [4 J* i# ?6 l# c/ W
就要在CHECKSUM驗證上多還給它, " l7 l! v4 Q  M
所以將驗證數據加上NOP機器碼數據:
4 |5 d" b+ w; n6 }$ \; e# q( P: i$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, 9 x* Y# t9 X3 \( y( E* p
再用模擬器測試,ok 紅屏消失了。
7 B/ S2 p" k% Q1 o/ {7 h1 W
3 t4 V0 I: {, n3 Y% `& W3 o6 ?: K! D" D0 T
就是那麼簡單。此時你應該還會有其他疑問, " G, l' U0 Y* C4 E  w
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
2 B( e& H# _6 p( m+ x, Y% e8 P( `+ }我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 # Q* _* s5 h9 P  H1 o
先將$FF FF-$99A8=$6657,
6 \9 H- L; j+ [這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
$ b: g7 U! }4 Q+ O/ y" V, l那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
) F/ ~# j6 i8 Z( a0 @! p9 \一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
: c! \. I5 {+ P9 w9 C0 T: S* o( l檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
3 ^" f. D7 R2 s# u4 l+ ?: p先將之前的修改還原,或是重新開一個相同的rom,
0 o) F2 l/ Y0 r3 G$ L5 h將rom地址$BBBE6填入數據EA 98,
) J7 t4 T$ P. U# n然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
9 @3 [0 @; B: p1 ~4 ~( X) T* U
2 [4 ]7 U/ U7 j數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, * ?- N. X6 v# d8 j
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 : X9 o, Y# ~8 w( J8 d9 c) v# F; h

2 y! y7 l) W4 ^+ X) V# V
# F- {1 z; ?2 Y; ^' J% d/ q6 x9 }; g講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, ( h" b) K1 X- r/ a; Q* E& Q' M
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
* M# ?' G* a& `然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 * S: z9 ~  @7 L/ _1 {/ |: W! y
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 4 d" W; v1 |; C) `1 q$ O1 o. A' P% ?
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 2 D3 ?6 j% I& c% |
去下載工具。
& P- f5 Z2 D: O& z, A
, X( V5 \/ m9 sOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, ( z) }+ F& k) |  Q+ @! D( y3 [# M
相信你也有所收穫。回文是給作者最大的回應,
1 \% Q2 `. ~1 P9 ]5 ]: n0 r# O9 r希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
  t1 |& v/ H) p0 U0 s5 A6 B0 r; E' Z1 O* K4 h/ k7 t5 Z
OK 忙碌去~
5 h/ |. w3 @( u5 Q( \
$ j/ T$ I: W1 u1 q7 qP.S. - ^0 h. D# N2 z+ ^' f

" Z8 W5 c$ U; ?1.歡迎轉載並保持文章完整性,並署明
4 X: @3 `  V; u, q1 P作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
- s  q5 j$ q7 K  v/ hhttp://www.superworldz.cn/thread.php?fid-12.html 1 `3 _# b2 m  Q8 c- x6 H) \

9 Y. [1 q7 m( `2.EZ轉載禁止。

! R! A0 n) `9 y/ f' |% F3 [[ 本帖最后由 疾风之狼 于 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 发表
+ T9 `% K# i  G4 ^' [  V3 c6 a那如果hack了好幾處地方,怎麽計算?
2 Q* A8 a1 D# s3 g
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
4 B  E0 [, x2 b* k, k# V5 j6 ]那如果hack了好幾處地方,怎麽計算?

+ L. X$ J- W' m此checksum算法計算到檔尾,9 i& @5 ^* r. t% g3 ^6 U
就算更改了某一處,也須計算到檔尾,* l' `( D. D3 n8 V: o# B8 y$ i
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
- G. ^. }! v; {$ q2 x1 shttp://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 发表
. v* K; Y: }! l; j+ l) g  a团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

( u# `$ X. E! ^! y# u' Q/ mHELLO ,' }4 [  V; I; |$ }5 T4 s& d
需要用到逆向分析或是記憶體搜尋綜合運用,
7 E7 }* t0 u6 p5 v前者你必須了解X86或甚至要了解SSE,
" j: ]9 M8 V* E+ e6 P, z! w我當初hack 鬼泣4(DMC4)就有用到SSE2。
) d. Q9 p2 e5 r
( ~' ~2 T2 ?" ?記憶體搜尋綜合運用就交給你思考囉,8 w3 `$ v% U3 [7 o9 j  X
給你個提示: "Difference Value"
7 e, F) J! B8 _1 h有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2026-2-24 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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