Я не знаю, как работает формат ELF или как получить доступ к его заголовкам и данным через код, однако мне нужно проверить, был ли двоичный файл ELF сжат (упакован?) С помощью UPX для Linux.
Проверка двоичного файла с помощью strings
Я увидел строку UPX!
, так что, думаю, я смогу это использовать. Шестнадцатеричный бинарный код показывает строку, и для позиции в двоичном файле я могу предположить, что она является частью одного из заголовков ELF (пожалуйста, исправьте меня, если я ошибаюсь). Это дамп этого:
00000000 .ELF........................4...
00000020 ........4. ...(.................
00000040 ........................@...@...
00000060 @.....................[.UPX!....
00000080 ............T............?d..ELF
Не знаю, хорошо ли это выглядит, извините.
Кто-нибудь знает, как обнаружить UPX в Linux? Если нет, то как получить доступ к заголовкам и получить эту строку UPX!
(имя заголовка?)?
Я изучил исходный код UPX, но все написано на C ++, я хочу написать код на C, и за ним действительно трудно следовать.
Спасибо, любая помощь приветствуется.
РЕДАКТИРОВАТЬ: О награде. Ответ должен дать хороший пример, который работает, так как я пробовал разные подходы, и они не всегда работают, как в примере ниже.
Спасибо