我不知道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)