跳转到主要内容

x86和x86_64微执行器。

项目描述

microx - 一个微执行框架

CI

Microx是一个单指令“微执行”框架。Microx使程序能够安全地执行任意的x86或x86-64指令。Microx不会接管或需要进程上下文来执行指令。它很容易嵌入到其他程序中,如Python绑定示例所示。

Microx通过要求用户管理机器状态来安全执行任意指令的方法。Microx被打包成一个需要扩展的C++ Executor类。Python绑定也提供了一个需要扩展的类,microx.Executor。扩展这个类的程序必须实现如read_registerread_memory等方法。当提供指令字节时,microx将调用类方法以获取执行指令所需的最小机器状态。执行指令后,microx将通过类似于write_registerwrite_memory的方法“报告”由指令执行引起的状态变化。

以下列出了microx的一些用例

  • 在类似调试器的系统中执行代码的投机执行。在这种情况下,可以使用microx来执行正在调试的进程的指令,同时保留原始程序的内存和状态。
  • 二进制符号执行。在这种情况下,这是microx的原始用例,二进制符号执行器可以使用microx来安全地执行符号执行系统不支持或建模的指令。使用microx将最小化可能需要具体化的符号状态的数量,以执行指令。microx就是这样在基于Python的二进制符号执行器中使用的。Microx提供了Python绑定,原因就在于此。
  • 无头污点跟踪。污点跟踪可以使用microx实现,就像使用Intel的PIN一样,但不需要进程上下文。Microx可以集成到反汇编器,如IDA或Binary Ninja,并在执行指令的同时进行污点跟踪。

Microx使用基于JIT的动态二进制翻译和指令仿真的组合来安全地执行x86指令。它是一个64位库,但可以执行64位平台上不支持32位指令。它很容易嵌入,因为它不执行动态内存分配,并且是可重入的。

Microx依赖于Intel的XED指令编码器和解码器。

安装

Microx具有Python绑定;您可以通过pip在macOS和Linux上安装它们

$ pip3 install microx

构建(Python)

如果我们没有为您的平台提供Python wheel,您可以自己构建microx。您至少需要Python 3.5。

首先,构建XED

$ ./scripts/bootstrap.sh

然后,使用setup.py build

$ setup.py build

构建(C++)

Microx的C++库可以使用CMake构建。

CMake构建使用XED_DIR定位XED库和头文件。

要使用third_party XED构建

$ ./scripts/bootstrap.sh
$ export XED_DIR=$(pwd)/third_party

然后,运行正常的CMake构建

mkdir build && cd build
cmake ..
cmake --build .

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程

构建分发

microx-1.4.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.2 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

microx-1.4.1-cp310-cp310-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.10 macOS 10.15+ x86-64

microx-1.4.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.2 MB 查看哈希值)

上传时间: CPython 3.9 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

microx-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 macOS 10.15+ x86-64

microx-1.4.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.2 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

microx-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.15+ x86-64

microx-1.4.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (2.2 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.24+ x86-64 manylinux: glibc 2.28+ x86-64

microx-1.4.1-cp37-cp37m-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m macOS 10.15+ x86-64

由以下支持