Perlを使用してWinNTポータブル実行可能ファイルからヘッダーを読み取るにはどうすればよいですか?
-
07-07-2019 - |
質問
PerlでPEファイルを操作したいのですが、モジュールが見つからなかったので、自分で作成すると思います(既にデルファイで作成しました)。
実行可能ファイルをバッファにマッピングするときに、0x00004550(IMAGE_NT_SIGNATURE)のようなオクタルを検索し、書き込み可能な文字列に変換し直すなど、1つの問題しかありませんか?
解決
ポータブル実行可能ファイルを操作するための Perlモジュールがあります: < code> Win32 :: Exe 。
正確な質問の手がかりはありませんが、独自のライブラリを作成したい場合は、 Win32 :: Exe
が参考になります。
他のヒント
その値をバイト文字列表現に変換するには、 pack
を使用します。扱っている定数はリトルエンディアンの32ビット値なので、テンプレートでは「V」です。
$ perl -e 'print pack q[V], 0x00004550' | hd
00000000 50 45 00 00 |PE..|
00000004
詳細については、 perldoc -f pack
を参照してください。
おそらく、&quot; PE \ 0 \ 0&quot;のような文字列を検索する必要はありません。実際に読んでいるファイルが実際にPEファイルかどうかを確認するためにそれらを使用してください。 「PE」セクションは通常、独自の長さフィールドを持つDOS(「MZ」)セクションの直後にあります。
(何をしたいのかにもよりますが、 Win32 :: Exe
は一見の価値があるかもしれません。)
所属していません StackOverflow