Reverse engineering

Handling Memory in Protected Mode

Introduction In the past, systems such as MSDOS used the real mode, and it had no protections against accessing any memory address. Programs then were able t

Translating virtual to physical address on Windows: physical addresses

Getting the physical address manually So far we've figured that the virtual address is the same as linear address, so in the next part of the article we can

Translating Virtual to Physical Address on Windows: Segmentation

Introduction In this tutorial, we'll go over the process of translating a virtual address to physical address the way a processor does it. To begin, let's p

Anti-memory dumping techniques

The term "Memory Dumping" in reverse-engineering is essentially a process of taking a snapshot of the executable. Taking a snapshot means capturing the st

Logging Keystrokes with MSDOS: Part 1

Introduction In the previous article, we saw how we can compile the source code to a 16-bit binary executable, create an iso image with the executable stored

The IA-32 Real Mode and Interrupts

Introduction We all know that the IA-32 processors have two modes of operation: real mode and protected mode. But why would we want to talk about real mode?

MSDOS and the Interrupt Vector Table (IVT)

Introduction Upon booting up MSDOS, we can observe the memory using the "mem /d /p" command, which will show us exactly which part of memory is used by th

Memory Models

Memory We know about user mode and kernel mode, and how programs in user-mode can only use the memory from 0x00000000 to 0x7FFFFFFF, while the system uses th

Introduction to Kernel Debugging

Introduction Before trying to debug the kernel, we must first understand a few things. We must know what the Rings in computer security are. Let's take a lo

Reverse Engineering If Statements

Introduction Summary: In this article, we'll present a simple program that uses 'if' statements and then we'll try to reverse engineer the compiled version o