PerlでPEファイルを操作したいのですが、モジュールが見つからなかったので、自分で作成すると思います(delphiで一度作成しました)。
実行可能ファイルをバッファにマッピングするときに問題が1つだけあります。0x00004550(IMAGE_NT_SIGNATURE)のような8進数を検索し、書き込み可能な文字列に戻すにはどうすればよいですか?
PerlでPEファイルを操作したいのですが、モジュールが見つからなかったので、自分で作成すると思います(delphiで一度作成しました)。
実行可能ファイルをバッファにマッピングするときに問題が1つだけあります。0x00004550(IMAGE_NT_SIGNATURE)のような8進数を検索し、書き込み可能な文字列に戻すにはどうすればよいですか?
ポータブル実行可能ファイルを操作するためのPerlモジュール があります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
はをご覧ください。
「PE\0 \ 0」のような文字列を検索する必要はおそらくないでしょう。それらを使用して、読み取っているファイルが実際にPEファイルであるかどうかを確認してください。'PE'セクションは通常、独自の長さフィールドを持つDOS('MZ')セクションの直後にあります。
Win32::Exe
(あなたが何をしたいかによっては、それは一見の価値があるかもしれないことに同意します。)