bochscpu-python 0.3.1

Creator: coderz1093

Last updated:

Add to Cart

Description:

bochscpupython 0.3.1

bochscpu-python





Python bindings for @yrp's BochsCPU using FFI to easily and accurately emulate x86 code.
Install
bochscpu-python requires a Python environment of 3.8 or more recent only.
Via PyPI (preferred)
By far the simplest way to get things up and running is using the stable packaged version on PyPI
python -m pip install bochscpu-python

Via the generated builds
Download the latest working artifact from the repository Github Actions tab. Extract the ZIP file, install the .whl file you'll find inside the wheel folder.
python -m pip install wheel/bochscpu-$version-$os-$arch.whl

From the source repository
Fairly straight forward:
python -m pip install .

Or without cloning
python -m pip install git+https://github.com/hugsy/bochscpu-python.git#egg=bochscpu-python

Note that this approach will require you to have all the building tools necessary installed (as described below)
Build
Requirements

Python 3.8+ (with development kit)
cmake
pip
a C++20 compatible compiler (tested cl for Windows, clang++ for MacOS and g++ Linux)

Steps

Build BochsCPU, BochsCPU-FFI, and BochsCPU-Build following the instructions on their respective pages
... Alternatively BochsCPU-FFI for Windows & Linux libraries object files can be downloaded from the build Github Actions
Move the *.lib in bochscpu/lib/<BuildType> (where BuildType can be Debug, Release, RelWithDebInfo, etc.)
Install the requirements: python -m pip install -r requirements.txt
Build with cmake
This will generate the bochscpu pyd file (and its PDB) which you can import from a Python session with import bochscpu.
... Alternatively you can also generate a .whl from the root of the project:

python -m pip wheel .

Usage
Just import the bochscpu module and let the fun begin! Installing the package will also install interface files, allowing modern IDEs (VSCode, PyCharm, etc.) to offer useful completion.
Some Examples


Emulate a Fibonascii sequence in x64 long mode

https://github.com/hugsy/bochscpu-python/assets/590234/adc5ac5a-a8eb-4982-9537-5ece3f32f8f8
Code



Emulate code from a Windows 11 x64 memory dump


Code



Emulate a print("hello world")-like assembly code in 16 bit real mode

https://github.com/hugsy/bochscpu-python/assets/590234/eb06af06-4b10-490e-ae40-a1d0aed333ca
Code



Emulate Linux Glibc's rand() function on x64

https://github.com/hugsy/bochscpu-python/assets/590234/2486adbc-0878-46f5-83ed-3bcf9774fd26
Code

Enjoy 🍻

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.