EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2169 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html
+ R% U3 j; \2 `4 E+ g- Z  d, Z. Z# y
[原創][教學]MD HACK 紅屏CHECKSUM修復教學
" f7 F0 [& X0 O+ pBY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
8 D7 [/ ]' c: [5 T( |8 H( S
. f+ l# J( H2 t4 z$ S3 @; s◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL : q6 I6 `2 L# q; j) ]
◆日期:2007 11/18 (日) 1 q: g* ^6 X) p0 f
◆組織: DARK SHADOW GAME HACK TEAM
+ C9 z% d/ a  c" E% x$ [" U8 L! L' @

3 C; e5 S" h7 xMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
$ L' O0 {9 T# B% }9 [2 ]0 z接著我會慢慢收手,今天上線剛好收到疾風的PM, * i  f' ?# a0 _( w$ w5 ?$ ~& g8 U/ w" ]
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
( Y% Q; U# Z% N% `沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 - |! N1 j( z- [6 N' F0 M
講解一下MD CHECKSUM的修正方法。
& t: h1 h9 _4 |" d3 D" V(以下方法不適用於MD版 洛克人, 5 Q1 i7 A2 t* t
MD 洛克人驗證需詳細分析過才能下定論,
" n# O/ n. J" r9 w目前對HACK漸漸沒興趣,所以應該不會去弄了)
4 P4 S6 u" s: H! t. i" N5 t7 R" l6 m7 H' f
9 a; t- D# c1 K( _- Q
首先我們先談談並不是所有rom修改後,
5 z9 H5 w$ P/ e: e9 W# m; I都會檢查checksum強制進入紅屏, - ~" M/ Q6 ?/ j1 i: M* f
此方法也不是適用於所有rom(例如:rockman),
! t5 |( h/ h9 \( i# l2 [) K0 B大至少8~9成以上適用。
! V; _1 g) {. H0 f
2 f  G( |; s/ _  D' K) }/ p( N2 t好了 工欲善其事 必先利其器, ( y, l5 S  Y( d
準備工具 16進位編輯器 + 你要改的rom + md 模擬器, 8 T: F5 F4 j; R; s. z% k+ {
準備好後,我們要了解以下幾點。 # f  ~4 u, y. U
1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
8 g: O' a% Z- f" e7 J4 n( ^) d2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。
& T! W% F3 X. u; l0 R/ H; P4 S1 y3.MD ROM 校驗數據在於$200以後到ROM結尾。
/ |2 x2 g8 q1 J. O* x
3 t9 f5 i# [/ a, H現在我們來舉例吧,學習最快的方法就是舉例子: 9 T! q2 |& w- b$ t0 W
例如我以很久以前我hack的螞蟻騎士作為例子,
9 X' k' x% e: P; [% L/ w. a8 H首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。 - q% r0 t; b8 v7 q

; D: S+ m" f0 u9 _/ h3 I由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
9 G4 O" w: o3 d我們就將rom裡面分為8bit和16bit。
! z1 |* N+ ^) F: o- ^從$200開始雙數為8bit單數為16bit, 5 g- W' I( p! \4 M) |
好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71. ; X0 f- m' |, P5 x( E
首先我們先到$18E看checksum檢驗數據,
$ N/ R5 z! ]' j1 G. X我們會看到3C 52,好! 記下來。 - h( W5 p, g* N0 W  R6 L% a  S
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, ; L. r8 x8 b3 q" T6 g6 }
OK現在用模擬器開啟ROM看看,紅屏伺候。 . t+ I7 B/ f, G" W
沒錯 此ROM有檢驗機制,OK 現在來修復吧。 & R- X  c5 N& u8 N; }6 j
  z6 h/ N6 ]. A5 J5 f8 X! C& {
剛剛還記得檢驗數據嗎?沒錯就是3C52,
/ h! J- A; m6 |. J9 _- J% i好! 現在來計算修復checksum吧,
: y, H; I, r  t2 J! O首先我們要將00 00 改為 4e 71,而且我們又了解
. L& [' F6 z* j& o/ j& [# n# M8 F此checksum機制是ADD演算法,所以我們多加了4E 71,
7 n& J% M  P; @就要在CHECKSUM驗證上多還給它,
- v. x# t# z+ J/ i所以將驗證數據加上NOP機器碼數據:
: ^. ?% |  E+ e( G- I; A( B$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, * n5 \5 C) r2 m7 J
再用模擬器測試,ok 紅屏消失了。
  a! s7 s+ z! ^1 x
4 K3 B3 l% `% Z" d
" W) ^. a- l( R就是那麼簡單。此時你應該還會有其他疑問,
# X+ {) [/ ?0 V9 E: _如果我要修改rom地址$BBBB0,它的數據是$99 A8數據
" ]2 x: U* |& W/ w8 g% h$ I我要改為FF FF,那怎麼辦? 其實很簡單,按照原理 / m3 Q( r/ C3 J% u, w
先將$FF FF-$99A8=$6657, 6 o: m- J# A: c1 B) Z# s
這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 - |/ H9 a6 h6 F! ~8 K% K2 f
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦? : X& A: J  z" \2 K
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
) {* a$ v, Y& L4 k3 T7 z檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, 9 v6 T8 R' W% B4 E- d- R
先將之前的修改還原,或是重新開一個相同的rom,
' f3 w( @4 p5 T將rom地址$BBBE6填入數據EA 98,
- L; o5 l* Q, J! M" P% i然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
& F0 y1 _  ?5 |7 r0 A2 S
; z% }( e1 A) u- J! v數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
9 _+ O. X+ S8 L% j, U7 R然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
; t5 L  o  L2 O6 g8 K" L1 B& y' q! _
* u0 N- \  t' Q( H
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,   e  u6 [9 F- N1 x
就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, ; m5 K, }$ y$ c) u
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
" F8 s# ^2 K# G* p# t一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然
1 r! b  w7 K& [網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
/ [' ~! |9 b; x! A# S去下載工具。 $ M9 A6 q$ H& W1 H% B6 b

6 F3 i4 |! C! c; ?( t% g! n, VOK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
& Y/ c! d! y/ f0 A9 N/ [2 }- W相信你也有所收穫。回文是給作者最大的回應, 0 F& _. Q+ N. a8 O
希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
* h! `) G! B$ j- d; u/ ^' t! M/ N9 h0 O% N) l
OK 忙碌去~
+ E( f* [* W1 N8 N
0 z$ c) D' H7 H# t" \) bP.S. 1 ^9 X, h7 z1 z/ D( p

/ b& _6 g, W" c) {1.歡迎轉載並保持文章完整性,並署明 7 S+ n+ c2 r( e( l5 R- N
作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
+ u7 w) c0 s  O9 R2 ?- E1 whttp://www.superworldz.cn/thread.php?fid-12.html
6 C- W/ Q; m0 v* t3 t9 V5 q
/ y. |9 A' i2 q2.EZ轉載禁止。
" [* l2 T1 L* T# Q* R$ S4 m
[ 本帖最后由 疾风之狼 于 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 发表
* _$ ^" V! O; W4 d* x那如果hack了好幾處地方,怎麽計算?
2 t$ r0 Y' d# N
有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表 0 F' B/ F6 a/ A; z0 y, F9 @2 n
那如果hack了好幾處地方,怎麽計算?
" S1 u3 s. z+ {/ H) |' l% u  N
此checksum算法計算到檔尾,
0 ?+ g' [2 g# X4 c( S5 }# s就算更改了某一處,也須計算到檔尾,) U; d1 {% U( f+ Q" I" Y- \, W& c
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:: U9 _6 L* B  n7 f+ j8 r3 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 发表
) G* P+ `% P8 c团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
/ A8 V. |% \$ M  T
HELLO ,
4 K2 o8 M# G# b- ^; D需要用到逆向分析或是記憶體搜尋綜合運用,
  t. m6 S! a6 R1 E前者你必須了解X86或甚至要了解SSE,2 |' v; M3 A5 Y; C/ n
我當初hack 鬼泣4(DMC4)就有用到SSE2。: z2 \* A% s% ^  K& w2 |; d: p

+ J5 U+ V7 s; |4 @/ ~0 {記憶體搜尋綜合運用就交給你思考囉,
* e3 M0 F+ a0 e4 F, S  V5 K給你個提示: "Difference Value"0 M; [8 ^& G- S' z: P5 F. [' I/ v7 `
有思考就有進步。 加油

该用户从未签到

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

本版积分规则

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

GMT+8, 2025-12-23 20:09 , Processed in 1.074218 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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