Upx programmatisch erkennen
Frage
Ich versuche herauszufinden, wie ich feststellen kann, ob eine Binärdatei mit UPX komprimiert wurde. Ich verwende eine einfache CRC, um festzustellen, ob meine App in irgendeiner Weise verändert wurde und ob die CRC aufgrund eines Packers an der Größe fehlgeschlagen ist, möchte ich das als OK erkennen.
Im Moment fange ich mit UPX an.
Gibt es also einen Marker auf der Binärdatei? Gibt es bestimmte JMP oder andere Anweisungen, nach denen ich suchen sollte?
Dies wird hauptsächlich in Windows getestet, aber in Zukunft könnte ich es auch zu Linux hinzufügen.
Jede Hilfe (und Code) wird geschätzt.
HINZUGEFÜGT:
Ich fand, dass ich in den 10 Binärdateien das überprüfte
AddressOfEntryPoint
Import Directory RVA
Resouce Directory RVA
Zeigen Sie entweder auf UPX oder haben Sie einen Offset, der von UPX eingestellt ist. Irgendwelche Informationen dazu?
Vielen Dank
Lösung
Sie können versuchen, die Abschnittsnamen der ausführbaren Datei zu überprüfen. UPX ändert sie in upx0, upx1, upx2, glaube ich.
Andere Tipps
Download upx
Quellcode von Upx homepage und offen src/p_w32pe.cpp
Datei; Die Funktion, nach der Sie suchen, ist;
int PackW32Pe::canUnpack()
Diese Funktion prüft, ob die Datei mit Win32 upx komprimiert ist.