9.1 LIEF库简介

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