Crumbs of Cybersecurity

Hooking on Linux

Hooking Shared Libraries Sometimes, it's useful to hook calls to shared libraries. On Linux, you can do this by using the LD_PRELOAD environment variable. Let's look at an example to understand this better. Here is a toy C code: #include <stdlib.h> #include

Linux Debuggers

Debuggers A debugger or debugging tool is a computer program that is used to test and debug other programs (the target program). Source: Wikipedia The typical functionalities of a debugger include: * a query processor; * a symbol resolver; * an expression interpreter; * single-stepping an executable, either at the source-code level for source-level

Reverse Engineering Interpreted Languages

Interpreted Languages In computer science, an interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program. Source: Wikipedia The following languages are interpreted: Java, Python, Ruby, Perl, PHP, Postscript, etc. Reverse

Reverse Engineering Native Languages

C Programming Language The C programming language is the oldest system programming language that is still widely used today. Native code decompilers usually produce C code as a result. There are no complex language-specific artifacts. Executables are usually dynamically linked with the libc and they are rather small. C++ Programming

Life of an Executable

Process Loading under Linux The Linux operating system uses the execve system call or one of its variants to load a process. First, the kernel allocates internal structures. Then, it parses the given ELF file. If the ELF file has a specified interpreter field, it is executed. For executables that

Crumbs of Cybersecurity © 2026