現在、.DLLライブラリからいくつかのデータを抽出しようとしています-ファイル構造を理解しました(オフセット0x3c00から始まるzlibで圧縮された1039個のデータブロックがあり、最後のブロックはファットテーブルです)。ファット テーブル自体は、1038 個の「ブロック」(8 バイト + base64 でエンコードされた文字列 - ファイル名) に分割されます。私が見た限り、バイト 5 はファイル名の長さです。
私の問題は、バイト 1 ~ 4 が何に使用されているのか理解できないように見えることです。私の最初の推測では、それらは .DLL 内のファイル ブロックを見つけるためのオフセットであるということでした (主にテーブル全体で値が増加しているため)。ただし、たとえば、この場合、最初の「ブロック」は次のとおりです。
- 推定オフセット: 2E 78 00 00
- ファイル名の長さ: 30 00 00 00
- Base64 でエンコードされたファイル名: 59 6D 46 30 64 47 78 6C 58 32 6C 75 64 47 56 79 5A 6D 46 6A 5A 56 78 42 59 33 52 70 64 6D 56 51 5A 58 4A 72 63 31 9 7 7 5 31 9 7 36F 3D 3D
しかし、先ほども言ったように、ブロック自体は 0x3c00 にあるため、一致しません。同じことが 2 番目のブロックにも当てはまります (0x3f0b から始まりますが、テーブルの推定オフセットは 0x167e です)。
何か案は?