Let’s Go into the rabbit hole (part 1) — the challenges of dynamically hooking Golang programs
(blog.quarkslab.com)
from tedu to programming on 04 Oct 2023 20:29
https://azorius.net/g/programming/p/8mCR4kLy1Ldf7271rY-Lets-Go-into-the-rabbit-hole-part-1--the-challen
from tedu to programming on 04 Oct 2023 20:29
https://azorius.net/g/programming/p/8mCR4kLy1Ldf7271rY-Lets-Go-into-the-rabbit-hole-part-1--the-challen
Hooking, also known as a “detour”, is a mechanism for unconditionally redirecting the execution flow of a program. There is a lot of literature on the Internet on how this can be done for different programming languages such as C, C++. However, hooking Go code at runtime is not a straightforward process. It gets even more interesting when one tries to hook Go code with Go code which leads to a deep rabbit hole. In the end, it should be more natural to manipulate Golang data structures with Golang, right? In this series of blog posts, we’ll present a rather interesting strategy that we’ve developed at Quarkslab to achieve that. Before going into the rabbit hole, let’s first discuss why we got interested in implementing detours for Go programs and why it is more complicated than for other programs written in C or C++.
threaded - newest