Andrei Homescu
Andrei Homescu
The MPROTECT mitigation in PaX kernels prevents us from re-mapping executable pages as writable and vice versa. This means that, for now, selfrando is not compatible with MPROTECT and the...
There are 2 different COMDAT implementations for ELF: group sections and `.gnu.linkonce` sections. The former are the newer and better version, so group sections are now used almost everywhere, but...
We currently use the `read`/`write` syscall pair to implement file copying in TrapLinker. For higher throughput (as well as avoiding copying file contents in and out of user space), we...
In commit https://github.com/immunant/selfrando/commit/7e550c6f651a748adbac215988cfeff95fc2202b, I added a list of "arch relocs" (basically, architecture-specific dynamic relocations), which we use to patch the GOT, `.got.plt` and whatever else gets dynamic relocations. To prevent...
Similarly to issue #36, linker scripts can also specify the linker output file via the `OUTPUT()` command.
TrapLinker currently takes the name of the program entry point from the value of the `-e` linker argument, but the entry point can also be set by a linker script...
The MSVC linker on Windows supports delay loading, where a DLL is only loaded when one of its exports is called for the first time, as opposed to program startup,...
On Windows, the SAFESEH security feature uses an exception handler table that the linker builds and stores in the binary. Before calling an exception handler from an exception record, the...
Before building a Windows program with selfrando, we need to add TRaP information to all MSVC libraries, which the `trap-msvc-libs.py` script does. We currently rely on the developer having done...
Normally, Windows calls the library/executable entry point (`DllMain`, `WinMain` or equivalent) at program startup. However, there is an additional set of entry point functions that may be called before that:...