ROMのバックアップ3 | objective-cをちょい研究!ブログ

objective-cをちょい研究!ブログ

WILLCOMを卒業してiOS開発者に転身しました。。
コメント&トラックバック大歓迎です。

2のつづき。


prepare_imgfsする前のファイルをviewimgfsしても「Unable to load compression DLL!」と失敗する。
prepare_imgfsはviewimgfs展開する前の準備として必要らしい。
prepare_imgfsで抽出前後のファイルをバイナリ比較すると、ヘッダ列を検出してそれ以前の部分をただカットしたものっぽい。
そのヘッダというのがこれ。
「F8AC2C9DE3D42B4DBD30916ED84F31DC」(16進16byte)


prepare_imgfs前のファイルを検索してみると、ヘッダらしきが4つ出てきた。4つのうち一番最後を抜き出したのがimgfs_raw_data.bin。
ちなみに手作業で他の3つも抽出してviewimgfsしてみたが同様に全滅。


viewimgfsの結果

D:\imgfs_tools>viewimgfs imgfs_raw_data.bin -nosplit
guidBootSignature: F8 AC 2C 9D E3 D4 2B 4D BD 30 91 6E D8 4F 31 DC ←ヘッダ16byte
dwFSVersion: 00000001
dwSectorsPerHeaderBlock: 00000001
dwRunsPerFileHeader: 00000001
dwBytesPerHeader: 00000034 ←ブロックのヘッダサイズ?
dwChunksPerSector: 00000020
dwFirstHeaderBlockOffset: 00000800 ←ヘッダ先頭からブロックへのオフセット
dwDataBlockSize: 00001000
szCompressionType: LZX ←圧縮形式

dwFreeSectorCount: 00000283
dwHiddenSectorCount: 00000040
dwUpdateModeFlag: 00000001

Address: 00000800, dwBlockSignature: FB8E7B1B
dwNextHeaderBlock: 74918B6F (size: 7491836F)

 Header type: 2C89AA30, Addr: 00000808 ←ヘッダタイプ検出でこけてるっぽい
  Unknown header type, FS_DATA_TABLE??


dwBytesPerHeaderは、0x34Byte毎にHeader typeを探しに行っているので、
多分ブロック毎のヘッダサイズでしょうか。