0

現在、.DLLライブラリからいくつかのデータを抽出しようとしています-ファイル構造を理解しました(オフセット0x3c00から始まるzlibで圧縮された1039個のデータブロックがあり、最後のブロックはファットテーブルです)。ファット テーブル自体は、1038 個の「ブロック」(8 バイト + base64 でエンコードされた文字列 - ファイル名) に分割されます。私が見た限り、バイト 5 はファイル名の長さです。

私の問題は、バイト 1 ~ 4 が何に使用されているのか理解できないように見えることです。私の最初の推測では、それらは .DLL 内のファイル ブロックを見つけるためのオフセットであるということでした (主にテーブル全体で値が増加しているため)。ただし、たとえば、この場合、最初の「ブロック」は次のとおりです。

  1. 推定オフセット: 2E 78 00 00
  2. ファイル名の長さ: 30 00 00 00
  3. 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 です)。

何か案は?

4

1 に答える 1

0

自分の質問に答える笑

いずれにせよ、これらの数値ファイル ブロックの実際のオフセットです。ただし、最初のブロックの実際の位置からではなく、乱数から最初の数値が始まるという事実を除きます。ただし、それとは別に、オフセットの各カップルの違いは、対応するブロックの長さに一致します。

于 2013-06-24T01:18:08.613 に答える