设为首页收藏本站

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

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

  [复制链接]

签到天数: 2052 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html/ C) i2 E- ]& }) S+ A

; y% C( B# x, ]  r0 C& ~" |
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 2 y8 R# N, \; A! m  o! S5 I. c
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) 1 Z" y" G0 N, c2 T

0 p7 h! z/ o* s4 l) H2 w; ^4 l; o◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
6 s7 m" X, V% d% c! q◆日期:2007 11/18 (日) : ?: O" ~1 m2 X$ O; o
◆組織: DARK SHADOW GAME HACK TEAM ( ]4 [7 X5 t/ z6 ]! _6 g
% N2 `9 Y/ w% [: l
" L1 \5 _  g' ?- m. g# f% H
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, 5 j* N0 |- v4 @+ y" f7 \
接著我會慢慢收手,今天上線剛好收到疾風的PM, 8 L4 B6 j6 M! P. s
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 " c; f  @! t7 b- ~9 W
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
- y! C# h# b7 V0 _: [講解一下MD CHECKSUM的修正方法。 $ L( Y% M; H( H2 r
(以下方法不適用於MD版 洛克人,
+ p& R3 z. `& Z9 k6 k/ DMD 洛克人驗證需詳細分析過才能下定論,
6 c( J  K4 e- L5 Y目前對HACK漸漸沒興趣,所以應該不會去弄了)
- \3 w( P5 R0 T, b% L  Q) C- o1 }, r* ?2 j1 l

2 W8 b8 p+ S: k- y& ^$ f# v首先我們先談談並不是所有rom修改後, # @& z1 o; B4 V! y2 |! i
都會檢查checksum強制進入紅屏,
' n6 I3 h( N! N: B" `0 G7 M此方法也不是適用於所有rom(例如:rockman), 9 u4 s2 @6 \( r  D# }( _/ T
大至少8~9成以上適用。 8 r$ y: c" U5 |1 z0 c% M  h
% q* T* `2 [1 y  |7 y5 d
好了 工欲善其事 必先利其器, ; @" A) h9 V+ w8 m5 `
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
3 H. q, b2 D7 U準備好後,我們要了解以下幾點。 7 z( Y& m4 L6 {! Q- s
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 1 C" j. K3 D7 s
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 - \8 W+ j3 B) e5 t3 l
3.MD ROM 校驗數據在於$200以後到ROM結尾。
* l* D: T- o. `6 q: W; ?% o
2 X. N& o5 ^+ W* m6 S現在我們來舉例吧,學習最快的方法就是舉例子: 1 [! J" i6 s4 H/ E2 r
例如我以很久以前我hack的螞蟻騎士作為例子,
4 \' D. r6 O+ Y8 l首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 0 _0 w1 E: U1 }% N0 C
' y+ o& a! y$ O# i4 j6 g
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, ) O" q, n6 ^, B: w9 k; O
我們就將rom裡面分為8bit和16bit。 $ I+ y) {+ M2 T+ y  d
從$200開始雙數為8bit單數為16bit, 8 x+ V2 ?6 B9 @6 |+ y1 \
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. , G. k, L( k+ G( @( e
首先我們先到$18E看checksum檢驗數據, ; U& c1 T$ [% C# y) w  k
我們會看到3C 52,好! 記下來。 ( b! W+ k7 h6 M! I1 a$ _, e0 e+ A- k
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 0 _# O2 s6 n9 Q4 y9 [) q6 G
OK現在用模擬器開啟ROM看看,紅屏伺候。 # ~/ N$ q: {+ t
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
9 z6 h, ?1 r3 n# r1 E4 W' X% ^& f+ p3 Q% G7 n
剛剛還記得檢驗數據嗎?沒錯就是3C52, & ?; z8 H, u9 o, h% z8 ~6 I
好! 現在來計算修復checksum吧, 4 A/ s$ J  J( z$ Z! }
首先我們要將00 00 改為 4e 71,而且我們又了解
* `9 w& i* k  S3 x, T' q# A2 ]此checksum機制是ADD演算法,所以我們多加了4E 71,
8 p' @7 S* s: x5 a: {5 `1 x就要在CHECKSUM驗證上多還給它, 4 u$ k) V7 l( }, {  d% F# T
所以將驗證數據加上NOP機器碼數據:
  M$ T, K& w' D+ r. T& U$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, & A9 H+ K' v2 d4 W: k% D+ R
再用模擬器測試,ok 紅屏消失了。 8 A4 w! u, o! d/ A: l8 N: z
2 |4 B2 ^  R) y# }$ Q% L( ^1 F
& l9 M$ r) p. h' n( X6 k8 A( n
就是那麼簡單。此時你應該還會有其他疑問,
, w. x" Y% p* j' i3 l0 i. T% a如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 6 d7 b! O7 |! U4 f3 J+ O2 [
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 " l& t7 m8 ?& @( p# ~/ {
先將$FF FF-$99A8=$6657, ; y- C( v4 z4 c6 p7 y
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 ) w& N7 n5 s8 w% r: X3 U4 I. I
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? 5 n1 L5 n1 g* x" D. S/ e& G
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
4 J$ {, O! \  g檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
4 ]1 a" H8 P  U  }& c3 ~先將之前的修改還原,或是重新開一個相同的rom, 4 l4 X+ I8 j) }
將rom地址$BBBE6填入數據EA 98,
) Q8 D( H0 F( b  Y) c, A" a! g) z然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 ! U0 |3 @, ~& T# ?2 C5 C  \

9 q! H$ q2 u0 C) ~3 k數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, ) w) E8 H" M) [6 }
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 % {/ ]5 Z5 N$ v; v

3 d8 q9 u  |, W3 \5 j2 B5 Z& i$ {) Q3 L$ f8 y! `
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, 4 D( _/ T1 m$ b8 i, t
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
) b9 n* k) l* G6 M; X4 ?5 W( Y然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 % x0 s! U+ o+ L8 {. M5 `
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
# T" U' |3 V, q+ G' c網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 2 }. H4 `- G+ D
去下載工具。
" B: [- j4 U0 W, F) M# L3 d
8 n( x' d( j! H- AOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, 4 m; A9 [9 G. @* c
相信你也有所收穫。回文是給作者最大的回應, 0 B& W% h/ Z, @/ l. B1 ^
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
  |5 S5 x, `0 m& k  ~9 u
" d! i6 N4 j0 g0 B. l4 h* w& x; M7 OOK 忙碌去~ 3 L8 n  u( f* o
( R; b$ e) y1 ^! _% l' w' C
P.S. 2 o1 L) G. S5 H. m' G# h8 |
9 J4 Q4 V% I3 U1 C
1.歡迎轉載並保持文章完整性,並署明 + l: q# [9 Y7 }# r4 W
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
' C( W3 ~6 \4 L2 O" ^8 r7 Thttp://www.superworldz.cn/thread.php?fid-12.html
* X( q( O5 U, |2 P* q+ q4 l: L+ k) N1 e
2.EZ轉載禁止。

  P2 r: A  j5 Q; k+ i4 |: y, m[ 本帖最后由 疾风之狼 于 2009-3-13 18:06 编辑 ]

本帖子中包含更多资源

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

×

该用户从未签到

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

使用道具 举报

该用户从未签到

发表于 2009-3-13 00:21:48 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 3 g4 h$ }$ d, {# _2 K! |! y% Q( U
那如果hack了好幾處地方,怎麽計算?
  @/ ?) _1 F$ e9 \# D( |
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 7 M* g. x" R4 Z: w' C! g
那如果hack了好幾處地方,怎麽計算?
" g) P1 y# d3 j: B9 _
此checksum算法計算到檔尾,
6 E% ^% s3 ~  y1 E就算更改了某一處,也須計算到檔尾,
& S, n. t& Y2 r7 ~7 `+ A3 _7 U多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:4 K+ O. [" i/ U! f8 V: m; ~$ `
http://bbs.emu618.com/forum/thread-95790-1-1.html
回复

使用道具 举报

签到天数: 82 天

[LV.6]常住居民II

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

使用道具 举报

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 9 P% o/ ~, A. O0 X
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

! Y+ l" W: u# A# t( F- Y4 yHELLO ,: F, I5 {. p5 d" a$ j
需要用到逆向分析或是記憶體搜尋綜合運用,
: U7 z$ t4 Z+ i$ q前者你必須了解X86或甚至要了解SSE,
: t6 P& c1 {0 ~7 A9 {1 ^我當初hack 鬼泣4(DMC4)就有用到SSE2。( {  j0 y8 G) e4 W% a

5 a3 y/ e* d% O+ P" g1 G5 T記憶體搜尋綜合運用就交給你思考囉,
, w5 W4 J: e0 }; u給你個提示: "Difference Value"
2 w1 M( b: p: I4 ^7 d有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:/ |' Z7 t3 {5 Y7 \& w+ X
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-8-25 04:28

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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