cemu v0.7 releases: lightweight multi-architecture assembly playground
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. CEmu is an attempt to fix this by providing a bundled GUI application that empowers users to write assembly and test it by compiling it to bytecode and executing it in a QEMU-based emulator.
Cheap EMUlator combines all the advantages of a basic assembly IDE, compilation, and execution environment, by relying on the great libraries Keystone, Unicorn and Capstone engines in a Qt powered GUI.
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
- (more to come)
CEmu was tested and works on Linux, Windows, and MacOSX.
Changelog v0.7
- Moved to PyQt6
- Updated minimum Python version to 3.10
- Added GitHub Actions for publishing, formatting, and linting
- Enforced
black
as the only coding style - Improved CI/CD
- Command-line REPL based on
prompt_toolkit
- Cemu can now be used as a library
Ctrl+F
can be used to switch to focus mode, showing nothing but code pane
Improvements
- All plugins and panes are now dockable widgets, which can be hidden/displayed from toolbar
- Created a global backend context structure
- Refactored code to use the global context
- Use of GithubActions for testing, formatting and publishing
- Added
stale.yml
config - Added issue templates
- Added PR template
- Added contribution and funding policy files
- Added an action for codeql-analysis.yml
- Updated readme with new logo and badges
- Added byte alignment combobox to memory view
- Removed debug prints and added docstrings
- Added new commands in CLI
- Fixed state transition bug in UI
- Added Pytest run in CI
- Added basic tests for ARM/Aarch64
- Removed obsolete files
- Started adding support for multiple OSes
Bug Fixes
- Implemented type hinting throughout the project, resulting in many potential bug fixed
- Implemented a proper callback system for logging
- Fixed most errors from pylint
- Fixed emulation issues
- Mitigated a weird
unicorn-engine
bug in MIPS and SPARC, reporting an incorrect emulation end address - Fixed state transition bug in the UI
Miscellaneous
- Made delivery on demand in CI
- Fixed typos in CI actions
- Updated build.yml file
- Fixed py 3.10 version specification in CI
- Restored files to permission 0644
- Added warning message when no SP or PC was specified before starting emulation
- Updated README.md, added more descriptive how-to, added REPL screenshot, and a fancy new logo
- Fixed the calculation of
$sp
and$pc
when the emulator sets up - Added extra tests
Install
- From PyPI
This is the recommended way to install cemu as it will work out of the box. You can installcemu
on your system or using virtualenv or pipenv, by running:
pip3 install –user –upgrade cemu - From GitHub
git clone https://github.com/hugsy/cemu && cd cemu pip3 install –user –upgrade .
OpenReil integration
`OpenREIL
<https://github.com/Cr4sh/openreil>`__ is an Open Source library created by [@Cr4sh](https://twitter.com/@d_olex) that implements a translator and tools for generating Intermediate Language level code (REIL). OpenREIL library can be used optionally with cemu. The Current version of OpenREIL only provides support for x86 (Intel) architecture.
If you use cemu with Python 2.7, you can also use `OpenReil
<https://github.com/Cr4sh/openreil>`__ to generate IR code based on the content of the Code panel.
cemu-openreil
To do so, follow the installation procedure for OpenReil by following the steps here.
Copyright (c) 2016 crazy rabbidz
Source: https://github.com/hugsy