EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2021 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
  B# ^3 q3 z3 e; C$ F3 G, x7 ?/ u" Q, x' Q
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 - _! I/ }. @7 Q2 _$ O% d
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
/ `+ E8 d: ~/ Q. h: p1 R( l! p3 T3 M+ e
◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL 5 U* r9 Z. l: e8 c
◆日期:2007 11/18 (日)
4 c$ J  o9 T2 j  F# \4 v1 a◆組織: DARK SHADOW GAME HACK TEAM ; O( ]! O. o; X1 A3 y
7 V9 k) l4 O3 o0 [5 ]$ j. O7 t

9 }. m  Q: m4 }2 x4 j% Z& IMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了, 2 ^  v' U6 |- K
接著我會慢慢收手,今天上線剛好收到疾風的PM,
& @5 w3 e& p- K9 @問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
0 G1 Y. x* }- @" {沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單
& z8 U' Z9 k2 P$ D6 F講解一下MD CHECKSUM的修正方法。
& u  [" U" o. H8 ]7 X' Y(以下方法不適用於MD版 洛克人, ) K# u8 o% h1 M5 d
MD 洛克人驗證需詳細分析過才能下定論, 3 k, z" c+ W# Y7 M- M. ~, R
目前對HACK漸漸沒興趣,所以應該不會去弄了)
  \2 P9 r% C# Y! B5 N9 ~- x1 R. |% ?+ e9 A. @

6 l3 [( ^/ h5 Z' r5 W首先我們先談談並不是所有rom修改後, 2 h! q8 I$ s0 c1 M1 B% N
都會檢查checksum強制進入紅屏, " q7 T4 [/ o' I" S
此方法也不是適用於所有rom(例如:rockman),
$ O/ A% L( @: m- e9 v大至少8~9成以上適用。 & G6 ^0 S1 `$ A8 H; U8 B

$ e4 o% |) t* m6 I% ?好了 工欲善其事 必先利其器, ( r! ?2 J4 h7 s3 x# {
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, ; g+ y% k  y1 W) t
準備好後,我們要了解以下幾點。 % H& X8 ^7 n" r' k/ W, y7 t2 l
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
/ `0 C1 @/ b8 E8 r, ]2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 ; G; a2 y; ?( N# F! o3 \7 h7 T5 c
3.MD ROM 校驗數據在於$200以後到ROM結尾。
. G+ b9 h+ k3 [# h1 u9 M& C9 J; m# G' ~4 }! O
現在我們來舉例吧,學習最快的方法就是舉例子:
4 G- Q! W+ z) J8 Z2 E4 n3 R, i例如我以很久以前我hack的螞蟻騎士作為例子,
3 {2 T8 I  ?8 P! a* N首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 7 Z/ A$ X3 d( \9 ^
3 W2 Q* d9 j, X  g6 s1 Y
由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
% w. l0 T$ }& @# `我們就將rom裡面分為8bit和16bit。 + y6 [7 T- S; u8 b
從$200開始雙數為8bit單數為16bit, . V3 E* M  _+ Y8 T( f0 W
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. & P" y' `4 X8 @4 k! L5 l( B& h4 `: [
首先我們先到$18E看checksum檢驗數據,
  @9 M9 T5 V# T" T' m: _. y6 J我們會看到3C 52,好! 記下來。
0 E  f& H9 u& v! Y接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71,
" `* M! Q* {4 f' |OK現在用模擬器開啟ROM看看,紅屏伺候。   {. T5 |, t( M3 \1 k! S# D$ I+ K, i
沒錯 此ROM有檢驗機制,OK 現在來修復吧。
( o% q" I( E( Q, N/ A
6 ^* c. J- J/ \4 b# E  Q; O剛剛還記得檢驗數據嗎?沒錯就是3C52,
' o& o! g8 |( `好! 現在來計算修復checksum吧,
* S3 p  {2 r! q7 B首先我們要將00 00 改為 4e 71,而且我們又了解 - r, r9 C! {/ v: l/ o9 }
此checksum機制是ADD演算法,所以我們多加了4E 71,
+ B6 }7 j: v# {1 J" e就要在CHECKSUM驗證上多還給它, . d5 w; ^+ k. ^- z# o) Y# O9 \
所以將驗證數據加上NOP機器碼數據: ; U" i" d) P7 x$ W
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e,
  e$ C2 |" Z2 r( i$ _; w% k再用模擬器測試,ok 紅屏消失了。 : J) a6 |( f8 u$ N. W9 g

8 q& E/ H( W$ v, b1 z; R" w* S3 e- K( |1 M
就是那麼簡單。此時你應該還會有其他疑問,
6 _( m: I$ I. o4 e; W, e. S如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 4 L+ c  y0 n4 S. B( N
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 - }3 S6 d+ n6 Y* {
先將$FF FF-$99A8=$6657, . U5 G( A. ]# f7 f4 Y! Z" a
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 + L9 |  y* l$ o0 Y. z3 G# o2 f
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? - p! E" K# r7 a
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
% [$ E% X, G1 Q6 y1 G1 U& s檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, # L" a  c0 t* n$ H& V1 a, d! x( U
先將之前的修改還原,或是重新開一個相同的rom, 3 v3 r# Q1 N( h- |" C6 d1 r
將rom地址$BBBE6填入數據EA 98,   o4 A! [) l5 ^% g2 S9 |9 E
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
$ v% e" G% S. c4 m( h" h
$ t' I, C' X4 |( K; O3 E. A數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧, / q3 l4 L$ d& C/ `7 p* ?$ U
然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
9 |0 E  `9 K0 [) @, |  ]) j  C2 C( w7 {; w+ D, _
( O8 r+ b1 K7 X/ ^1 U
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
8 m! B' _* |* d7 p5 i* }5 f就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, ' r. R8 `2 [8 K3 \( y
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
2 k8 G5 R! Q1 ^+ [1 ?5 c一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
* [1 R8 d  @- v  Z網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以 ' V8 p0 x( y# e8 M! I
去下載工具。 ; G0 Z, z* Q! z$ \/ m2 u# E

( j) r" F+ t8 |1 k. @OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
" A$ o) q+ G% p, L. v/ C% |; ~" h/ }相信你也有所收穫。回文是給作者最大的回應, 9 @" u. w. t! v5 ?+ O1 b* n
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
$ k4 ?" p/ r/ b3 R. ^6 f
( I& n. |2 A8 U  e% y- ?+ iOK 忙碌去~
3 s$ a, H5 ?, Z. j. @/ _8 b) Y  i. P% G. ^8 W% `) {! d1 w
P.S.
+ c( `! k& `7 R3 d6 C' N9 f$ l) K$ W7 c4 `+ k
1.歡迎轉載並保持文章完整性,並署明 - Y, d+ T& K5 l0 D# [) c
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。 ) Y0 V" o- _# M& {; n
http://www.superworldz.cn/thread.php?fid-12.html " W' g, D5 ?, C. h

7 }% w: _0 v- @" o4 b( N2.EZ轉載禁止。
9 M% A( K; n: A
[ 本帖最后由 疾风之狼 于 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 发表 ! {3 L% b# o" {0 B
那如果hack了好幾處地方,怎麽計算?
* o0 B+ k; z# F2 j$ n+ y/ y$ k5 [
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 + x6 [2 @2 U  L3 \% ]/ ^
那如果hack了好幾處地方,怎麽計算?
1 C! _% j5 h4 A6 P
此checksum算法計算到檔尾,
2 C! j1 ~9 S) \就算更改了某一處,也須計算到檔尾,% D5 \9 t  C. I% k0 ?$ J" v
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
: L# e8 P* Z! ]8 i' ^, @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 发表
5 w$ i9 l" z7 v团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
- s. }  |5 q" k& h% C2 |7 c
HELLO ,' h* h" T* Z) F& O& n
需要用到逆向分析或是記憶體搜尋綜合運用,
* p5 k9 p3 f9 c- e( a# B前者你必須了解X86或甚至要了解SSE,0 p/ T) l$ D8 T* ]8 L8 z6 D' i
我當初hack 鬼泣4(DMC4)就有用到SSE2。
4 A+ J( |  K/ i% t) u$ S& k3 S1 D/ i  O0 ]8 g
記憶體搜尋綜合運用就交給你思考囉,7 P* O* y, m4 Y/ U4 [
給你個提示: "Difference Value"
0 a8 d5 ^) k7 S' ?3 \有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-7-27 15:00 , Processed in 1.072265 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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