All Projects → Nalen98 → GhidraEmu

Nalen98 / GhidraEmu

Licence: MIT license
Native Pcode emulator

Programming Languages

java
68154 projects - #9 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to GhidraEmu

ghidra-findcrypt
Ghidra analysis plugin to locate cryptographic constants
Stars: ✭ 138 (+452%)
Mutual labels:  ghidra, ghidra-plugin, ghidra-extension
ghidra-emu-fun
Ghidra Emulates Functions
Stars: ✭ 36 (+44%)
Mutual labels:  emulation, ghidra, ghidra-plugin
Washingtondc
Open-source Sega Dreamcast emulator
Stars: ✭ 201 (+704%)
Mutual labels:  emulator, emulation
Bsnes Plus
debug-oriented fork of bsnes
Stars: ✭ 209 (+736%)
Mutual labels:  emulator, emulation
Emu Docs
Emulator documentation archive
Stars: ✭ 222 (+788%)
Mutual labels:  emulator, emulation
Snowflake
❄️ 🎮 Extensible Emulator Frontend written in C# and Javascript
Stars: ✭ 185 (+640%)
Mutual labels:  emulator, emulation
Openemu
🕹 Retro video game emulation for macOS
Stars: ✭ 13,369 (+53376%)
Mutual labels:  emulator, emulation
Punes
Nintendo Entertaiment System emulator and NSF/NSFe Music Player (Linux, FreeBSD, OpenBSD and Windows)
Stars: ✭ 217 (+768%)
Mutual labels:  emulator, emulation
Nsfplay
Nintendo NES sound file NSF music player
Stars: ✭ 155 (+520%)
Mutual labels:  emulator, emulation
js-nes-emulator
NES emulator in javascript.
Stars: ✭ 12 (-52%)
Mutual labels:  emulator, emulation
ghidra2dwarf
🐉 Export ghidra decompiled code to dwarf sections inside ELF binary
Stars: ✭ 135 (+440%)
Mutual labels:  ghidra, ghidra-plugin
kpspemu
PSP Emulator written in Kotlin for JVM, JS and Native. Can work as PWA.
Stars: ✭ 57 (+128%)
Mutual labels:  emulator, emulation
Vaporboy
Gameboy / Gameboy Color Emulator PWA built with Preact. ⚛️ Powered by wasmBoy. 🎮Themed with VaporWave. 🌴🐬
Stars: ✭ 182 (+628%)
Mutual labels:  emulator, emulation
Rust64
Commodore 64 emulator written in Rust
Stars: ✭ 176 (+604%)
Mutual labels:  emulator, emulation
Segs
💪 SEGS - Super Entity Game Server
Stars: ✭ 190 (+660%)
Mutual labels:  emulator, emulation
Nes
A Javascript NES Emulator
Stars: ✭ 168 (+572%)
Mutual labels:  emulator, emulation
Emupedia.github.io
The purpose of Emupedia is to serve as a nonprofit meta-resource, hub and community for those interested mainly in video game preservation which aims to digitally collect, archive and preserve games and software to make them available online accessible by a user-friendly UI that simulates several retro operating systems for educational purposes.
Stars: ✭ 206 (+724%)
Mutual labels:  emulator, emulation
Byuu
byuu is a multi-system emulator focused on performance, features, and ease of use.
Stars: ✭ 123 (+392%)
Mutual labels:  emulator, emulation
Epsxe64ubuntu
Install ePSXe Linux (x64) & shaders using BIOS HLE and Core Plugins on x86-64 Debian, Ubuntu, Linux Mint and their derivatives.
Stars: ✭ 130 (+420%)
Mutual labels:  emulator, emulation
Yuzu
Nintendo Switch Emulator
Stars: ✭ 17,405 (+69520%)
Mutual labels:  emulator, emulation

GhidraEmu

This project was initially started as a part of Digital Security's Research Centre internship "Summer of Hack 2021".

Plugin allows you to easily dealing with native pcode emulator. No scripts anymore, just use it from Ghidra.

GhidraEmu

What can it do

  • Work with all architectures that Ghidra supports, so you can add exotic processors and emulate them
  • CPU context, stack and heap emualtion
  • Applying patched bytes from Ghidra
  • Breakpoints to control emualtion process
  • Hook some libc functions (but it is still poor)

What it can't

  • Step in external library functions (emuHelper restrictions)
  • Syscall emulation

All plugin windows in one set

GhidraEmu

Before you start

Don't forget to analyze your program in Ghidra, emulator depends on it.

Features

Menu window

Contains all plugin's windows - Stack view, Registers, Breakpoints view and main window.

GhidraEmu menu

Popup window

Contains hotkeys for setting start and end addresses of emulation, breakpoints and applying changed bytes to emulator.

GhidraEmu popup

Register view

Change registers as you want. Setting as link register (green arrow) will help emulator let it know which register contatins return address. Plugin knows how it goes via stack, lr register, AARCH64 and mips registers. If you have an exotic one, select link register and press the button.

Stack view

When you open your program in Сode browser GhidraEmu will mmap stack space automaticaly. Stack pointer will be set at middle of stack space. It was done to allow you set values at top or bottom stack frames. Set your values as you want. Scroll it if you got some freezes on updating or reseting.

Breakpoints view

Apply patched bytes

If you changed something, let emulator know about changed bytes.

GhidraEmu apply patched bytes

Console

Here plugin prints output information.

GhidraEmu console

Future work

EmuHelper restrictions doesn't allow to use on program space in another. So your external shared library, for example, will never know about program memory space and vice versa. So you can't emulate it as one process with one memory space. Let me know if I'm missing something here.

Installation

  • Download Release version of extension and install it in Ghidra File → Install Extensions...
  • Use gradle to build extension: GHIDRA_INSTALL_DIR=${GHIDRA_HOME} gradle and use Ghidra to install it: File → Install Extensions...
  • In CodeBrowser go to File → Configure → Experimental and select checkbox.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].