EMU618社区

 找回密码
 立即注册
搜索
查看: 4174|回复: 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) E$ \& o! }8 _) c8 O# x( E

% O/ v8 l! r( M$ Z# M4 @" N& q* ^% H
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
5 @9 E/ q, R. a4 e, J# ?BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
3 g  h) U7 `6 v: e0 t5 b3 P
; E/ @. u6 e3 N◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
. s# i6 W! c5 O) q! L( t◆日期:2007 11/18 (日)
9 f8 I0 v! e" F% V3 V3 {- r* R: O% ?% l◆組織: DARK SHADOW GAME HACK TEAM " k4 |5 r3 d: ^
& w* v2 u& t% ^% C

4 q3 A* I. ^% i. y2 e7 I+ c) @4 V$ {MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
( v. A. M# w- h+ S6 |8 \接著我會慢慢收手,今天上線剛好收到疾風的PM,
8 E" U; }) W9 j* J- U問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 2 K/ K* a: |- _' ^8 P
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
3 ^" O- o' l8 L$ `) ^講解一下MD CHECKSUM的修正方法。 9 P7 g6 {1 b* Y" V, {5 O+ n
(以下方法不適用於MD版 洛克人, * a8 p  a; p! u% u2 k* v
MD 洛克人驗證需詳細分析過才能下定論, 3 ]  s* B$ k; j8 l
目前對HACK漸漸沒興趣,所以應該不會去弄了) - T: |4 y; G, b6 d4 |  V" e
# |$ D; v$ n7 M- |1 b9 J0 w# N0 a
% _5 y0 G- h) @4 i4 `
首先我們先談談並不是所有rom修改後, 1 s3 G# `5 Q: w
都會檢查checksum強制進入紅屏,
2 p' x& ^  N, I( W8 l$ X% H7 @此方法也不是適用於所有rom(例如:rockman),
  |, ?5 R% ^3 W' i1 l: D+ d& }大至少8~9成以上適用。 2 I- V: q+ v7 j" m! G. ?* Z8 ^
. t- P" G! ^: l7 J
好了 工欲善其事 必先利其器, 0 {0 A( g; N9 U/ g* M
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
) W$ n; z9 F  x( n6 z準備好後,我們要了解以下幾點。
/ Z/ _9 _/ c* J* u# P" N. w0 W/ T1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
+ s5 |% }$ h% \7 A7 A2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 1 ~5 x& r) e: N! I/ x
3.MD ROM 校驗數據在於$200以後到ROM結尾。
6 b5 @* m6 J( ?& K: k: Z
+ _3 G3 w/ a1 s' |! _現在我們來舉例吧,學習最快的方法就是舉例子: ; }! t$ ]2 g% S- d& [* R7 ?
例如我以很久以前我hack的螞蟻騎士作為例子,
' i% Q8 R3 c2 d; v+ o: i0 i! i7 p首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
/ e. A  e' m, [, J9 F6 [
; b7 ^4 j4 K: t0 F* |% g2 y2 n2 i由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, ; y- A. v( O4 y+ P9 l& H3 y7 l4 T
我們就將rom裡面分為8bit和16bit。 9 X' I; I% y" u, z$ V. M) t: M
從$200開始雙數為8bit單數為16bit,
3 B: {2 ]! g2 p3 c  K. B- f好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
) t& t0 A1 v, ~/ S( v首先我們先到$18E看checksum檢驗數據, 2 ^! \$ k4 x1 z5 B  l$ @8 o9 p
我們會看到3C 52,好! 記下來。 & c% @* w# e5 m% H
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 5 g( w$ i3 W% T8 h$ d) s, j
OK現在用模擬器開啟ROM看看,紅屏伺候。
( m0 \4 O7 U& K沒錯 此ROM有檢驗機制,OK 現在來修復吧。 2 h4 W. s6 g+ Z

5 f2 }- G5 {6 w* A: F9 @剛剛還記得檢驗數據嗎?沒錯就是3C52, * O+ S) v& c0 X6 \0 ~" g1 b
好! 現在來計算修復checksum吧, # D$ S! x$ q( T1 G$ A
首先我們要將00 00 改為 4e 71,而且我們又了解
" z2 k% E: `& Z% c此checksum機制是ADD演算法,所以我們多加了4E 71, 6 y' n; z" ~' ]# K4 N
就要在CHECKSUM驗證上多還給它, $ g. R+ C2 u8 Q) N
所以將驗證數據加上NOP機器碼數據:
; M0 D6 D9 l1 `# l" |$ ]$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
$ N! J" l7 F  ?/ s5 _; P再用模擬器測試,ok 紅屏消失了。 / B% m- E- O- I7 s. v6 y+ U$ D0 q

4 |4 m. o- l$ U" t/ l7 L0 v
5 F; \" D3 _$ O5 b( t就是那麼簡單。此時你應該還會有其他疑問,
3 |0 y3 f  @2 B3 F% }0 {9 G如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 5 ^8 d* B3 _" M& a7 r$ b3 q3 ^. c
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 ( o3 @/ B  J2 Y) B- Q
先將$FF FF-$99A8=$6657, 9 Y: Z+ i. Y" R- K3 F
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 7 Z, P( Q: s1 l+ d1 D% m
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?   A1 ~* N# J( K. j
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 ! A5 m( T( X7 \& o
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, 2 ~7 M; U$ c: R- F5 ]
先將之前的修改還原,或是重新開一個相同的rom,
2 w' o5 g" h1 A$ J. }% H) t5 n8 C將rom地址$BBBE6填入數據EA 98,   A  l/ N+ f1 s0 U1 l/ e
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
* X9 x" Q: C" L" p+ t7 [$ _4 Y" S, ?& u$ z9 i4 ~
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, 2 @+ ]/ v1 a# r7 g; O6 L2 [- J
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
$ \, Q) K- i, Y$ x& p/ h/ F; i7 w3 Q! Z+ Z2 k$ P$ k6 u9 H
/ C; K- o, ^6 J) V& g
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
6 i3 H$ N, L5 g  e9 |就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
* Y* L$ H4 \8 F7 W( _0 s: S; o然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 & z& {- [$ J+ W/ c' P
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
/ a( ^2 a& o0 [+ M! G" ^6 j$ M1 }網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 6 ~3 Y* ^& ^6 e! {* _- Q5 S
去下載工具。
) v, Y0 @& v. ^
' f- L- @9 D* u( L$ L# N8 Y/ E* DOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
8 r* O( M; I( W4 f相信你也有所收穫。回文是給作者最大的回應, ' Z! }+ F. u( x9 i- k
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
& q. M: N9 U3 v) j; e0 a- G2 `/ u, ~& I
OK 忙碌去~
  E! T0 r; @0 s( Q: k: e% X
/ Y- c0 ~, x* O  O- n5 HP.S. % s; u/ X; u$ b& U

9 H2 ^0 l( j; H" ]1.歡迎轉載並保持文章完整性,並署明 0 B/ T2 a# {5 Z$ n
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 2 w9 {- C, w" ~; |
http://www.superworldz.cn/thread.php?fid-12.html
  D& Y' i. A5 D2 r9 O; J: U1 @9 m1 ?7 ^( x% r0 J% u
2.EZ轉載禁止。

' C! z& i4 g* G3 q8 Z" f- W$ `, F1 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 发表
8 ]7 K7 L6 U! D$ B那如果hack了好幾處地方,怎麽計算?

$ v; C! ?- {8 F( x" ~3 R/ Y有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 6 O4 k- s0 X( c, C. |
那如果hack了好幾處地方,怎麽計算?
- j, R( S3 y& R% z/ w" A& i
此checksum算法計算到檔尾,; H# {' H8 O; M0 ^6 T7 J
就算更改了某一處,也須計算到檔尾,
  a0 r% f3 H5 h2 ]- i" c  {! r多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:9 }* F) L1 d9 v4 p! U+ W
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 发表
; G6 I( Y+ i/ V/ k% C团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
1 q+ [) o' M! Z( @
HELLO ,
8 p' W" A8 w. E; G- x# \- i需要用到逆向分析或是記憶體搜尋綜合運用,6 T: K5 W! g: Y; C; x
前者你必須了解X86或甚至要了解SSE,! b5 r: T# r1 Y. W* q
我當初hack 鬼泣4(DMC4)就有用到SSE2。; e2 [% G- W8 a7 U
- o. \, ?6 ~% u/ F/ t0 S! l& _
記憶體搜尋綜合運用就交給你思考囉,
4 Q) |6 R. `: s8 ~3 A/ I/ h給你個提示: "Difference Value"
& j6 A8 Y3 N0 s有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
" f. P6 x: U; a" a( z1 V: 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-25 00:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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