0%

qiling And retdec

1. qiling

一个强大的二进制分析框架,可以跨架构、跨平台,使用Python3实现。

  • 跨平台:Windows, MacOS, Linux, BSD, UEFI, DOS。
  • 跨架构:X86, X86_64, Arm, Arm64, MIPS, 8086。
  • 多文件格式支持:PE, MachO, ELF, COM。
  • 在隔离的环境(sandbox)里模拟执行机器代码
  • 支持跨架构跨平台的调试功能,主要是GDBserver远程调试。
  • 提供了高层次的API来自定义沙箱代码,用于分析恶意程序。
  • 允许在各个级别执行钩子(instruction/basic-block/memory-access/exception/syscall/IO/etc).

在Unicorn engine的基础上开发.

有意思的几个点:

模拟执行的基本流程:

  • 初始化:ql = QiLing(),针对执行的二进制程序类型(Binary,Shellcode),有不同的参数。
  • 配置:一些属性的设置(fs_mapper、debug_stop、debugger、multithread、ipv6、bindtolocalhost、root)
  • 执行:ql.run()

需要注意的是,远程调试功能支持的是IDAPro7.4+,且调试时qiling需要在Linux上运行(由于unicorn的原因在Windows上不行),支持Python3.5+,我的配置还没这么好。

参考链接:

2. retdec

这是一个基于LLVM的可重定向的机器码反编译器,不受平台结构、操作系统、二进制执行文件格式限制。

  • 支持的文件格式:ELF, PE, Mach-O, COFF, AR (archive), Intel HEX, and raw machine code
  • 支持的架构:
    • 32位:ntel x86, ARM, MIPS, PIC32, and PowerPC
    • 64位:x86-64, ARM64 (AArch64)

怎么使用:

参考链接: