EMU618社区

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

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

 关闭 [复制链接]

签到天数: 1803 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html& b2 [# u) h2 ^5 `+ K

# u: \9 I* f; ~+ f* W
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 5 D. r' s  M. t, z7 |, m
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
; H+ G, u7 E& ^& f' ]$ r- P9 i& I. C  r0 Z4 r
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL 2 Y2 G8 p  i" k; |9 Y( _1 J
◆日期:2007 11/18 (日) ' f" S7 G1 n; I3 n
◆組織: DARK SHADOW GAME HACK TEAM
* r! H8 E! S  w! O) B- Y7 K
& r9 U! v2 s" N+ [) h6 K
3 P, J8 e- t# N- g, XMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
& o3 k7 K( ]& n; H1 n2 {4 e5 h, `接著我會慢慢收手,今天上線剛好收到疾風的PM,
, n" t$ s, O" g) y問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
5 N% i; R! U& |, M2 h沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
/ {' j! f3 K7 l5 q3 I1 e. _( S9 R講解一下MD CHECKSUM的修正方法。
* }5 D: U+ t6 p, D' O0 z. W(以下方法不適用於MD版 洛克人,
& g" e0 I. |" E8 b# I* M, Q' PMD 洛克人驗證需詳細分析過才能下定論, 7 Z- y: Y1 }: i; s7 z1 u
目前對HACK漸漸沒興趣,所以應該不會去弄了)
& M. O# v- q# a3 \# ?% u& O+ [- q; k  H0 D9 k: y9 S, K/ J  g
* X2 m6 p# h) ?
首先我們先談談並不是所有rom修改後,
! u5 Y8 C# p# U# E! p) x8 j  |都會檢查checksum強制進入紅屏,
/ X3 C" v" N2 w6 P3 B1 K, E此方法也不是適用於所有rom(例如:rockman), 6 J. f  `( Z. y+ }
大至少8~9成以上適用。 + ^/ x# v( R) T6 J, W
$ u' a: a5 `9 C# D# q( N. h1 v
好了 工欲善其事 必先利其器, * Z, W& ^8 ^& I# E0 `9 Y$ j* s
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, ) n1 O" C' K6 g; {, E' l6 w7 l
準備好後,我們要了解以下幾點。
, x0 c8 N2 _' W$ `3 \1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。 2 K8 P9 m- \# W  A2 b
2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
8 R2 _9 H: [9 i9 _% j3 L' `3.MD ROM 校驗數據在於$200以後到ROM結尾。 4 X$ t" J1 K0 j. v( q# h
) P; {+ X; |6 f5 k1 L
現在我們來舉例吧,學習最快的方法就是舉例子:
5 h. j  e# n0 n# s) }: H例如我以很久以前我hack的螞蟻騎士作為例子, : R# U% p- a9 V: p
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 " J. `3 W/ E* a" c

3 u) R' v5 ?1 {1 v: _* P: C" M7 C由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, 8 u" G! Z8 B6 h2 z: u; U
我們就將rom裡面分為8bit和16bit。
  N( g. p4 q+ D( I+ ?從$200開始雙數為8bit單數為16bit, / o- Y+ @, L( b
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
6 d7 n/ y6 _; J6 G: e1 E+ z: ?/ ~首先我們先到$18E看checksum檢驗數據,
9 j& P- f& Y! k0 c8 n我們會看到3C 52,好! 記下來。
" h2 [, Q* X5 M5 x5 B接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
0 n/ S5 L  D9 o7 EOK現在用模擬器開啟ROM看看,紅屏伺候。
/ ]. q) H) x: T/ C" h/ B9 x沒錯 此ROM有檢驗機制,OK 現在來修復吧。 / j7 x8 B, y8 p* D. k" t5 J

6 V4 d. S, n- N  a0 Q5 ?剛剛還記得檢驗數據嗎?沒錯就是3C52, " o9 W  A; X* m& p- ~
好! 現在來計算修復checksum吧, / Z" D0 q$ B4 b& ]* o) [" a4 z
首先我們要將00 00 改為 4e 71,而且我們又了解 5 i% K% k1 _* [, W+ X: h
此checksum機制是ADD演算法,所以我們多加了4E 71, / @+ h6 @! ^+ Z4 y% r4 B! J  E' N
就要在CHECKSUM驗證上多還給它,
8 Z5 x; I& W& G! T8 |6 Y" F! q所以將驗證數據加上NOP機器碼數據:
) I. V' T, i# k6 e. \. y! T2 d: y& M$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
$ h! m% V! B/ |再用模擬器測試,ok 紅屏消失了。 - x' x8 ^9 i1 ]7 C5 U" v: F- `

( E2 C- X. j+ O
* [8 d% b6 {# Q& H; j就是那麼簡單。此時你應該還會有其他疑問,
5 }& F: q& u+ D! S, ^; [* H如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 % N/ O) f8 H3 ?/ u
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
8 |% [2 _+ h1 S$ o  t3 x2 R先將$FF FF-$99A8=$6657, 1 K& |" _' u) ]( t' J* `' E
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 & U( I, _8 l$ p# W6 k; ~
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
4 h! W6 h+ S3 Q9 j. T一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
: A6 f& N! ^2 p  D* Z檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
: |1 @! d# Z; U  j8 ]8 O  s先將之前的修改還原,或是重新開一個相同的rom,
/ K8 V$ W6 B  p. R6 j6 s將rom地址$BBBE6填入數據EA 98,
. |* @; M! F" R, y2 g* W+ S然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
6 H+ f5 t' C  U! @1 A4 l/ S3 X, ]
; H  p" j$ C( M" o數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
5 R: T, `3 y5 W- J然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
9 ?2 A: e  M2 {) A( `' {
( |7 V! u" r6 c8 |. ~+ ^3 V- T& V% H$ u7 K
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, ( j9 v" j* t" o4 a  S! z, v5 c. {
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, : s5 v0 U& |. J. A/ z5 e; Q
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解 6 P, K3 S  b  d( `- @
一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
1 x+ z3 ?. k2 t4 ^網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 0 h: X% v3 H% V3 \
去下載工具。 : r; h5 @( M; U% o! K' \

1 T3 I! P0 y, K/ OOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
/ k+ `, r7 _: @相信你也有所收穫。回文是給作者最大的回應, % s- {; k1 X7 S8 z* g& I& }' _
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
, M2 P4 T* n; w4 Q9 S7 c4 A. q( |# f
OK 忙碌去~
, j) ~( s( d7 B( x( z" i1 q- l9 \! _* f8 a# C
P.S.
4 ?3 e6 x9 i) u2 ]$ |: n% r% {3 Q: W6 R# g" D" J
1.歡迎轉載並保持文章完整性,並署明
+ r) e! J6 I# [3 T% u. j作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
' R+ a1 C' O% Z% w" X' G6 H2 L/ |http://www.superworldz.cn/thread.php?fid-12.html
1 D( D8 N6 l) u5 k. F7 ^
* a& {6 [  n4 n' @* e* w2.EZ轉載禁止。

1 b' H4 X) o/ S7 W$ K4 o/ f5 B[ 本帖最后由 疾风之狼 于 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 发表
& T, u% g& A/ H1 C, ?) {- x那如果hack了好幾處地方,怎麽計算?
3 X8 z" [2 d2 d! f
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 . J- T7 A% t- I) T& e: I  j' }5 H+ k3 K
那如果hack了好幾處地方,怎麽計算?
: q0 ^6 A' z- |% P, P; |
此checksum算法計算到檔尾,
# `8 @+ Q+ D: g( \就算更改了某一處,也須計算到檔尾,; l; ~/ X# {4 n3 p: d# ~
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:9 B7 L5 A& Z: v/ U; f' @
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 发表
- f' V) b% K" \! Z5 Z  e团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
. y+ q. k8 B9 f# @9 Y
HELLO ,
: m2 I0 [' L' L1 u2 F需要用到逆向分析或是記憶體搜尋綜合運用,2 Y% \7 p/ j8 N) O. m' c
前者你必須了解X86或甚至要了解SSE,! s( c) ]3 l) m3 i3 w/ ^; y0 f/ f
我當初hack 鬼泣4(DMC4)就有用到SSE2。
+ I$ \" X1 z$ M6 p- U0 Y( x
! [) g8 t7 g  b; e! |記憶體搜尋綜合運用就交給你思考囉,) S0 `  B7 k9 p! f0 D
給你個提示: "Difference Value"" J: j2 B* D: m$ y3 H2 T9 w
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2024-12-19 16:41 , Processed in 1.091796 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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