EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2021 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
# w2 m" r5 x9 |
) p: k  _8 q. F& X
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
; L4 m6 R/ d' yBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
4 k5 y# x. ~' l6 O' l
' K  z! I' z; O8 u5 t5 {. l3 ]0 M◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
  {5 S- Y7 d! P" {: U0 {◆日期:2007 11/18 (日) * ]  N2 i/ g: z0 [0 |
◆組織: DARK SHADOW GAME HACK TEAM
8 B! _  k( Y/ q1 s% R4 N8 n# w
7 A% c/ b+ A/ }6 B* A2 E2 J3 w. G7 q8 N% E8 I/ o& A
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
6 A  Y$ Z4 l: |$ c% t接著我會慢慢收手,今天上線剛好收到疾風的PM, 6 O1 r8 y9 n# p; y% E* T2 G, T
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 8 f: F. n3 y  c$ L$ K
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
! E% p7 n& t4 O& s, ~/ q講解一下MD CHECKSUM的修正方法。
  N# V* F( u( q2 U(以下方法不適用於MD版 洛克人, 8 z3 y+ l; j' g% w  H) J
MD 洛克人驗證需詳細分析過才能下定論, / d  S0 m: }# j+ K. k" ]$ D
目前對HACK漸漸沒興趣,所以應該不會去弄了)
" ]' t' }1 g1 j* w) ~9 w
' r1 b! A. Q9 T# w* `- j" q
+ K' ?' I" u2 q! n' F% l; Z首先我們先談談並不是所有rom修改後,
: B1 F% C: w+ s4 m1 L都會檢查checksum強制進入紅屏,
$ m4 S' t3 `9 p/ }/ T- C/ A& c此方法也不是適用於所有rom(例如:rockman),
7 p" Z* ?( @7 s+ `' F5 [大至少8~9成以上適用。 1 r* \# V0 Y2 A( E  ?
+ E0 Y3 z! ]% B3 S
好了 工欲善其事 必先利其器, - c4 \4 ^" s0 F1 G
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, / S' X- D: r1 y8 v' e1 q
準備好後,我們要了解以下幾點。
9 Q) h2 T8 q4 w6 b1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 0 T, w4 P- x, [0 q
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
2 B6 V3 c! X4 q, l3.MD ROM 校驗數據在於$200以後到ROM結尾。
2 e9 d( M0 p! r& r) m! U( v' [/ [% A- P: b
現在我們來舉例吧,學習最快的方法就是舉例子:
. E* V4 z$ Y7 A7 @例如我以很久以前我hack的螞蟻騎士作為例子, , \8 N0 x2 u- x- a4 X- j( C/ Q1 m$ K
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
' |# X) d: ?; R6 d) t9 c' V0 ^. v6 w6 g* y2 a
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 3 M- @& {$ w% J; s- q
我們就將rom裡面分為8bit和16bit。 - d" A2 B8 C0 ]/ a8 [( V5 d
從$200開始雙數為8bit單數為16bit, & o* w8 a% ]) c+ j2 n
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. ' j6 |8 O  M; i# M( x1 i6 a
首先我們先到$18E看checksum檢驗數據, : T  \+ e% x6 ?, a7 ~
我們會看到3C 52,好! 記下來。
) }" V: v4 R6 A1 |7 \# [8 \3 [接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
5 B* ^" E5 ?0 d) HOK現在用模擬器開啟ROM看看,紅屏伺候。
: x. D3 j% C( @% F6 J沒錯 此ROM有檢驗機制,OK 現在來修復吧。 $ J# W- c& P! M/ J7 a0 O/ {
) J; l8 f7 h! p4 v/ k
剛剛還記得檢驗數據嗎?沒錯就是3C52,
7 H( U2 A1 H8 g1 o) G好! 現在來計算修復checksum吧, $ I, U+ H& O. _1 J
首先我們要將00 00 改為 4e 71,而且我們又了解
. |8 {" T$ ]9 `% F7 f此checksum機制是ADD演算法,所以我們多加了4E 71, $ A/ J* a5 T# J
就要在CHECKSUM驗證上多還給它,   C% |' k1 a. G4 L" u7 Z2 H3 j
所以將驗證數據加上NOP機器碼數據:
, n1 k. I; j% z' f$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, ! Q6 X9 b- b: Y
再用模擬器測試,ok 紅屏消失了。 , `. l3 ?' y# O0 O! a
& y6 h/ F, N, v

9 v# y0 g' ^! O/ I  O就是那麼簡單。此時你應該還會有其他疑問,
* T# m1 T6 y( r- j) T如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 8 \% C1 \$ w8 o' a1 n
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
* P1 c' T& K* X/ N$ k) e& N  Z先將$FF FF-$99A8=$6657, 2 G0 c# x( a0 X: V2 y
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 : R+ Z3 T3 O/ P# c
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? ( |# L3 \2 o9 Y) h( ?% L0 S; k
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 - O& ]- y/ ?- x$ J  N; C* S
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
  u; |/ p+ W# A' l& Q先將之前的修改還原,或是重新開一個相同的rom, $ C6 T. K6 F' X! \
將rom地址$BBBE6填入數據EA 98,
. V+ `# S- M8 V5 z然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
" {( D0 K' E& i  t5 F$ ^! {, z: Y" t* d& J
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
5 E1 E. P( D+ L4 I& M4 ]3 F然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 % Y! P, G* |& a6 x" s

% j& j( |0 ]7 `" U( W
% }' w# m2 {( E" {& r( n4 J講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, ( R5 D+ q7 }3 N. ?- Q
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
, i8 Y1 h- b* C) ?$ E4 v然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
6 g0 j" J  Q2 k% p一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 0 |9 H2 g8 r5 Z. x
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
; `8 d5 Y9 ~& ~去下載工具。 2 n# _3 N! D4 Z2 l: G* H0 O' w

9 R) \& i/ i5 U, P; q& TOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, $ ^  q# A: s' C
相信你也有所收穫。回文是給作者最大的回應,
6 i3 e' s, G5 d9 ^4 B, v4 q0 ]! V希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
) ~: P; g* u) ~6 c, _/ q$ B+ o' p% l% F" h  P) k8 [
OK 忙碌去~ 3 s1 a/ t6 @1 x$ v1 R

# v; ?+ l. S; l; UP.S.
& O( m4 e& H  c+ J  W7 c" P/ z; x
- ^# H) V9 y0 z, q0 s1.歡迎轉載並保持文章完整性,並署明 % K$ s2 J5 g6 Y( Y5 y/ ?8 y! s
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
, F! `( y; V! a# x' r+ ]2 A: mhttp://www.superworldz.cn/thread.php?fid-12.html
4 B" c) ~8 J/ b* Y$ d1 Z7 c& v" \+ V1 S5 I! I& T/ C* u4 I7 c
2.EZ轉載禁止。

3 ~, B& e" w& ~[ 本帖最后由 疾风之狼 于 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 发表 " O( b3 K: }& _- z( a* b
那如果hack了好幾處地方,怎麽計算?
5 h0 y# A- ]( R) C
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
5 Z! i5 m, [, L. E9 r! P那如果hack了好幾處地方,怎麽計算?
( ]/ v' u, k: G: y
此checksum算法計算到檔尾,% M- t4 [4 \. f5 {. `+ J, ^
就算更改了某一處,也須計算到檔尾,
% g0 Z: n. Y& |$ J5 S- N: Z: g多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
. n1 n& j$ T5 b+ Q( i/ V3 N) x& _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 发表
& \8 {4 l6 P5 P) ^6 U( L4 ?团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

7 l( b+ b, ?( y# A% EHELLO ,
: R& m5 T) k" T$ F6 H需要用到逆向分析或是記憶體搜尋綜合運用,6 {; `5 c" H: l- S' m. L
前者你必須了解X86或甚至要了解SSE,* K0 E( q3 j; _! ~
我當初hack 鬼泣4(DMC4)就有用到SSE2。
3 B0 ]+ R' T+ h$ v2 `/ d$ _) E) A! X% p4 S& y' u; h' i
記憶體搜尋綜合運用就交給你思考囉,- x2 Q0 t: w. F0 a- v
給你個提示: "Difference Value"5 _) I# D. I0 W! @/ ?1 C0 W8 T
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-7-27 14:31 , Processed in 1.080078 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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