Skip to content
/ cemu Public

Cheap EMUlator: lightweight multi-architecture assembly playground

License

Notifications You must be signed in to change notification settings

hugsy/cemu

Repository files navigation

Logo

CEmu: The Cheap (Assembly) Emulator

Code style: black Licence MIT Python-Version 3.10 CEmu on PyPI CEmu on Discord Downloads

Description

Writing assembly is fun. Assembly is the lowest language (humanly understandable) available to communicate with computers, and is crucial to understand the internal mechanisms of any machine. Unfortunately, setting up an environment to write, compile and run assembly for various architectures (x86, ARM, MIPS, SPARC) has always been painful.CEmuis an attempt to fix this by providing GUI, CLI and library that allows to write and test assembly quickly.

CEmuis built upon:

And the GUI is powered by in a Qt6.

It allows to test binary samples, check your shellcodes or even simply learn how to write assembly code, all of this for the following architectures:

  • x86-32 / x86-64
  • ARM / AArch64
  • MIPS / MIPS64
  • SPARC / SPARC64
  • PPC (but not emulation)

CEmuwas mostly tested to work on Linux and Windows, but should work on MacOS.

Installation

Notes

Since version 0.2.2,cemuis now Python3 only for simplicity and mostly also due to the fact that Python2 is not developed any longer. If your current installation ofcemuis <= 0.2.1 and on Python2, please uninstall it and install it using Python3.

In addition, Python >= 3.10 is required, starting0.6.

Quick install with PIP

Last stable from PyPI:

python3 -m pip install install cemu

Last stable from Github:

python3 -m pip install --user --upgrade git+https://github.com/hugsy/cemu.git@main#egg=cemu

For 99% of cases, that's all you need to do.cemuwill be installed in the associatedScriptsdirectory:

  • On Linux by default the executable will be found as/usr/local/bin/cemuif installed as root,~/.local/bin/cemufor non-root
  • On Windows,%PYTHON_DIR%\Scripts\cemu.exeif installed with privileges,%APPDATA%\Python\Python310\Scripts\cemu.exeif not

Usage

As a GUI

After installing withpip,simply run the executable, or invoke via Python

python3 -m cemu

This should produce a GUI similar to this:

cemu-gui cemu-gui

In the terminal

python -m cemu --cli

From where you'll end up in a REPL, allowing you to build and run the emulation environment.

cemu-cli

As a Library

python -i -c"import cemu"

Then use the provided API to build and run your environment.

Contribution

cemuwas created and maintained by myself,@_hugsy_,but kept fresh thanks toall the contributors.

contributors-img

To make contributions, the easiest way to get started is by usingryeto get everything setup:

curl -sSf https://rye.astral.sh/get|bash#opt
rye sync

Before submitting a Pull Request, ensure that both linting and formatting of your new code comply with the project's standards. This can be achieved easily as such:

rye lint
rye fmt

Note that any non-compliance will make CI validation fail, therefore preventing your code being merged.

But if you just like the tool as a user, consider dropping on Discord (or Twitter or other) a simple"thanks",it is always very appreciated. And if you can, considersponsoring me- it really helps dedicating time and resources to the projects!