Masterpiece - Making a Custom Operating Environment for our Processes (Part Three)

How the project shaped process environment, hooks, and operating context once the filesystem layer existed.

vxlogo

Now that we have a (somewhat) reasonable way to create a set of files, we have several other considerations before a process can use it effectively:

Enter Paradox

Paradox, or pdx for short, is a collection of libraries that hook syscalls for various operating systems to establish a programmable context for a process and any of its subprocesses, it’s the heart of our isolation layer and controls a lot of what makes all of this work.

It starts with a bootstrap layer that establishes what components to load with what options, and then loads libraries that do everything from filesystem redirection, registry emulation, and environment emulation. Network emulation is a planned addition.

The gory details of each plugin require their own section and writeup. As a result, I’d say to read the component README files if you want more information about a particular feature:

https://github.com/batteryshark/pdx

Paradox currently supports Windows and Linux with OSX planned. In reality, sandboxing at the process level is a common practice for apps such as web browsers (https://chromium.googlesource.com/chromium/src.git/+/57.0.2987.21/sandbox/win/tools/finder/finder_kernel.cc) and other non-OS software components that require this kind of isolation without a driver.

Additional Considerations

October 2021