« 5.00M33-4 Custom Firmware | トップページ | S.C.M.デュナメスにGNフルシールドを移植する »

2008年12月10日 (水曜日)

DSTTv1.16カーネルの真相(Fake Detector解説記事)

20081214
v1.16カーネル
にはフラッシュ書き換えコードが含まれています。
書き換えられるフラッシュメモリは以下のとおり
・AMIC A29L400
・EON EN29LV400A

・ATMEL AT49BV001※DSTT Advance

が対象。
過去に公開していたフラッシュメモリの製造元リストは以下のとおり(一部修正あり)
True
→内部分裂→SHARP(000049B0)※2→新シェルに切り替え→INTEL→構造大幅変更→INTEL
Fake
→内部分裂→
AMIC→新シェルに切り替え→EON→?
DSTT Advance
ATMEL→v1.16対策→ATMEL(734D849F)※1→?

※1 使われているフラッシュメモリは本来書き換え対象である「ATMEL AT49BV001」
なぜ書き換え対象にならないのかというと、最新のDSTT Advanceではv1.16カーネルのFakeを壊す仕組みは完全に無効化されているため。
つまりフラッシュメモリへのコマンドを発行しても、フラッシュメモリは応答しないので、IDのような値が表示される。
つまりIDのように見える「734D849F」は、100h番地のメモリの値になっているだけ。
フラッシュが応答しないということはFakeRecoveryでも書き換えは出来ない。

※2 Fake Detectorで判定するとフラッシュメモリの名前は表示されず「000049B0」と表示されました。
この値が表示された場合は、SHARP製の「F160BGHB-BTLZ0」が使われていると思って良いかと。


どうやらFake扱いのものに使われているフラッシュメモリが対象のようです。

なおCRCがF7EFFB2E差し替え後のカーネルに関しては、EON EN29LV400A除外されています。
恐らくTrueの一部まで巻き込む可能性があったからだと思われます。
※これ以外で(TrueのDSTTが)起動しなくなった場合は単にその個体が不良品であっただけの可能性が高いです。
また書き換えられる箇所は起動するソフトによって異なります。
書き換えられた箇所によっては、起動に影響しない場合もあれば、一発で起動しなくなる場合もあります。
ちなみに挙動がおかしくなったDSTTをダンプしてみると、00hに書き換えられている箇所が見つかりました。
要するにDSTT自体が物理的に破壊されたのではなく、プログラムを変更させられているだけ。
現時点で復活する方法がないのはただ単に書き換えられた部分を戻す方法がないため。
となると元に戻すプログラムを有志が製作し、公開すれば直せる可能性もあるというわけで・・・

【補足として】
CRC32:CE7A3983とF7EFFB2Eはかなりの違いがあると思われがちですが、実質的に違う部分は4byteのみ(ここにTrueかFakeかを判断する判定コードが存在している)。
この4bytettextract.exeで抽出したttpatch.dat内に存在します。

参考までに
偽DSTTスレ1>>848 ボヤッキー氏提供の
判定コード回避方法(CE7A3983、F7EFFB2E共通)
※参考までにttpatch.datの取り出し方法も含め解説。
自己責任で行ってください。

1、Yasu氏が公開しているYSMenuを入手する。
2、解凍すると中身にttextract.exeが含まれているので、それをTTMENU.DAT(CRCがCE7A3983、F7EFFB2Eのいずれか)がある場所にコピーする。
3、ttextract.exeを実行すると、ttpatch.datttdldi.datが作成されます。
200812113
4、ttpatch.datバイナリエディタで開く。
今回はバイナリエディタとしてStirlingというフリーソフトを使用。
指定アドレスへ移動を選択し、以下のように書き換える。
0000309C : 01 00 00 0A → 00 00 A0 E1
※この場合は指定アドレスへ移動「0000309C」と入力すると該当箇所に飛ぶことが出来ます。
20081211
黒くした箇所を00 00 A0 E1に書き換えてください。
もう一箇所書き換える必要があります。
00003964 : 28 01 00 0A → 00 00 A0 E1
200812112
同じように黒くした箇所を00 00 A0 E1に書き換える。
5、書き換えが終わったら上書き保存して終了。
これを用いれば判定コードを回避できると思います。

【Fake Detectorの解説】
偽DSTTスレ1>>848 ボヤッキー氏がDSTTの真贋を判定するプログラムを公開しています。
→ttp://schiphol.2ch.net/test/read.cgi/gameurawaza/1221132008/
※hは抜いています。

仕組みとしては書き換えコードが実行される対象(AMIC A29L400、EON EN29LV400A※F7EFFB2Eでは除外※、ATMEL AT49BV001のいずれか)が使われている場合はFake判定
20081214
それ以外ならTrueと判定されます。
注意すべき点は、上記以外のフラッシュメモリがFakeで使われるようになった場合にもTrueと判定されてしまうこと。
現に最新のDSTT AdvanceではATMEL AT49BV001以外のフラッシュメモリが採用されているらしく上記の判定方法ではTrue(734D849F)となってしまいます。
この場合、v1.16では安全であったとしても、今後公開されるv1.17カーネルでは破壊対象に含まれる可能性も十分に考えられます。
判定を信じる/信じないは各自の判断。
あくまで自己責任で行ってください。

転載自由とのことなので当ブログにもミラーとして置いておきます。
Fake Detector(ミラー)
※解凍パスワード「FAKE」

|

« 5.00M33-4 Custom Firmware | トップページ | S.C.M.デュナメスにGNフルシールドを移植する »

Nintendo DS」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/101299/43376581

この記事へのトラックバック一覧です: DSTTv1.16カーネルの真相(Fake Detector解説記事):

« 5.00M33-4 Custom Firmware | トップページ | S.C.M.デュナメスにGNフルシールドを移植する »