设为首页收藏本站

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

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

  [复制链接]

签到天数: 1913 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html% [% }! l6 Q2 W7 \& Z0 h
/ T- f. A4 J$ P  i  K
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 0 @) y+ ?0 R; i! D/ _
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) * b" v, c2 w! s. |# B' e' i

4 ]  S, g* i) o$ K. V◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
  I6 H  \4 C2 b" n◆日期:2007 11/18 (日)
  N' S2 g( y- r" s5 h, f◆組織: DARK SHADOW GAME HACK TEAM
8 p! Q5 `3 p' i; T
4 j  m6 f9 Z2 z" D8 e0 H, U2 g& z/ P7 V9 O
MD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, ! m7 b# @# W7 e
接著我會慢慢收手,今天上線剛好收到疾風的PM,
5 m! j6 `6 [- p  a問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 $ d+ S9 K0 i  c3 W& e+ F$ M4 {
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
5 j" [! ^* ?' M+ u. S" V講解一下MD CHECKSUM的修正方法。 / g- B5 {, Y# V. X; q, J  E' f
(以下方法不適用於MD版 洛克人, 1 Q. d6 T+ [2 P; m) q$ b
MD 洛克人驗證需詳細分析過才能下定論, ) ]' E  V7 z: e# {3 m
目前對HACK漸漸沒興趣,所以應該不會去弄了)
7 @- T8 J( U; I5 v5 R% p0 }2 _9 P$ s* \/ o
1 N9 A; I+ M+ F0 N
首先我們先談談並不是所有rom修改後,
4 i2 D' {  @: ~5 Y/ i1 k都會檢查checksum強制進入紅屏, $ f+ {) \4 {. F
此方法也不是適用於所有rom(例如:rockman),
1 w* I1 f4 f5 T3 B+ r大至少8~9成以上適用。
1 q% z  Y( D& F
2 Y, }' o3 y- k( @6 Z# B好了 工欲善其事 必先利其器,
  l3 B) R9 m: c! k0 S+ p9 g0 D準備工具 16進位編輯器 + 你要改的rom + md 模擬器, . i. A; d- [* e& J; l
準備好後,我們要了解以下幾點。
3 l& j* s9 N% l% @5 ~* O: N1 u1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
  z* c: K" P% m8 p  `( F0 m2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 # B& x5 ?- s# L. _( @9 V( y" ~
3.MD ROM 校驗數據在於$200以後到ROM結尾。
# @) l; w/ i; C4 n* N8 ~2 h  c3 V9 s  Q/ \2 p
現在我們來舉例吧,學習最快的方法就是舉例子:
: _! f& Q8 \; v: z& P' s例如我以很久以前我hack的螞蟻騎士作為例子,
' I  l* U  o9 O4 ~/ S, l首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
# m8 `1 }( c! P. x4 W5 [" Q8 }) K; {
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, & I  s, s" {5 A0 A3 A: ~
我們就將rom裡面分為8bit和16bit。 3 W$ h& o" \* T. {- }- v2 i
從$200開始雙數為8bit單數為16bit,
  w4 e4 a6 t( x- L! u( x好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
+ K3 V& G  n9 v1 b$ h. W首先我們先到$18E看checksum檢驗數據,   e! F) }- G4 U$ K
我們會看到3C 52,好! 記下來。
9 W4 ^5 p" k  s接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 7 [+ Q8 v8 t% U4 B+ ]
OK現在用模擬器開啟ROM看看,紅屏伺候。 7 j! F/ `4 {. _* t
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 . d: i1 {2 G0 z5 w9 b' d# R
+ u6 l$ ^3 z0 O2 c( P9 _
剛剛還記得檢驗數據嗎?沒錯就是3C52, 7 }' `1 s+ O- F
好! 現在來計算修復checksum吧,
! N2 o( F$ m. e) B, |0 {- ^首先我們要將00 00 改為 4e 71,而且我們又了解
! d6 H0 x5 [% \1 j* k9 c此checksum機制是ADD演算法,所以我們多加了4E 71, 7 G, y- E# ^0 S
就要在CHECKSUM驗證上多還給它,
) ~" E" J- V' E& x! [/ S所以將驗證數據加上NOP機器碼數據:
- _1 y' k/ i( p; M# D$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, ) _+ N7 [5 {7 M' T
再用模擬器測試,ok 紅屏消失了。 . a2 `/ M" a/ Y; \& s1 I* y% t
+ S1 U5 T; ^1 u1 V
, }& l- _$ V! c
就是那麼簡單。此時你應該還會有其他疑問,
* l$ {1 b6 {3 N4 D9 M; Y- T3 [& A) n如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
1 \, Q  a: e6 Q) F7 ^% i; x$ t我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 ( E- _2 q# S( h" q4 g
先將$FF FF-$99A8=$6657, 7 P) }, g% M  [. r6 N8 f' H1 k
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
8 {$ i) J; p9 K# y那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?   i. [! F0 j! T0 \
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
* C, J0 F4 H0 |- A; Z檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, , r' m* c1 z1 f/ Y, g/ q; }
先將之前的修改還原,或是重新開一個相同的rom,
8 d/ `) r$ V: J將rom地址$BBBE6填入數據EA 98,
8 y$ Q4 ^1 ~5 J  o1 Q6 T/ `& ~  A然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 ! x, A6 D8 ^+ t* S8 n/ m0 {# ]

+ K! z: y4 B  C( e數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, ! d$ m6 ^, s# z
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。   x1 _# V& M. C$ [

4 e% K; w/ g$ k7 R3 H. N4 ^8 c9 o
' |3 _1 E, V0 R$ Y4 ~* d2 x講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,   e9 c) U  o6 b: ^, z
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, 2 F7 n7 [1 a" T8 I* F
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
& g2 n8 c# v& Y7 n一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
) j; O. ]! `; _3 y% c) }: V: g3 f網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
4 m3 O" n7 p9 M/ \去下載工具。
; t+ |: K+ m1 U: \- F- K9 [# h0 K" P% P# x
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
# P# U5 ~) E! ^; @! O相信你也有所收穫。回文是給作者最大的回應,
2 o* H6 L" c  p! s希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
. \" _! m8 f9 w) f  B& y/ F
9 x: ?$ B1 u: \OK 忙碌去~
+ {- p5 p' y$ q# K8 y* e/ K3 F5 P9 }8 ?: P& A
P.S. ' a2 x, K% o8 ]+ x$ b; M5 W
7 K4 Z/ o" I) B7 L) ?' l
1.歡迎轉載並保持文章完整性,並署明
9 n# j/ W4 y  ]# ?作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
! R* ^- k- |5 _$ }9 X1 nhttp://www.superworldz.cn/thread.php?fid-12.html
; U* h* }3 V2 s! N+ p/ H' ~. I; X+ }  p
2.EZ轉載禁止。
1 a: n$ ?6 l8 z- u: r# D( ?1 t
[ 本帖最后由 疾风之狼 于 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 发表 : ~7 k- T7 e  _( t) K. e' F
那如果hack了好幾處地方,怎麽計算?
  u) \' |( V9 z. j' k# ~% E
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
8 ]  Q' t4 ?& q, N5 }那如果hack了好幾處地方,怎麽計算?
! C' h5 ]8 n2 s4 Y# w  u: [% y
此checksum算法計算到檔尾,
) o+ j$ q# R. I6 [; s, \7 i5 |就算更改了某一處,也須計算到檔尾,( o6 W% [$ W5 u/ G. L8 r6 M4 C/ W
多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
4 f5 Y: q  r0 G3 y! U( U1 r6 ehttp://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 发表 ( `+ L( g0 X  x
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

# j! h: |8 N' u9 a) }HELLO ,
9 E$ L% P% [* V- u需要用到逆向分析或是記憶體搜尋綜合運用,$ o- F& K9 {6 x% k0 K& v# E
前者你必須了解X86或甚至要了解SSE,/ j/ X8 h7 L" Y
我當初hack 鬼泣4(DMC4)就有用到SSE2。8 i& C# }. _- g, R
" j; X8 l( J) Z) t5 l
記憶體搜尋綜合運用就交給你思考囉,
; j% J5 X$ w  n, M- Z- f給你個提示: "Difference Value"* q( J" P' b, {" k+ e2 `4 b
有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
0 r6 _. q6 [' {# e$ i: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-6 03:05

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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