检查ELF是否在Linux中包装了UPX

我不知道ELF格式如何工作或如何通过代码访问其头和数据,但我需要检查是否已使用UPX for Linux压缩(打包?)ELF二进制文件.

用字符串检查二进制文件我看到字符串UPX!所以我想我可以用它.对二进制进行Hexediting显示字符串,对于二进制文件中的位置,我可以假设它是ELF标题之一的一部分(如果我错了,请纠正我).这是一个转储:

00000000    .ELF........................4...
00000020    ........4. ...(.................
00000040    ........................@...@...
00000060    @.....................[.UPX!....
00000080    ............T............?d..ELF

我不知道这看起来不错,对不起.

有谁知道如何在Linux上检测UPX?如果没有,如何访问标题并获得UPX! string(标题的名称?)?

我确实查看了UPX源代码,但一切都是C,我希望用C编写代码,这真的很难理解.

谢谢,欢迎任何帮助.

编辑:关于赏金.他们的回答必须给出一个有效的例子,因为我尝试了不同的方法而且它们并不总是有效,如下面的示例所示.
谢谢

解决方法:

这些是检测UPX压缩文件的测试:

>>>>(0x3c.l+0xf8)   string      UPX0 \b, UPX compressed
>>>>(0x3c.l+0xf8)   search/0x140    UPX2
>>>(&0x7c.l+0x26)   string      UPX \b, UPX compressed
>>>&0x26    string      UPX \b, UPX compressed
>>85    string      UPX     \b, UPX compressed

使用

man 5 magic

查看如何指定文件中的偏移量.

例如,在您编程时,您应该:

>打开正在测试的文件进行阅读
>跳到其中一个偏移量
>检查是否存在预期的字符串
>重复直到不再有抵消

有趣的是,在我的ubuntu 64位中,未检测到UPX压缩文件,因为/usr/share / misc / magic缺少此测试:

>>180   string      UPX!        UPX compressed (64-bit)
上一篇:U盘安装Ubuntu


下一篇:【pwnable.kr】flag