Vx32: Portable, efficient, safe user-space execution of untrusted x86 code (2008)
pdos.csail.mit.edu
pdos.csail.mit.edu
Unicorn is used quite widely for reverse engineering and malware analysis; the Qiling project (https://qiling.io/) extends it to OS-level emulation.
Very cool technique, but I’m not enough of a DBT expert to judge how significant it is compared to the many many DBTs that folks have built before and since.
I think I put it on google code, so I guess it's gone now. Then again so is npapi.
So it doesn't really just run any random untrusted code, it has to be prepared to work with their sandboxing.
The main purpose of this is being a self extracting archive not running untrusted code.
> Vx32 is similar in purpose to the Java or .NET virtual machines, but it runs native x86 code, so plug-ins can be written in ANY language, not just Java or C#.
They both use x86 memory segment functionality for limiting memory access, but seems like there are also plenty of things they do differently. And the x86_64 and ARM versions of NaCl are even more different, they can't use the segment registers so they use masking instead.
However, vx32 itself is very much not production ready. There are issues with instruction decoding, floating point, and interrupt handling. (it uses itimer as a schedululer tick for preemption).
I think playing with vx32 is a great experience, taught me way more than all my systems programming classes at uni.
Vx32 was a predecessor to NaCL, and shared the same problems. Nowadays WASI seems to have taken this niche.