From ba33d15e413f060fe323c0d56ee2fca03fd3d6c9 Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Thu, 24 Jul 2008 02:21:23 +0000 Subject: [PATCH] =?UTF-8?q?=E3=83=A1=E3=83=A2=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1971 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/tests/HashCheckTemplate/memo.txt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 build/tests/HashCheckTemplate/memo.txt diff --git a/build/tests/HashCheckTemplate/memo.txt b/build/tests/HashCheckTemplate/memo.txt new file mode 100644 index 00000000..e8091d57 --- /dev/null +++ b/build/tests/HashCheckTemplate/memo.txt @@ -0,0 +1,15 @@ +【デバッガでうまく動かない】 +どうやらデバッガはコードにいろいろ埋めるらしいので、起動時には既にロード済みROMの内容が違うっぽい→SHA1計算アウト。 +単体ブートならOK。 + +【暗号化領域】 +ARM9FLXの先頭0x800バイト(2kバイト)は暗号化されている(暗号化領域)。で、ランチャーがブート直前に暗号化を解除する。 +ヘッダに埋め込まれているARM9FLXのハッシュは、暗号化された状態でのハッシュである。 +HashCheckTemplateでARM9FLXのハッシュを計算する時点では、すでに暗号化が解除されているため、計算が合わない。 +どうにかして解除前の暗号化領域を手に入れる必要がある。 +が、実はHashCheckTemplateでは、この領域を00で埋めれば計算が合う。 +HashCheckTemplateのようなテストプログラムでは、暗号化領域は00で埋められるためである。 + +【暗号化領域が00であった事の確認】 +暗号解除時、先頭0x800バイトのうち先頭2バイトの暗号解除結果が"encryObj"でない場合は全体の暗号解除をせず、特殊処理として未定義命令コード(0xe7ffdeff)で埋められる。 +よって、暗号化領域に当たる部分が実行時に未定義命令コードで埋まってるのを確認すれば良い。