Unicorn Engine
box64
Our great sponsors
Unicorn Engine | box64 | |
---|---|---|
14 | 73 | |
7,126 | 3,076 | |
1.7% | - | |
1.3 | 9.9 | |
8 days ago | 5 days ago | |
C | C | |
GNU General Public License v3.0 only | MIT License |
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
- Unicorn: Lightweight multi-platform, multi-architecture CPU emulator framework
- 86Box v4.0
-
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.
- FOSS Simulator for debugging C code (even better if it supports some MCUs)
- Unicorn: Lightweight multi-platform, multi-architecture CPU emulation framework
- Unicorn - CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)
-
Vita3K android running Tales of Hearts R - A Glimpse of What's to come
Macdu (Vita3K dev) also stated that this game is CPU bound so they used a CPU emulator known as unicorn2 , this is also the reason for the slow speed
-
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.
-
Top Python Tools for Malware Analysis. – PythonStacks
Unicorn is missing from that list.
The python CPU emulator with full program counter (PC) and general (and other CPU-specific) register set controls.
I use it to catch fileless malware in the second fastest dynamic manner. Also good for detecting Rowhammer/SPECTRE behaviors.
Disclaimer: one of the contributors and a contractor that frequently deploy this.
box64
-
No one even read the box64 readme for today's RISC-V video
In the video, they mentioned they can't run steam on RISC-V because box64 doesn't support 32bit apps. In the README of box64, it is mentioned:
-
Stardew Valley on Starfive VisionFive 2 running Ubuntu 23.10 with external Ati Radeon HD 5450
I see it can do more now, already tried some stuff. But see it is now more mature than months ago. Will try factorio again https://github.com/ptitSeb/box64/issues/665
-
runing factorio on raspberry pi 5 4gb ram
Also, in the discussions of box64 is this thread: https://github.com/ptitSeb/box64/discussions/524 My guess is that you have to install both box64 and box86, the latest mesa drivers with vulkan support. And then try to launch the game with proton. There is also this issue that shows factorio running on a Rock 5B: https://github.com/ptitSeb/box86-compatibility-list/issues/284
-
Runing factorio on raspberry pi 5 4gb ram
In Box64, which is an emulator+JIT recompiler, and thus likely pretty slow?
-
DirectX 12 Support on macOS
macOS runs x64 executables just fine through Rosetta so I don't see why Wine couldn't make use of that hardware acceleration.
It's also possible to only simulate the entrypoints through Rosetta and then execute native aarch64 code from there. On Linux https://github.com/ptitSeb/box64 does exactly that, for example. However, with the performance Apple has been able to squeeze out of Rosetta, I'm not sure of that workaround is even necessary.
-
Factorio on Arm: A Benchmark
Recently, I got a server from Oracle Cloud, having 4 cores and 24GB of RAM. Then, using a software called Box86 and its 64 bit version called Box64, I succeeded in running Factorio! Unfortunately, 1.1.80 ran at 3 UPS! I went through each major version, testing each individual one down to 0.12. Here are my results!
-
How to emulate on M1 mac?
You could try https://github.com/ptitSeb/box86 and https://github.com/ptitSeb/box64/ , I believe they allow you to emulate x86_64 on aarch64, though I have no experience with them, so cannot say for sure.
-
currently trying to get tf2 to work, but steam removed 32 bit support (wanted to use box86) with their html login thing, so i just have this system laying around collecting dust lmao
git clone https://github.com/ptitSeb/box64.git
-
How to run Linux games on ARM64
If you have time and patience take a look at box86 and box64. These are basically like translation layers that allow x86/x86_64 applications to run on ARM. I personally haven't use them yet, so I can't provide a guide or vouch for game compatibilities. But by the look of the progress made by them so far it looks promising.
-
Still a bit slow as Dynarec is not complete, but Stardew Valley now works on my StarFive2 with Box64
You can follow progress of this on https://github.com/ptitSeb/box64/issues/635
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.
FEX - A fast usermode x86 and x86-64 emulator for Arm64 Linux
MicroPython - MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems
box86 - Box86 - Linux Userspace x86 Emulator with a twist, targeted at ARM Linux devices
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]
ish - Linux shell for iOS
Reverse-Engineering-Tutorial - A FREE comprehensive reverse engineering tutorial covering x86, x64, 32-bit ARM & 64-bit ARM architectures.
xqemu - Open-source emulator to play original Xbox games on Windows, macOS, and Linux
TinyVM - TinyVM is a small, fast, lightweight virtual machine written in pure ANSI C.
factorio-docker - Factorio headless server in a Docker container
hangover - Hangover runs simple Win32 applications on arm64 Linux