EMU618社区

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

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

 关闭 [复制链接]

签到天数: 2151 天

[LV.Master]伴坛终老

发表于 2009-3-12 22:02:02 | 显示全部楼层 |阅读模式
文章来源:http://bbs.winsong.org/read-htm-tid-213704-uid-137821.html; w) o+ Q& t# ?# ]* O0 i
& U2 }2 O# ^! `
[原創][教學]MD HACK 紅屏CHECKSUM修復教學 * K5 M5 j8 e) B0 t$ s7 y
BY 闇影旅團團長KRIZAL(附上螞蟻騎士按鍵hack chkfix版)
0 \# F9 _0 M. T& H
1 @. a7 f6 z$ \& x◆作者:闇影旅團(DS.g.h.t)團長 KRIZAL
( S" D' i/ V  B◆日期:2007 11/18 (日)   V8 l# n1 L: A$ O: h9 P
◆組織: DARK SHADOW GAME HACK TEAM : Y' T* S  ^, @0 u
: J2 Q4 w7 J& Q! s- N

- _/ K, X7 U9 K- gMD HACK已經漸漸擴展開,各種常用機種引導方面也差不多了,
$ ?% n8 C' u! m接著我會慢慢收手,今天上線剛好收到疾風的PM, % w! E, _: \. d8 O
問相關於MD CHECKSUM的問題,其實CHECKSUM我自從
5 D# N7 T- B9 e3 i9 x% c# C沒在修改PS2的存檔後就很少接觸了,今天就稍微跟大家簡單 8 I! B' N6 t3 x! }. Q; @
講解一下MD CHECKSUM的修正方法。   M/ j0 ^+ Q+ F/ Y
(以下方法不適用於MD版 洛克人, , ?  e+ F! C( W$ f! `0 w* L
MD 洛克人驗證需詳細分析過才能下定論, & M" B9 u, [" {6 s7 O. Q5 Q! U0 l
目前對HACK漸漸沒興趣,所以應該不會去弄了)
- B, q/ J( g! D/ y" b1 R5 P% u1 N! i% n: Q" R

! ~6 W0 Y3 S% L3 [8 |首先我們先談談並不是所有rom修改後,
0 z, t' \$ q, Z* [% T" r都會檢查checksum強制進入紅屏, ; |& H2 B- X7 h- G! b
此方法也不是適用於所有rom(例如:rockman), * b6 E% F- u$ P. Y9 J
大至少8~9成以上適用。 . @1 u: t3 v; f4 f. b( L
" Q0 a- Q1 y3 d4 G+ l
好了 工欲善其事 必先利其器,
- R9 B% I. B% |9 _4 N- E5 H準備工具 16進位編輯器 + 你要改的rom + md 模擬器,
" x1 k# \6 ]" l0 {! ^, J" x5 X準備好後,我們要了解以下幾點。
; s$ i* ^$ ?" h3 u( Z1. MD ROM用的檢驗是CHECKSUM裡面較常見的ADD演算法。
7 z2 b& k8 v7 f3 G2.MD ROM 校驗地址在於rom $18e的位置,檢驗地址16bit。 # @# w) i4 Y; E( I7 r
3.MD ROM 校驗數據在於$200以後到ROM結尾。 ) H3 \! Z/ `% [. g  Y

8 }! E, J) h7 O現在我們來舉例吧,學習最快的方法就是舉例子:
0 C1 }4 P7 d  k例如我以很久以前我hack的螞蟻騎士作為例子, 3 b; D# ~' I1 u/ E4 o
首先用16進位編輯器開啟螞蟻騎士md rom檔(.bin | .smd)。
; }( `, M$ N( v7 K5 i6 }9 p2 }  n
9 d7 ?* E7 @* ?- v9 i由於檢驗地址為16bit ,為了不想讓初學者解讀感到困難,
6 Y4 L+ ^9 N- B: x% Y我們就將rom裡面分為8bit和16bit。
. `0 m- P, h. u4 q1 q從$200開始雙數為8bit單數為16bit,
& O; @3 G/ k+ c' q8 e好! 接著舉例我要在rom的$BBBF2裡面寫入nop - opcode:4e71.
- C$ J7 d, D' a, N6 p: O" T% E4 ?0 z9 r首先我們先到$18E看checksum檢驗數據, 0 {0 u0 a3 |! C" i- A. p, \8 z
我們會看到3C 52,好! 記下來。 ! ~2 j  B' b: n2 B( k# ?( \' M1 [
接著跳到地址$BBBF2,將00 00數據改為NOP機器碼4E71, 6 s& h: E1 y2 n
OK現在用模擬器開啟ROM看看,紅屏伺候。
$ @4 O3 e5 z2 S, x7 L- Y0 l9 {. j沒錯 此ROM有檢驗機制,OK 現在來修復吧。
/ M$ V' `. |+ W2 `3 u9 I1 X2 M8 u" n3 s
剛剛還記得檢驗數據嗎?沒錯就是3C52, ) @" j. d' i0 W9 n) _5 M
好! 現在來計算修復checksum吧, 8 t% n5 [5 |9 V! ~! b2 P& ?
首先我們要將00 00 改為 4e 71,而且我們又了解   D7 [. c! |7 s1 O/ Z
此checksum機制是ADD演算法,所以我們多加了4E 71, . k: `- m3 Y% M9 @! o$ Y7 W! ?
就要在CHECKSUM驗證上多還給它, ( s! ?5 \0 f- T8 |' m& e9 c
所以將驗證數據加上NOP機器碼數據: , L5 V. q$ R! @
$3C52+$4E71=$8AC3,ok 算好了將$8AC3填到rom地址$18e, ; {: F0 @5 f/ _% s( U7 b
再用模擬器測試,ok 紅屏消失了。 , O5 t% R& {3 |3 p
# C4 M; n, R# ?1 q

/ A+ W, }+ [6 ~( R" ~就是那麼簡單。此時你應該還會有其他疑問, ) Q* N% [7 N0 U! w
如果我要修改rom地址$BBBB0,它的數據是$99 A8數據 ( T* t8 ]' D2 P" c& [
我要改為FF FF,那怎麼辦? 其實很簡單,按照原理
  I2 W2 }! K: [0 ^) s先將$FF FF-$99A8=$6657,
4 z! _  d# T$ \, s$ X, i這表示我們多加了$6657,一樣還給檢驗地址,$3C52+6657=A2A9。 : r8 M2 i/ G+ O( Z# |
那如果$3C52+加上的數值大於16bit最大值FFFF怎麼辦?   k, F4 O5 g1 T& `7 G7 U3 v
一樣很easy ,舉例 $3C52+$EA98=$126EA,我之前說過我們要的
+ b2 j  t/ y, W" G  Q* {檢驗數據只有16bit,所以答案就是26EA,不信可以測試一下, - G. Y8 V' t* i: ?
先將之前的修改還原,或是重新開一個相同的rom, 6 l6 z- ]" O+ @1 N3 a
將rom地址$BBBE6填入數據EA 98, # C9 c' I/ O: {# o; s8 z7 ]
然後再rom地址$18E填入26EA,模擬器運行,ok紅屏不見了。
; A# K5 n: F6 |% i7 R
/ n) g# `$ m2 @5 C# n8 s數據加法部分算完了,讀者應該會想現在應該輪到減法部分計算了吧,
+ \- d0 ~2 `% u! e+ R然而算法都是差不多的,就留給大家當功課吧所以這裡我就不再舉例子了。
( p* m; A% H- P- O4 X0 h& A& {
  s+ j% A! C( P2 I' ~8 g$ w9 c8 M  ~' c4 ^
講了一堆 論壇的網友應該會覺得奇怪,為什麼當時我的hack rom都沒有修復驗證,簡單的說當時我放的rom沒有修正紅屏的原因只有一個,
; ?3 Z# Q2 }5 D- Y8 ^就是"懶",運行於windows系統的rom模擬器本身就有自帶修復功能, ; \7 S, Z& v) N/ e8 i$ l# D
然而為什麼還要寫這篇文章呢?其實最主要就是讓網友們和團員更了解
  g0 i% h/ \" d: j  r+ G1 F  o一些原理,而不是盲目亂改。 而且運行於非windows系統的其他模擬器,如果沒自動修正驗證數據功能,那這篇文章就還蠻有用的,當然 9 m$ b# p( @2 Y
網路上應該多少也有用vc vb寫出來的工具,懶的自己修正的話,可以
7 Q7 B8 x+ S" Z3 v4 A; B6 N, H去下載工具。 " {. e  m/ ~" U+ T: B
: O% c) V0 k8 n4 x0 m2 L
OK 以上打的很酸,大家看的很累,感謝你努力的看到這裡,
# U3 m) y% r4 h" \3 y' R相信你也有所收穫。回文是給作者最大的回應,
. U2 P# t8 ?6 _/ |2 Z希望以後還會有好文章推出的話,大家應該知道怎麼做吧。 ^_^
9 U3 u. X$ S5 |7 W+ }5 Q- N+ a) @3 ~& U0 E* C, G& \- ?* @
OK 忙碌去~ ( y8 o* K- H1 C1 B- h) L0 a
' e' G' E7 f) u& v1 e
P.S. 3 N& _5 m8 N5 H  N4 e0 J

) X. V) h$ m' _. `6 s1.歡迎轉載並保持文章完整性,並署明
9 t: N$ @- J& g% ]作者KRIZAL和團隊DARK SHADOW GAME HACK TEAM。
7 }% s6 d' S0 I7 k( l3 o' whttp://www.superworldz.cn/thread.php?fid-12.html
  p* K2 V  s6 K* @
) C! J7 Y. Y$ }* J( c2.EZ轉載禁止。

+ [! x, [" }+ s* t. N- B' W1 l[ 本帖最后由 疾风之狼 于 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$ V: Q8 G2 N6 G1 ?5 h3 Z那如果hack了好幾處地方,怎麽計算?

. t# S% q0 Y0 g  D有个工具的,老狼的网盘有下

该用户从未签到

发表于 2009-3-13 12:58:36 | 显示全部楼层
原帖由 money_114 于 2009-3-12 22:20 发表
+ l( E! n' r4 E3 r那如果hack了好幾處地方,怎麽計算?
( F/ B; Y; Q1 g: ?& k8 P3 h
此checksum算法計算到檔尾,
) z  k8 C) M5 \: H' Z( M) J就算更改了某一處,也須計算到檔尾,  L. w8 n8 T4 z, l, @) X
多處處理方法相同。

该用户从未签到

发表于 2009-3-13 13:08:50 | 显示全部楼层
工具:
  O& _# ]; b( ~# h( Phttp://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 发表
3 [* {. f' B: ]* ~! S7 H% y; b团长大人,你来了,怎么查找基地址啊?我新手。麻烦说下,
1 G8 H" C4 P# C$ t5 O9 O
HELLO ,3 w, z' H1 R! e) \$ K, J& C2 L7 _
需要用到逆向分析或是記憶體搜尋綜合運用,: L: C  [( F. r" z
前者你必須了解X86或甚至要了解SSE,4 m9 R0 j  s5 o7 }# }- b" z
我當初hack 鬼泣4(DMC4)就有用到SSE2。
) X$ I+ \% L% \, _; `' M& ?- P0 \" p* w& w7 x6 o, R
記憶體搜尋綜合運用就交給你思考囉,! U8 H2 e/ x; ^3 b* S9 m
給你個提示: "Difference Value"; I' `* U" z' a- Y$ y
有思考就有進步。 加油

该用户从未签到

发表于 2010-6-4 13:18:01 | 显示全部楼层
工具:
* C; R9 m. p9 \6 d/ F/ V) g: 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-5 22:37 , Processed in 1.092774 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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