Unicorn Engine
Reverse-Engineering-Tutorial
Our great sponsors
Unicorn Engine | Reverse-Engineering-Tutorial | |
---|---|---|
13 | 16 | |
6,647 | 8,984 | |
2.2% | - | |
6.8 | 0.0 | |
27 days ago | 16 days ago | |
C | Assembly | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Unicorn Engine
-
Show HN: Tetris, but the blocks are ARM instructions that execute in the browser
OFRAK Tetris is a project I started at work about two weeks ago. It's a web-based game that works on desktop and mobile. I made it for my company to bring to events like DEF CON, and to promote our binary analysis and patching framework called OFRAK.
In the game, 32-bit, little-endian ARM assembly instructions fall, and you can modify the operands before executing them on a CPU emulator. There are two segments mapped – one for instructions, and one for data (though both have read, write, and execute permissions). Your score is a four byte signed integer stored at the virtual address pointed to by the R12 register, and the goal is to use the instructions that fall to make the score value in memory as high as possible. When it's game over, you can download your game as an ELF to relive the glory in GDB on your favorite ARM device.
The CPU emulator is a version of Unicorn (https://www.unicorn-engine.org/) that has been cross-compiled to WebAssembly (https://alexaltea.github.io/unicorn.js/), so everything on the page runs in the browser without the need for any complicated infrastructure on the back end.
Since I've only been working on this for a short period of time leading up to its debut at DEF CON, there are still many more features I'd eventually like to implement. These include adding support for other ISAs besides ARM, adding an instruction reference manual, and lots of little cleanups, bug fixes, and adjustments.
My highest score is 509,644,979, but my average is about 131,378.
I look forward to feedback, bug reports, feature requests, and strategy discussions!
-
It Takes 6 Days to Change 1 Line of Code
Entails hundreds of hours of single-stepping through that opcode in Linux kernel using an indirect operand pointing toward its own opcode (self-modifying code).
Even the extraordinaire Fabrice Bellard (author of QEMU) admitted that it is broke and did a total rewrite, which fixed tons of other issues.
-
QEMU Version 7.0.0 Released
This is how I found out a snippet of assembly code that can actually distinguished between a KVM hypervisor and most of today’s emulator.
-
Can you make a MacOS Server on the Raspberry Pi for iMessage bridging server?
Actually, that gives me an idea. Unicorn Engine (https://github.com/unicorn-engine/unicorn) is FOSS and claims to be able to emulate many CPU architectures like x86. Do you think it could be possible to just run a regular Hackintosh setup through Unicorn Engine‘s x86 emulator? Definitely it would be very slow, and there is chance that it will just not work, but that would make the process fairly easy as Hackintosh setup is pretty well documented. Though I have to admit that I only just found Unicorn Engine and I can find almost no documentation for it other than on their github. I would be a bit skeptical of unicorn engine, but do you think that this could be possible?
-
TIL That Flatpak apps can emulate non-native apps like Apple Rosetta. (TL;DR on bottom)
https://www.unicorn-engine.org/ for example.
Reverse-Engineering-Tutorial
-
Hacking-Windows: A FREE Windows C development course where we will learn the Win32API and reverse engineer each step utilizing IDA Free in both an x86 and x64 environment. (UNDER DEVELOPMENT)
Thank you so kindly! Yes it is if someone is lost I would suggest the larger course here to get greater background https://github.com/mytechnotalent/Reverse-Engineering.
What are some alternatives?
QEMU - Official QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are ignored. Please only use release tarballs from the QEMU website.
MicroPython - MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
capstone - Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings. [Moved to: https://github.com/capstone-engine/capstone]
Il2CppInspector - Powerful automated tool for reverse engineering Unity IL2CPP binaries
box86 - Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
TinyVM - TinyVM is a small, fast, lightweight virtual machine written in pure ANSI C.
qemu-t8030 - iPhone 11 emulated on QEMU
CarpVM - "interesting" VM in C. Let's see how this goes.
box64 - Box64 - Linux Userspace x86_64 Emulator with a twist, targeted at ARM64 Linux devices
arm64-examples - Arm64 / C examples
fasmg - flat assembler g - adaptable assembly engine
oscam-patched - Open Source Cam Emulator