- April 2020
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,
Dynamic symbol resolution
Making our own executable packer: Part 7
Let's pick up where we left off: we had just taught
elkto load not only an executable, but also its dependencies, and then their dependencies as well.
We discovered that
- January 2020
A half-hour to learn Rust
In order to increase fluency in a programming language, one has to read a lot of it. But how can you read a lot of it if you don't know what it means?
In this article, instead of...