mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1971 b08762b0-b915-fc4b-9d8c-17b2551a87ff
16 lines
994 B
Plaintext
16 lines
994 B
Plaintext
【デバッガでうまく動かない】
|
||
どうやらデバッガはコードにいろいろ埋めるらしいので、起動時には既にロード済みROMの内容が違うっぽい→SHA1計算アウト。
|
||
単体ブートならOK。
|
||
|
||
【暗号化領域】
|
||
ARM9FLXの先頭0x800バイト(2kバイト)は暗号化されている(暗号化領域)。で、ランチャーがブート直前に暗号化を解除する。
|
||
ヘッダに埋め込まれているARM9FLXのハッシュは、暗号化された状態でのハッシュである。
|
||
HashCheckTemplateでARM9FLXのハッシュを計算する時点では、すでに暗号化が解除されているため、計算が合わない。
|
||
どうにかして解除前の暗号化領域を手に入れる必要がある。
|
||
が、実はHashCheckTemplateでは、この領域を00で埋めれば計算が合う。
|
||
HashCheckTemplateのようなテストプログラムでは、暗号化領域は00で埋められるためである。
|
||
|
||
【暗号化領域が00であった事の確認】
|
||
暗号解除時、先頭0x800バイトのうち先頭2バイトの暗号解除結果が"encryObj"でない場合は全体の暗号解除をせず、特殊処理として未定義命令コード(0xe7ffdeff)で埋められる。
|
||
よって、暗号化領域に当たる部分が実行時に未定義命令コードで埋まってるのを確認すれば良い。
|