LIEF是Library to Instrument Executable Formats的简称,它提供了跨平台解析和修改常见的可执行文件的能力,比如ELF和PE文件,该项目的主页为:
https://lief.quarkslab.com/
如图9-1所示,LIEF提供了多种语言的SDK。
Mac下LIEF的安装如下:
pip install lief
下面我们简单介绍下LIEF库的使用方法,我们加载二进制文件,使用LIEF进行解析:
图9-1 LIEF多种语言SDK下载页面 [1]
pefile="a1303f026b713fbe7fe165cc8609847f5ec46bb2dfdbe86cff4b12deae728ca3" binary = lief.parse(pefile)
打印binary.dos_header的内容,获得该PE文件的DOS头信息,篇幅有限这里只展现部分内容:
Magic: 5a4d Used Bytes In The LastPage: 90 File Size In Pages: 3 Number Of Relocation: 0 Header Size In Paragraphs: 4 Minimum Extra Paragraphs: 0 Maximum Extra Paragraphs: ffff
打印binary.header的内容,获得该PE文件的文件头信息,篇幅有限这里只展现部分内容:
Signature: 50 45 0 0 Machine: I386 Number Of Sections: 4 Pointer To Symbol Table: 0 Number Of Symbols: 0 Size Of Optional Header: e0 Characteristics: RELOCS_STRIPPED - EXECUTABLE_IMAGE - LINE_NUMS_STRIPPED - LOCAL_SYMS_STRIPPED - CHARA_32BIT_MACHINE Time Date Stamp: 49ec18a5
类似的方式还可以访问导入/导出表等信息,这里不再赘述,有兴趣的同学可以查看其官方使用手册 [2] 。下面我们将介绍常见的几种免杀方法,我们假设PE文件已经保存在字节数组bytez中。
[1] https://lief.quarkslab.com/
[2] https://lief.quarkslab.com/doc/tutorials/01_play_with_formats.html#pe