x86和x86_64微执行器。

microx的Python项目详细描述


microx-一个微执行框架

CI

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

microx安全执行任意指令的方法是要求microx用户管理机器状态。MyX被打包为必须扩展的C++ ^ {< CD1> }类。Python绑定还提供了一个必须扩展的类microx.Executor。扩展此类的程序必须实现read_register和{}等方法。当提供指令字节时,microx将调用类方法,以拉入执行指令所需的最小机器状态。在执行指令之后,microx将再次通过write_register和{}等方法“报告”由指令执行引起的状态变化。在

以下列出了microx的一些用例:

  • 在类似调试器的系统中推测性地执行代码。在这种情况下,microx可以用来执行来自被调试进程的指令,这样就可以保留原始程序的内存和状态。在
  • 二进制符号执行。在这个场景(microx的原始用例)中,二进制符号执行器可以使用microx安全地执行符号执行系统不支持或建模的指令。microx的使用将最小化可能需要具体化以执行指令的符号状态量。Microx就是以这种方式在基于Python的二进制符号执行器中使用的。出于这个原因,Microx附带了Python绑定。在
  • 无头污点追踪。污点跟踪可以用microx实现,就像使用Intel的PIN一样,但是没有进程上下文。Microx可以集成到诸如IDA或Binary Ninja之类的反汇编程序中,并用于执行指令,执行过程中的污点跟踪。在

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

Microx依赖于Intel's XED指令编码器和解码器。在

安装

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

$ pip3 install microx

建筑(Python)

如果我们不为您的平台提供Python轮子,您可以自己构建microx。你会 至少需要Python3.5。在

首先,构建XED:

^{pr2}$

然后,使用setup.py build

$ setup.py build
< H2>建筑(C++)< /H2>

Myxx的C++库可以用CMake来构建。在

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

要使用third_partyXED内部版本:

$ ./scripts/bootstrap.sh
$ exportXED_DIR=$(pwd)/third_party

然后,运行正常的CMake构建:

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java反序列化多态JSON字符串   集合如何在Java中将唯一值从映射列表映射到新的映射列表?   java将JTable的单元格放在JTable的中间   Groovy方法中的java效率   java如何使用JNI或JNA阅读窗口标题?   java是否可以在listview单击时更改片段   java Gridview onclick images使用viewpager将imageview显示为画廊视图   java如何显示时间戳之间超过24小时的时间差   如何为下面的json结构声明java bean   未调用java onLocationResult   java在从组合框中选择时立即更新颜色变量   Java中的swing GetDriveType()等效项