设为首页收藏本站

 找回密码
 立即注册
搜索
查看: 4209|回复: 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: r/ N) j" I/ o. m$ y: v- _! U7 p

' e" A' I% V) B
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
" x- T6 u3 {. }" [BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
: W6 g9 L% v+ s3 T( c  _& K5 q( W3 \1 @
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL ) s) }9 r& p; W0 V
◆日期:2007 11/18 (日) " n: k' x5 M# o) l$ h+ v
◆組織: DARK SHADOW GAME HACK TEAM
1 c: Z$ T$ Q/ W2 B/ z3 |' G( P7 z+ T9 M- y

7 l8 C; ]  d( T1 ?7 G9 i! TMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, ; A( N. E3 F) @* k
接著我會慢慢收手,今天上線剛好收到疾風的PM, 2 p. B& ?8 a( }+ m  p  l) k0 ?" \
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
# z+ `" ~1 B1 I. {; g沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
6 _9 X  a: T) c% G% o* q6 [; i講解一下MD CHECKSUM的修正方法。
  i6 r$ Q/ Q& j1 L(以下方法不適用於MD版 洛克人, , E' v# L" z2 ^" V& C
MD 洛克人驗證需詳細分析過才能下定論, 0 S1 ?3 C$ g2 A' A
目前對HACK漸漸沒興趣,所以應該不會去弄了) : i. A* @% O8 Y+ @

% D4 Q3 w% ?+ |5 m0 U
; r5 h- H7 ]4 ~- a) o首先我們先談談並不是所有rom修改後,
) P0 g" g+ X8 s! d* R都會檢查checksum強制進入紅屏, $ B$ D4 H) O7 g  r; s! S
此方法也不是適用於所有rom(例如:rockman), , v8 h& E* g* B! E9 F0 ]8 c
大至少8~9成以上適用。
5 ^: G- Y, S3 E3 l6 H0 h+ D( c8 M; l  y) j1 K
好了 工欲善其事 必先利其器, $ N6 U/ s& ^% k: K2 U9 [/ v
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, - _. G. n2 Z0 z$ U
準備好後,我們要了解以下幾點。
( S% a" V6 `" X% S$ s1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
! z8 U. @* O4 V8 m# s  L; R2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 , f8 b/ g2 A6 ^1 f% q) x
3.MD ROM 校驗數據在於$200以後到ROM結尾。
5 u/ V/ K2 \3 V; y9 ?( g* [6 _. `7 u5 \% c: J4 a
現在我們來舉例吧,學習最快的方法就是舉例子:
' R5 m6 w3 L1 z# I$ D- O1 O例如我以很久以前我hack的螞蟻騎士作為例子, # T2 y( l7 T7 D4 r5 k) A5 o
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 ) C, [" `4 H; l* F& l
6 c; Z6 X9 s3 [6 L( t
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 0 S2 G0 s( t- ^6 r  @
我們就將rom裡面分為8bit和16bit。 % ?  y3 [5 R2 ]7 p3 S9 q& ~
從$200開始雙數為8bit單數為16bit, 2 Y& T4 L% c+ \/ t0 i
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. : V& }8 v. B" d, k9 Q  _
首先我們先到$18E看checksum檢驗數據, ' @" z  o2 E: l; K# ~# W1 T, U
我們會看到3C 52,好! 記下來。
- |$ a* D8 d/ p" C接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, : x1 {* a, C7 z0 z! K6 n- }8 A* p
OK現在用模擬器開啟ROM看看,紅屏伺候。
0 K! s2 N6 [) `& K: V' F沒錯 此ROM有檢驗機制,OK 現在來修復吧。
' C7 R$ L8 ?0 e1 [- u3 z
8 I  `# e, ~. n( z3 h0 ~" @' q剛剛還記得檢驗數據嗎?沒錯就是3C52,
+ h  t' Y4 j% F5 ~8 [/ ?; D好! 現在來計算修復checksum吧,
: s( U) {. K* `9 X1 `% G8 X首先我們要將00 00 改為 4e 71,而且我們又了解
; u/ R2 S6 `; v9 {% n2 K  r此checksum機制是ADD演算法,所以我們多加了4E 71,
; j( \5 g+ A3 S就要在CHECKSUM驗證上多還給它,
( {' j% B& {( ~8 v所以將驗證數據加上NOP機器碼數據: 1 o! }9 L" @, B$ e7 P
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
; Y5 i4 `8 z+ Y* h, Q再用模擬器測試,ok 紅屏消失了。
) C. t! ~2 K$ A7 G8 d' B& I- l- b1 g' F- n4 ]- ?2 F3 u/ r
- V8 d8 g/ Z  r) T8 P. v
就是那麼簡單。此時你應該還會有其他疑問,
! ]; q/ y5 `/ a0 n如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
3 H  S# X7 f$ O6 j我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 6 a- e* B# Y+ P5 b: ?: Y1 X
先將$FF FF-$99A8=$6657,
$ e4 k- J' [( T3 o" m4 C這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 * |/ L2 V$ R  ~
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
' |0 @. K% K0 N; G/ M* t; y一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 1 J9 U1 J, o- q, S& [! G2 d
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, & x! v: n% u- P3 Z6 J
先將之前的修改還原,或是重新開一個相同的rom,
3 D- ~, P0 K# ~- d2 o將rom地址$BBBE6填入數據EA 98, / K  W: T  o8 r# R, _3 [- _' n
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
; ?7 x$ Q6 B2 O9 X- c3 ?$ b8 C" A1 l: |2 W  u; N& y  s
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
; X! T* Q9 y; ?$ x/ ?然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 7 `" v8 }5 S; q$ r+ {

0 G. x! b2 i3 X  o% X4 B4 {5 s' k  J  p
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
" B( E4 M4 U6 [7 q就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, " g8 y6 F! X0 m# Y
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
! o0 ]1 @* k# B5 Y$ q9 C6 T* f! D一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
9 }: g+ f5 k# d網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
1 j+ c( I6 H6 {1 M0 v1 i去下載工具。
+ H2 D2 j/ |9 y
' B( x# c9 N6 `/ d% ]/ z0 tOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, 0 r7 [6 x5 _. O5 {- s" g
相信你也有所收穫。回文是給作者最大的回應,
  e: f! s1 `: ^7 o8 q0 Y希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
2 `# F( _6 d" S: Q8 g0 n, h9 h$ a5 c; I% @; O
OK 忙碌去~
# r% x2 w0 u7 {" @; V+ Q; Q  D' Q9 u( j+ n* M: p1 `
P.S. ) k' a7 X  s: ?% p' E6 f

7 [# `0 A# q* Q4 N+ W. A1.歡迎轉載並保持文章完整性,並署明 . R5 x) r; Z* a# Y1 z* W
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
7 |& D" }$ ?) N0 m+ ?! v5 `+ I# lhttp://www.superworldz.cn/thread.php?fid-12.html
- P4 \/ Y1 E! @  Y- j! s: o1 e' }' w, P) x0 a" W/ ?  O
2.EZ轉載禁止。
! P# K4 Y7 e# r: s
[ 本帖最后由 疾风之狼 于 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 发表
4 u3 g* F9 D$ n% J5 E* Q0 S9 E那如果hack了好幾處地方,怎麽計算?

; L) E8 X- J2 \3 j8 T+ P. p有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 8 N5 ]; [9 |4 l" M4 Y
那如果hack了好幾處地方,怎麽計算?

2 t& a7 }2 v- V; m! N8 d此checksum算法計算到檔尾,
! [/ u; b3 s2 c: ]" i' y6 b5 Z就算更改了某一處,也須計算到檔尾,
; ~" H  `8 c, V3 Y, F多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
; U- K  ~# Z) R' N; c7 qhttp://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 发表
- _# p+ \  ?1 C7 I$ [+ C团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,

1 [6 S! B5 j+ ~) H/ ~HELLO ,
! b% j0 O; `0 w7 n/ c2 @需要用到逆向分析或是記憶體搜尋綜合運用,
0 t: x5 w3 Y% K, A! d: b  q* Y前者你必須了解X86或甚至要了解SSE,
2 G9 {- a1 o+ @5 j0 }) ]# g我當初hack 鬼泣4(DMC4)就有用到SSE2。; {1 C$ _5 ~, i

7 S$ _* p+ I; Z5 |5 j" I記憶體搜尋綜合運用就交給你思考囉,  p& |6 l% B$ ^9 j1 Z: v) V
給你個提示: "Difference Value", f0 z9 U1 w" p
有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:1 ]3 ?7 J: v0 G, a* o
: 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 04:30

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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