0

PerlでPEファイルを操作したいのですが、モジュールが見つからなかったので、自分で作成すると思います(delphiで一度作成しました)。

実行可能ファイルをバッファにマッピングするときに問題が1つだけあります。0x00004550(IMAGE_NT_SIGNATURE)のような8進数を検索し、書き込み可能な文字列に戻すにはどうすればよいですか?

4

2 に答える 2

9

ポータブル実行可能ファイルを操作するためのPerlモジュール ありますWin32::Exe

私はあなたの正確な質問についての手がかりを持っていませんが、それでもあなた自身のライブラリを書きたいのであればWin32::Exe、良い参考になるかもしれません。

于 2009-09-13T21:23:00.240 に答える
2

その値をバイト文字列表現に変換するには、を使用しますpack。扱っている定数はリトルエンディアンの32ビット値であるため、テンプレートの「V」です。

$ perl -e 'print pack q[V], 0x00004550' | hd
00000000  50 45 00 00                                       |PE..|
00000004

詳細perldoc -f packはをご覧ください。

「PE\0 \ 0」のような文字列を検索する必要はおそらくないでしょう。それらを使用して、読み取っているファイルが実際にPEファイルであるかどうかを確認してください。'PE'セクションは通常、独自の長さフィールドを持つDOS('MZ')セクションの直後にあります。

Win32::Exe(あなたが何をしたいかによっては、それは一見の価値があるかもしれないことに同意します。)

于 2009-09-14T07:52:50.517 に答える