質問
バイナリがUPXで圧縮されているかどうかを検出する方法を見つけようとしています。私は単純なCRCを使用して、アプリが何らかの方法で変更されたかどうかを検出しています。パッカーのためにCRCがサイズで故障した場合、それをOKとして検出したいと思います。
今、私はUPXから始めています。
それで、バイナリにマーカーはありますか?特定のJMPまたは私が検索すべきその他の指示はありますか?
これは主にWindowsでテストされますが、将来的にはLinuxにも追加する可能性があります。
ヘルプ(およびコード)が大歓迎です。
追加した:
私は10のバイナリで私がチェックしたことを発見しました
AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA
UPXを指すか、UPXによって設定されたオフセットがあります。これに関する情報はありますか?
ありがとう
解決
実行可能ファイルのセクション名をチェックしてみてください。 UPXは、それらをUPX0、UPX1、UPX2に変更します。
他のヒント
ダウンロード upx
からのソースコード UPXホームページ そして開いています src/p_w32pe.cpp
ファイル;あなたが探している機能は次のとおりです。
int PackW32Pe::canUnpack()
この関数は、ファイルがWin32 UPXで圧縮されているかどうかをチェックします。
所属していません StackOverflow