Обнаружение UPX программно - PullRequest
2 голосов
/ 03 января 2011

Я пытаюсь выяснить, как определить, был ли двоичный файл сжат с помощью UPX.Я использую простой CRC, чтобы определить, было ли каким-либо образом изменено мое приложение, и если CRC потерпел неудачу по размеру из-за упаковщика, я хотел бы определить это как ОК.

Сейчас я начинаю с UPX.

Итак, есть ли маркер на двоичном файле?Есть ли какие-либо конкретные JMP или другие инструкции, которые мне следует искать?
Это будет в основном проверено в Windows, но в будущем я мог бы добавить его и в Linux.

Любая помощь (и код)признателен.

ДОБАВЛЕНО:

Я обнаружил, что в 10 двоичных файлах я проверял

AddressOfEntryPoint<br> Import Directory RVA<br> Resouce Directory RVA

, либо они указывают на UPX, либо имеют смещение, котороеустанавливается UPX.Любая информация по этому поводу?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 января 2011

Загрузите upx исходный код с UPX Homepage и откройте src/p_w32pe.cpp файл; функция, которую вы ищете:

int PackW32Pe::canUnpack()

Эта функция проверяет, сжат ли файл с помощью win32 upx.

0 голосов
/ 03 января 2011

Вы можете попробовать проверить имена разделов исполняемого файла. UPX меняет их на UPX0, UPX1, UPX2, я полагаю.

...