Emulated Fuzzing with AFL++ and QEMU
AFL++ is an advanced fork of AFL (American Fuzzy Lop) that incorporates numerous improvements, including: Better performance optimizations Support for QEMU, Unicorn, and FRIDA modes (for bina...
AFL++ is an advanced fork of AFL (American Fuzzy Lop) that incorporates numerous improvements, including: Better performance optimizations Support for QEMU, Unicorn, and FRIDA modes (for bina...
The Android Native Development Kit (NDK) is a toolset that allows you to implement parts of your Android app using native-code languages like C and C++. You can download the NDK from the official ...
In the world of binary exploitation, gadgets are crucial building blocks for bypassing modern security defenses. Whether you’re attacking vulnerable software in a CTF or conducting real-world vulne...
In this step-by-step tutorial, we’ll walk through the entire process of building a Linux kernel, creating a minimal filesystem using Busybox, running it on QEMU, and debugging the kernel. Finally, ...
Introduction Linux Kernel Programming is the art and science of writing code that directly interacts with the core of the Linux operating system — the kernel. In this blog, we’ll explore the fund...
In the world of modern operating systems, especially Unix and Linux, the binary file format is fundamental to how programs are executed, how libraries are shared, and how debugging and performance ...
If you’re diving into ARM development or reverse engineering but don’t have physical ARM hardware like a Raspberry Pi, QEMU is your best friend. In this post, I’ll walk you through setting up a com...
Shared Memory is one of the fastest IPC (Inter-Process Communication) mechanisms on UNIX-like systems, allowing multiple processes to access the same memory region. Unlike pipes or message queues,...
Semaphores are synchronization primitives used to control access to shared resources. We already know they are used to prevent race conditions. System V vs POSIX Semaphores System V (semget, s...
Message queues allow processes to exchange data in the form of messages. Unlike pipes, they support multiple readers/writers and preserve message boundaries. They allow processes to send and receiv...