x86和x86_64微执行器。
项目描述
microx - 一个微执行框架
Microx是一个单指令“微执行”框架。Microx使程序能够安全地执行任意的x86或x86-64指令。Microx不会接管或需要进程上下文来执行指令。它很容易嵌入到其他程序中,如Python绑定示例所示。
Microx通过要求用户管理机器状态来安全执行任意指令的方法。Microx被打包成一个需要扩展的C++ Executor
类。Python绑定也提供了一个需要扩展的类,microx.Executor
。扩展这个类的程序必须实现如read_register
和read_memory
等方法。当提供指令字节时,microx将调用类方法以获取执行指令所需的最小机器状态。执行指令后,microx将通过类似于write_register
和write_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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f40483919bc32997e2cbe3e5453b12ec9d2991405d0634375a3409449c342af8 |
|
MD5 | 9e4bb69b62b8c6b1478364cd2e5d236b |
|
BLAKE2b-256 | f3b7987fccf6e77eb531fdef43856538da43830f741f1b5e56c7676fa525b46e |
关闭
microx-1.4.1-cp310-cp310-macosx_10_15_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 565ff6bd983b1ec6f5cac59b13a745aa13fa58a8677fdbcfdac10de246516ce2 |
|
MD5 | ef1b1a9e1d9c2dcbf80bbd57d9229755 |
|
BLAKE2b-256 | 80e34f06ff30fb60f453cdff622eb8f49f5f85a2586c2991e0764c5dc5a797f8 |
关闭
microx-1.4.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85bd566e09b57f2f8ffa5e021ca745140b282dc2c11eee8614cb3b3eee83e4c4 |
|
MD5 | 64e50439c8da9934c25bf12351e471e0 |
|
BLAKE2b-256 | cc1315f69d251dcab2403448f35a60f38d96f8945e6b98519076db82f674e970 |
关闭
microx-1.4.1-cp39-cp39-macosx_10_15_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a240ef3492e0ab1f9cee410498987dd9ff18c57f64b89aa1e60630fd4aade129 |
|
MD5 | 358542d75462259a966f3271c1284bba |
|
BLAKE2b-256 | cf570970614078560e212f4982fa4f2249d9b47d383cff3b883e805e80872418 |
关闭
microx-1.4.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aae1adfd1516906795c66d3bad0d974d1c01e6930782e4a99179a6550393cf45 |
|
MD5 | b12dc882a9e50fac5b19aeece1b58084 |
|
BLAKE2b-256 | 197d33cc4ea99b1fbe7b35de3a53cd5ab9fde4f06742cb55ef8894d23d55dbec |
关闭
microx-1.4.1-cp38-cp38-macosx_10_15_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a9527759e4a07c18440fb17f890fcee2dc4457ec6e4df6755f09cc197c8d7f92 |
|
MD5 | a7e62d6113b14ca897e759983c552464 |
|
BLAKE2b-256 | 769c112d1695da04fe7c3b9e8ebf3e56ef3be128b044c40051e14614d0e273a8 |
关闭
microx-1.4.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5e7d5c775ce759914fe5bcc55f7ee2710dc61d6e0ac40c264dac22ff592cd085 |
|
MD5 | e7e64bdf9d331800e6c96d34bec3b408 |
|
BLAKE2b-256 | edf7cbe4d31723191a410f63cb57d3519ad51dfb4658df76f2c1d064d7987cc2 |
关闭
哈希值 for microx-1.4.1-cp37-cp37m-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a30d00935bd6192c88214772e20a0ed133605750ae0c9d77659de8378f6dc6f9 |
|
MD5 | c3e24fd66c29271ce6931fbcbaf711ef |
|
BLAKE2b-256 | 351756e7083ee726bdd8b2ea176119b779b99b35af75d21ce61eeccedb2ecfc7 |