Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
bochscpu-python — Python bindings for BochsCPU | Kitploit
Tools/GitHubGitHub/hugsy/bochscpu-python
Dynamic Analysis (Sandboxing)Reverse EngineeringMalware AnalysisBinary Analysis
GitHubhugsy/bochscpu-python

bochscpu-python

Python bindings for BochsCPU

View Repository
39431 year agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

logo3

bochscpu-python

Python 3.8+ Downloads Code style: black Licence MIT Builds

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

root@kitploit:~
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.

root@kitploit:~
python -m pip install wheel/bochscpu-$version-$os-$arch.whl

From the source repository

Fairly straight forward:

root@kitploit:~
python -m pip install .

Or without cloning

root@kitploit:~
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:
root@kitploit:~
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.

A very crude template can be made as such:

root@kitploit:~
import bochscpu, bochscpu.utils, bochscpu.cpu

sess = bochscpu.Session()
sess.missing_page_handler = bochscpu.utils.callbacks.missing_page_cb
state = bochscpu.State()
bochscpu.cpu.set_real_mode(state)
hook = bochscpu.Hook()
bochscpu.utils.callbacks.install_default_callbacks(hook)
sess.run([hook,])

This will create a bochscpu session, set the CPU state for real mode, and pre-populate hooks with basic callbacks (that only perform a print upon execution). Note that this sample will actually do nothing as we haven't allocated code pages nor correctly set registers to point to it.

A more complete template can be found in the examples/ folder

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

image

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 🍻

Download Tool