x86和x86_64微执行器。
microx的Python项目详细描述
microx-一个微执行框架
Microx是一个单指令“微执行”框架。Microx使程序能够安全地执行任意x86或x86-64指令。Microx不接管或不需要进程上下文来执行指令。它很容易嵌入到其他程序中,例如Python绑定。在
microx安全执行任意指令的方法是要求microx用户管理机器状态。MyX被打包为必须扩展的C++ ^ {< CD1> }类。Python绑定还提供了一个必须扩展的类microx.Executor
。扩展此类的程序必须实现read_register
和{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_party
XED内部版本:
$ ./scripts/bootstrap.sh $ exportXED_DIR=$(pwd)/third_party
然后,运行正常的CMake构建:
mkdir build &&cd build cmake .. cmake --build .
- 项目
标签: