skip to content
Back to Home

Next reads

View all →

5 Sept

Relocations: How PIE Binaries Fix Their Addresses

A PIE binary can't write final addresses because ASLR moves it. The linker leaves placeholders and the loader patches them after mapping. That's a relocation: R_X86_64_RELATIVE, GLOB_DAT and JUMP_SLOT.

4 Sept

Symbol Tables: What Function Names Actually Are

Function names in a binary are just entries in a table. Two tables actually: .symtab and .dynsym. Here's what each is for, how the struct works, and how to resolve a name from an address.

3 Sept

Building a Custom ELF Loader from Scratch, in C

You type ./program and the kernel loads it. Here's how that works: we build a userspace ELF loader in ~300 lines of C that maps PT_LOAD segments, builds a stack by hand, and jumps to the entry point.

Get posts by email

One email when I publish, not a drip, not weekly. Sign up and I'll only write when there's something new.

You won't get mail just for signing up. Unsubscribe any time.