- April 2020
Making our own executable packer: Part 13
Welcome back and thanks for joining us for the reads notes… the thirteenth installment of our series on ELF files, what they are, what they can do, what does the dynamic...
A no_std Rust binary
Making our own executable packer: Part 12
In Part 11, we spent some time clarifying mechanisms we had previously glossed over: how variables and functions from other ELF objects were accessed at runtime.
We saw that doing...
More ELF relocations
Making our own executable packer: Part 11
In our last installment of “Making our own executable packer”, we did some code cleanups. We got rid of a bunch of
unsafecode, and found a way to represent...
- March 2020
Safer memory-mapped structures
Making our own executable packer: Part 10
Welcome back to the “Making our own executable packer” series, where digressions are our bread and butter.
Last time, we implemented indirect functions in a no-libc C...
- February 2020
I want off Mr. Golang's Wild Ride
My honeymoon with the Go language is extremely over.
This article is going to have a different tone from what I've been posting the past year - it's a proper rant. And I always...
GDB scripting and Indirect functions
Making our own executable packer: Part 9
In the last article, we cleaned up our dynamic linker a little. We even implemented the
But it's still pretty far away from running real-world applications....
Working with strings in Rust
There's a question that always comes up when people pick up the Rust programming language: why are there two string types? Why is there
Dynamic linker speed and correctness
Making our own executable packer: Part 8
In the last article, we managed to load a program (
hello-dl) that uses a single dynamic library (
libmsg.so) containing a single exported symbol,