设为首页收藏本站

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

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

  [复制链接]

签到天数: 1897 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
( k2 D; ]  Q1 _3 [' y; |8 q/ ~4 ^* l- |- d
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 0 S& {- N& o0 ~1 h: l' {  @
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版) / ?) V" A  g6 ?4 C

2 S- B0 `# `/ Z* ~◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL ! l4 K7 [( x* }: l$ Z! d+ z
◆日期:2007 11/18 (日) ( B7 `& Z5 W) Y1 N' N" e
◆組織: DARK SHADOW GAME HACK TEAM
4 T4 G' e$ j  V1 w4 Y; o5 i% }1 z4 E2 y& o

0 |8 L% B4 f8 O8 u" x" mMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
# K6 a0 g5 H6 Y# R4 d* _接著我會慢慢收手,今天上線剛好收到疾風的PM, 0 j* o. Y8 |0 p  X1 t  `0 \
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從 - U' g$ s0 R9 y. S
沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
2 v+ p/ k( L2 S8 Q' v: U講解一下MD CHECKSUM的修正方法。
8 m8 h* [  K- W" x! l1 T  r(以下方法不適用於MD版 洛克人,
8 Z' |4 I/ Y: KMD 洛克人驗證需詳細分析過才能下定論,
; C$ f9 E( @6 W3 n& X目前對HACK漸漸沒興趣,所以應該不會去弄了)
# ~. p7 t5 \1 d( D7 {# a3 U$ z. k. y% S* s
* t( k2 k2 f& o& Q9 c
+ ?7 E& @2 {$ ~首先我們先談談並不是所有rom修改後, " j6 [# Y2 Z/ h( V1 f5 b6 o& P  _
都會檢查checksum強制進入紅屏, " E; T9 V; k- q# s& U
此方法也不是適用於所有rom(例如:rockman),
$ y/ x2 S4 u0 [# d# T大至少8~9成以上適用。
2 `7 p8 v* M  ^# _9 a
2 `# B- x3 N0 _6 A+ Q3 h, y+ p$ X好了 工欲善其事 必先利其器, 9 M& N9 W! Q, {6 a& w/ }( [
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, 5 M6 h8 e1 P6 j( v! `, c
準備好後,我們要了解以下幾點。 2 J! ?9 z6 v9 r4 {9 _  @$ ~
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
2 s3 t( q& O5 H8 t( Q2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
- D3 ]+ e, X/ |3.MD ROM 校驗數據在於$200以後到ROM結尾。
$ f8 D: S$ }; ?! A: t: p) R& K' x) t  }: W6 [! d; Y3 d
現在我們來舉例吧,學習最快的方法就是舉例子: . c0 `  b4 S$ y+ V
例如我以很久以前我hack的螞蟻騎士作為例子, - g0 {9 C. }% u* ?5 u
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
: p$ q' g8 c2 J8 F* \8 W: E% }8 j
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
" p! X$ @) k1 B2 p$ b我們就將rom裡面分為8bit和16bit。 ; C3 ?- j9 Z: Z  z  h/ v( x
從$200開始雙數為8bit單數為16bit, ' f1 v; e7 j; y& i+ p
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
) ?  \( t4 Y0 l* m( ]4 A8 i  y7 Z首先我們先到$18E看checksum檢驗數據, ! H: C1 U/ ?: Z; V) m
我們會看到3C 52,好! 記下來。 , z! U& `% h% i( k+ H0 A4 s
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
. ]+ T0 {, {& |8 h6 C, `OK現在用模擬器開啟ROM看看,紅屏伺候。
6 |: W* Z5 Q# Q6 C/ ~  [沒錯 此ROM有檢驗機制,OK 現在來修復吧。 ( Y# v, K7 s' O3 h1 g; S
2 `8 p) ?  U" g& [
剛剛還記得檢驗數據嗎?沒錯就是3C52, ! I! E1 A: F& z* B) O6 N! v
好! 現在來計算修復checksum吧,
+ Q4 X3 o) B8 c( D- I首先我們要將00 00 改為 4e 71,而且我們又了解
2 y: K4 a) r( q: _8 N此checksum機制是ADD演算法,所以我們多加了4E 71, ! |9 T; K% S5 T% Q3 x
就要在CHECKSUM驗證上多還給它,
: |! `3 R4 `* G! R* c. K9 m所以將驗證數據加上NOP機器碼數據:
6 W# x+ R# h  O8 ?5 `8 u, T* [$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, - M7 ]$ P; l% \
再用模擬器測試,ok 紅屏消失了。
" C* n; s$ J; x, ^. H( ~6 _2 M
) g( r2 z' `! G8 i; J- ^4 p# W: g1 I
就是那麼簡單。此時你應該還會有其他疑問,
3 \! q, n, u& E4 |/ w如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 ' l4 `' t/ k7 w6 ~4 G4 i
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
8 z. \3 S( U9 q. S先將$FF FF-$99A8=$6657, - ~  F9 r7 g2 o: L! F$ s! B. ]
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 ; C+ p) k! f) }6 l
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? . h' R6 R$ N* K9 {& ^
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的 9 C  e+ c) q) p& u1 w2 J: h
檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, ) ?3 K0 G, G+ q5 m  [
先將之前的修改還原,或是重新開一個相同的rom, 6 \, ~- o  @/ g. n
將rom地址$BBBE6填入數據EA 98,
* P: Q7 N( r9 W) }6 M然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
; C& |9 L& F# R/ H$ Z: k( p0 c; r6 a( `, }9 ~9 a
數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
5 K" A3 f+ W- [- m# M4 Z然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。 : s6 M7 W* T8 M4 O0 ^9 I. d9 o

+ v# O2 c6 S& A! Q# Y
& }; |5 }1 O5 a) P: @8 M講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, ! q3 F) u4 d+ a; A2 @8 u8 {
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, # T* a' c! l/ H
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
3 T* D+ K" X3 ?9 y6 v$ H5 ?一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
2 X0 k9 c1 I6 A網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 ( {  O' F( t+ u- W
去下載工具。
. J/ X: }4 T3 e. @0 v  h6 Y7 [% Q8 r; {% y4 q
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡, ( I  P) v1 w, ~. j4 ~! P9 r
相信你也有所收穫。回文是給作者最大的回應,
: u* a, z0 b4 A& u* u- l希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^ 4 f  R3 Z' i# Z% B5 i

  Z2 \) E& b- S% }OK 忙碌去~ " A0 j/ c6 _" V. N/ o9 U

, {) P" k) L" L, }# c; I# G7 U# QP.S.
* W/ x9 }: P$ j" D( [% N1 j) n0 n9 z) X6 z! ~
1.歡迎轉載並保持文章完整性,並署明 ( D2 L; i1 k. T/ c7 D+ H$ b" b) O
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 ' c0 y& [9 o! U$ ^1 Y" ]
http://www.superworldz.cn/thread.php?fid-12.html
; `& Y; ?0 a# u/ Q$ ^. Y/ t8 w2 L1 ?" f8 f4 E0 p( q
2.EZ轉載禁止。
* p+ A9 m- z. \. q1 v+ l% H, \
[ 本帖最后由 疾风之狼 于 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 发表
: u- t0 n1 r6 U) d4 i那如果hack了好幾處地方,怎麽計算?
$ r3 H" ^  ]$ X6 V4 c- _) U
有个工具的,老狼的网盘有下
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
" I: y6 s0 k+ `9 P" s# m那如果hack了好幾處地方,怎麽計算?

3 D; ~9 X7 K' R3 c% W# S* w此checksum算法計算到檔尾,& j+ w- ^# f8 s: }5 e( W
就算更改了某一處,也須計算到檔尾,$ B- g) O- p' Y) r3 k
多處處理方法相同。
回复

使用道具 举报

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:# g+ d7 h! y8 ?1 d5 y1 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 发表
, c, D2 f! P# `: m. H团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
+ U6 y: o* k, u. \4 I6 j  h/ {  t: n
HELLO ,3 ]% {# t  Y9 y
需要用到逆向分析或是記憶體搜尋綜合運用,/ }3 Y5 k- A: L/ }5 N. U6 F
前者你必須了解X86或甚至要了解SSE,. z- L" H3 I( \6 O7 p
我當初hack 鬼泣4(DMC4)就有用到SSE2。: e$ w1 I7 x/ b
  T; b1 x& W$ q  s9 Z( t
記憶體搜尋綜合運用就交給你思考囉,
; @" q6 A- X0 t- B6 _& A給你個提示: "Difference Value"
$ e6 }& t& z8 ^5 M/ p有思考就有進步。 加油
回复

使用道具 举报

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
2 S% W" |+ W3 W$ q. }: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-16 23:37

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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