EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2079 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
/ }' o$ b3 t2 P3 W( z- ]
" q- j( _- p0 r! d- u/ _: Z
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 0 j1 i9 M: @8 F: |
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
7 N- n; W% ^  p% ^. [- a9 ?' X
0 j0 k/ f. S% R5 ~◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
& o8 t9 u0 X6 C" ^" {! t/ J◆日期:2007 11/18 (日)
# k0 E' y  F" w- b6 F◆組織: DARK SHADOW GAME HACK TEAM 2 r! ?/ P' z, c1 z

! h  M* `+ h- Q+ N# W
7 L3 \! `0 z* x$ i: I$ sMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
* A6 B( P+ F* Q1 h; \6 x6 E0 e: V接著我會慢慢收手,今天上線剛好收到疾風的PM, 2 P6 \; c' n; L, Z% s
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
) R. r1 Q9 D! I6 K6 ~5 i% G沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
- l/ v) p" O" A& V講解一下MD CHECKSUM的修正方法。 / U7 J+ _! `6 K/ e: t2 J
(以下方法不適用於MD版 洛克人, / \3 h& O! Z: S
MD 洛克人驗證需詳細分析過才能下定論, 5 W/ D9 V) h6 V6 l- T7 x* l6 w
目前對HACK漸漸沒興趣,所以應該不會去弄了) - q3 ?- `, `6 f; n3 i
# Y$ y4 ?7 b- _9 m
- e) T$ \, t- N' I; h3 L- {
首先我們先談談並不是所有rom修改後, - g8 ^) P$ o) o2 I; N5 _3 z
都會檢查checksum強制進入紅屏,
8 K0 A$ j' O2 ^此方法也不是適用於所有rom(例如:rockman),
; @7 I, Q* D' I9 b大至少8~9成以上適用。
0 v7 V( T$ N6 z' J( r
& l) _  o' s2 T好了 工欲善其事 必先利其器, : f3 _8 u/ g7 D3 u; _1 N
準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
, y9 Z+ @6 j% o: L準備好後,我們要了解以下幾點。 ) G: n( h; d& h+ d  t+ j. o8 B3 ~, l( j
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
; L9 r) e- R* K* i5 h5 _! [2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
0 R* o" ~% ^. V1 I3.MD ROM 校驗數據在於$200以後到ROM結尾。
: N$ J) n, A7 |3 [/ B4 ]7 c- ^3 q! Y1 ?) v& W
現在我們來舉例吧,學習最快的方法就是舉例子:
1 `" F4 `  H( U+ c% q: ~4 Q& i例如我以很久以前我hack的螞蟻騎士作為例子,
5 h) e" S! z8 k9 `  H; J7 X首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 ) Q* t7 ~$ o7 U- l

$ z+ L8 I1 X" R, L% d由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難, ; `+ p& X6 M5 r, h7 f; O
我們就將rom裡面分為8bit和16bit。 * ?2 n& r3 ]# A4 }
從$200開始雙數為8bit單數為16bit,
+ ]  t" T9 N3 l& m  n) Z* A好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. " `0 }3 t% |) s% Q% [1 l
首先我們先到$18E看checksum檢驗數據, 7 e7 s1 O% l+ L+ R" Z
我們會看到3C 52,好! 記下來。 ! ^0 }8 F% X9 ^; d9 y
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
4 i1 a% Z- m  BOK現在用模擬器開啟ROM看看,紅屏伺候。 " }( c  b) ]/ }
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
3 N5 t. [3 Q- D- g( N1 x/ p5 x: `3 g/ B% X8 Q3 \) O5 Y2 u2 M
剛剛還記得檢驗數據嗎?沒錯就是3C52,
4 m6 s; `! X8 W1 e# r好! 現在來計算修復checksum吧, 8 S* ?9 U1 Y4 |; O
首先我們要將00 00 改為 4e 71,而且我們又了解
* i1 d3 Y) u$ D8 ]此checksum機制是ADD演算法,所以我們多加了4E 71,
( Y( ~; X# k  j) w: A* {* J就要在CHECKSUM驗證上多還給它,
: y3 Y/ O* d, J6 W所以將驗證數據加上NOP機器碼數據: 4 L' k/ j* o( ^, P8 P
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
" x* O! q0 x3 d7 @再用模擬器測試,ok 紅屏消失了。
8 q7 r7 K( v  G" e+ K+ E3 F  n" |- q8 `: R. N. [6 f8 ]

2 P# T9 Q  X8 v. B% |就是那麼簡單。此時你應該還會有其他疑問,
8 F. q( z, E; u. F# c$ ?如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
/ p! V$ ], C* J我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 ; n1 I5 [4 C; U
先將$FF FF-$99A8=$6657, ( f- T7 b+ B. f4 D
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。
# d% v1 i! ?1 R- h那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?
) T# h; z8 _7 p' D/ Y一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
: H5 V3 Q6 t- I! s  a- X檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下,
+ `8 E( H. u+ t5 z, [' B先將之前的修改還原,或是重新開一個相同的rom, - U7 y" P( A, W: A* t. V
將rom地址$BBBE6填入數據EA 98,   n, p  q, X8 d; b2 X" \% W( M$ A
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。 " p0 H1 }* ~5 Q4 Z- I

3 L/ r* r0 i* ~" _' r6 |6 |) I數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
8 X" V& F" A) w然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
8 p" k0 T6 q1 i: Q# C
  w7 v( O- u% F) y* D" v1 p9 U3 g
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個, 3 m. b3 A7 \0 z0 }7 G! b+ t
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能,
, r+ b/ X, H& ~8 X- I然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
4 x. P3 W9 Y) h一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 # p6 T, p  n5 n
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 $ h" E" b' W) }/ j
去下載工具。 + ^" n8 m' w* n
! s+ l. q4 ~, U7 z: R: }+ ~
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
( u2 Z1 h! B* F( g  Q6 x% V相信你也有所收穫。回文是給作者最大的回應, * N: o, M+ z$ w$ g) \1 d& R
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^ ; w" r! G3 Y* }: B5 O
8 d& d# L. m* G  W2 J
OK 忙碌去~
  S# v! Z( t6 `# R! s" n# f( f6 N- Q3 P
P.S.
0 u0 \9 K' N* l
: h8 X/ S7 p7 P0 x1.歡迎轉載並保持文章完整性,並署明
- Q& }( I/ x5 U$ t作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
6 _4 y- m4 Z/ \+ Ehttp://www.superworldz.cn/thread.php?fid-12.html
7 ?6 n# j/ v& {) t
, F. u7 v, U% E* J* _6 R2.EZ轉載禁止。
! J8 e5 s/ L: v+ ~+ n
[ 本帖最后由 疾风之狼 于 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 发表 % ^, M3 o- ?$ q* x  D$ _* X
那如果hack了好幾處地方,怎麽計算?
' h- ]" R- m# B* c7 G  r
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 1 X5 J$ J5 [, T  f9 J% N- z
那如果hack了好幾處地方,怎麽計算?
$ {& H7 L& O# i, s% L
此checksum算法計算到檔尾,
% d$ L, D. x! P( F2 K, e就算更改了某一處,也須計算到檔尾,
! y( S" a/ ~2 y& o( U% I( e3 y多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层

签到天数: 80 天

[LV.6]常住居民II

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

该用户从未签到

发表于 2009-3-14 12:22:53 | 显示全部楼层
原帖由 李伟 于 2009-3-13 14:16 发表 1 {: a5 O2 J) t5 I0 p
团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
0 ]0 m/ I9 y* ^. y
HELLO ,+ x, l6 U7 ^* P- D/ V! Y
需要用到逆向分析或是記憶體搜尋綜合運用,
2 M5 u) y8 W* S* u' Q7 @前者你必須了解X86或甚至要了解SSE,
9 r1 i5 p# D0 ]; |6 ?2 b3 e6 W我當初hack 鬼泣4(DMC4)就有用到SSE2。4 o& M9 p" d/ M/ z8 H

9 _! y  N, Z( K7 f! L記憶體搜尋綜合運用就交給你思考囉,
3 t7 H2 @1 L, A  k0 n3 Q給你個提示: "Difference Value"1 u( R/ x; z3 [
有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:+ T5 H5 o8 |$ }6 `# o5 B2 E
: j$ T! S) ^6 ~( I7 `: u# e2 ^http://bbs.emu618.com/forum/thread-95790-1-1.html下不了了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-23 03:42 , Processed in 1.081055 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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