All Projects → RUB-SysSec → Microcode

RUB-SysSec / Microcode

Microcode Updates for the USENIX 2017 paper: Reverse Engineering x86 Processor Microcode

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Microcode

Yolo
😈Scripts or demo projects on iOS development or reverse engineering
Stars: ✭ 245 (-8.58%)
Mutual labels:  reverse-engineering
Opensteamcontroller
Steam Controller reverse engineering and customization project.
Stars: ✭ 253 (-5.6%)
Mutual labels:  reverse-engineering
Riru Il2cppdumper
Using Riru to dump il2cpp data at runtime
Stars: ✭ 259 (-3.36%)
Mutual labels:  reverse-engineering
Pokered
Disassembly of Pokémon Red/Blue
Stars: ✭ 2,924 (+991.04%)
Mutual labels:  reverse-engineering
Binnavi
BinNavi is a binary analysis IDE that allows to inspect, navigate, edit and annotate control flow graphs and call graphs of disassembled code.
Stars: ✭ 2,781 (+937.69%)
Mutual labels:  reverse-engineering
Simpleator
Simpleator ("Simple-ator") is an innovative Windows-centric x64 user-mode application emulator that leverages several new features that were added in Windows 10 Spring Update (1803), also called "Redstone 4", with additional improvements that were made in Windows 10 October Update (1809), aka "Redstone 5".
Stars: ✭ 260 (-2.99%)
Mutual labels:  reverse-engineering
Ropgadget
This tool lets you search your gadgets on your binaries to facilitate your ROP exploitation. ROPgadget supports ELF, PE and Mach-O format on x86, x64, ARM, ARM64, PowerPC, SPARC and MIPS architectures.
Stars: ✭ 2,908 (+985.07%)
Mutual labels:  reverse-engineering
Frick
frick - aka the first debugger built on top of frida
Stars: ✭ 267 (-0.37%)
Mutual labels:  reverse-engineering
Ghidra Cpp Class Analyzer
Ghidra C++ Class and Run Time Type Information Analyzer
Stars: ✭ 252 (-5.97%)
Mutual labels:  reverse-engineering
B2r2
B2R2 is a collection of useful algorithms, functions, and tools for binary analysis.
Stars: ✭ 262 (-2.24%)
Mutual labels:  reverse-engineering
Dnpatch
.NET Patcher library using dnlib
Stars: ✭ 249 (-7.09%)
Mutual labels:  reverse-engineering
Pokemon Reverse Engineering Tools
Tools for building and disassembling Pokémon Red and Pokémon Crystal
Stars: ✭ 249 (-7.09%)
Mutual labels:  reverse-engineering
Rec98
The Touhou PC-98 Restoration Project
Stars: ✭ 259 (-3.36%)
Mutual labels:  reverse-engineering
Pokegold Spaceworld
Disassembly of the Pokémon Gold and Silver 1997 Space World demo
Stars: ✭ 246 (-8.21%)
Mutual labels:  reverse-engineering
Wtfjh
One-step iOS binary runtime instrumentation for the lazy ones
Stars: ✭ 265 (-1.12%)
Mutual labels:  reverse-engineering
Idacyber
Data Visualization Plugin for IDA Pro
Stars: ✭ 244 (-8.96%)
Mutual labels:  reverse-engineering
Lumen
A private Lumina server for IDA Pro
Stars: ✭ 257 (-4.1%)
Mutual labels:  reverse-engineering
Boomerang
Boomerang Decompiler - Fighting the code-rot :)
Stars: ✭ 265 (-1.12%)
Mutual labels:  reverse-engineering
Infectpe
InfectPE - Inject custom code into PE file [This project is not maintained anymore]
Stars: ✭ 266 (-0.75%)
Mutual labels:  reverse-engineering
Vac
Source code of Valve Anti-Cheat obtained from disassembly of compiled modules
Stars: ✭ 254 (-5.22%)
Mutual labels:  reverse-engineering

x86 Microcode Framework and Example Programs

This repository contains the framework used during our work on reverse engineering the microcode of AMD K8 and K10 CPUs. It includes an assembler and disassembler as well as example programs implemented using these tools. We also provide our custom written minimal operating system that can rapidly apply and test microcode updates on AMD CPUs.

Disclaimer

The here provided files originated from research and are meant to be used for research purposes only. They are compiled with only partial knowledge about the microarchitecture's internals and may contain bugs as well as unintended behavior. All files are provided as is without any warranties and support. We assume no responsibility or liability for the use of them.

Background

The x86 instruction set is complex and contains many legacy instructions only kept for backward compatibility. Thus, rarely used or complex instructions are decoded in software, while performance critical instructions are handled by hardware decoders. Regardless of being decoded by hardware or software the instructions ultimately are translated to another instruction set named RISC86, which has a fixed instruction length and is suited for fast, superscalar processing. Besides software decoding microcode may be used to disable defective processor features and handle exceptions at the lowest level.

The content of this repository reflects the practical results of our research effort. Details are given in our papers:

Reverse Engineering x86 Processor Microcode published in the proceedings of the 26th USENIX Security Symposium

An Exploratory Analysis of Microcode as a Building Block for System Defenses published in the proceedings of the 25th ACM Conference on Computer and Communications Security

Structure

The folder Usenix17 contains the results of our Usenix 2017 paper, most importantly the updates and triggers for our proof-of-concepts as well as an update driver allowing arbitrary updates to be loaded on a Linux system. Further details are given in the corresponding readme file.

Our minimal operating system is contained in the folder angry_os. For details on how to build and use this system see the readme file in that folder.

The framework we used during our work is found in the folder ucodeapi. For examples on how this API is used see the example scripts provided in this folder. The API is only tested under Python 2.

The folder "case studies" contains the case studies presented in our CSS 18 paper in RTL form.

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].