Results 37 issues of 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...

enhancement
linux

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...

enhancement
linux

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...

enhancement
linux

Similarly to issue #36, linker scripts can also specify the linker output file via the `OUTPUT()` command.

linux

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...

linux

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,...

bug
windows

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...

bug
windows

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...

bug
enhancement
windows

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:...

bug
windows