Reverse Engineering

Game Hacking Fundamentals

Where the legal line is, and the single concept that underpins all memory-based game hacking.

Difficulty Easy
Total points1995
Your progress0/0
Log in or create a free account to submit flags and earn points.
1

The Legal and Ethical Line

Read this first

Game hacking is a fantastic way to learn memory, assembly and reverse engineering — but only within limits. Only ever modify games you own, offline, on your own machine. Cheating in online multiplayer harms other players, usually breaks the terms of service, and can be illegal. Tampering with software you do not own, or distributing cheats, crosses into criminal territory in many places.

The legal and ethical line
The legal and ethical line

Everything in this path is aimed at understanding — the very same skills that defenders and anti-cheat engineers are paid for.

The flag: ASEC{only_hack_what_you_own}

Is it acceptable to use these techniques to cheat in online multiplayer? (yes/no)

+10 pts
$

Need a hint? It harms other players.

What is the flag for this task?

+10 pts
$

Need a hint? Read the last line.
2

How a Game Stores State

It is just numbers in RAM

While a game runs, its state — health, ammo, position, score — lives as values at addresses in the process memory.

How a game stores a value in memory
How a game stores a value in memory

If you can find the address of your health and write a new value there, the game will happily read it back. That single idea is the foundation of memory-based game hacking, and it is exactly what tools like Cheat Engine make easy.

Where does a running game keep values like health and ammo?

+10 pts
$

Need a hint? Also called RAM.
3

What Game Hacking Actually Teaches You

What Game Hacking Actually Teaches You

Poking at a game you own is really a friendly playground for reverse engineering — the skill of understanding software from the outside. You practise reading memory, following pointers, and interpreting assembly, all with instant visual feedback (your health bar) telling you whether you got it right.

Those are exactly the skills malware analysts, exploit developers, and anti-cheat engineers use professionally.

What Game Hacking Actually Teaches You
What Game Hacking Actually Teaches You
Tip Game hacking is really hands-on practice for reverse ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{learning_by_playing}

Game hacking is really hands-on practice for reverse ___? (one word)

+10 pts
$

Need a hint? Understanding software without the source.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
4

Single-Player vs Multiplayer: The Big Divide

Single-Player vs Multiplayer: The Big Divide

The single most important distinction in this whole field: single-player/offline games only affect you, while online multiplayer games are shared with other people.

Modifying an offline game you own is a private experiment. Cheating online steals fun from real opponents, violates the rules you agreed to, and can be illegal. This path is strictly about the offline, own-it kind.

Single-Player vs Multiplayer: The Big Divide
Single-Player vs Multiplayer: The Big Divide
Tip Which kind of game is off-limits to hack — single-player or multiplayer? (one word) Answer: think it through, then submit below.

Flag: ASEC{offline_only}

Which kind of game is off-limits to hack — single-player or multiplayer? (one word)

+10 pts
$

Need a hint? The one with other real people.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
5

Client vs Server Authority

Client vs Server Authority

In a well-built online game, your computer (the client) only *displays* the game; the server decides what is actually true. If you edit your local memory to say you have 999 gold, the server checks its own records and rejects the lie.

This is why memory edits do not work on good online games — and why understanding the client/server split matters.

Client vs Server Authority
Client vs Server Authority
Tip In a well-designed online game, who is the real authority over game state — the client or the ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{trust_the_server}

In a well-designed online game, who is the real authority over game state — the client or the ___? (one word)

+10 pts
$

Need a hint? It runs remotely and checks everything.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
6

Why Offline Games Are Fair Game

Why Offline Games Are Fair Game

When a game runs entirely on your own machine with no shared server, *you* are the only one affected by changes. Modifying software you own, for your own use, on your own hardware, is generally allowed and is a recognised way to learn.

The safe rule of thumb: you own it, it is offline, and you keep the results to yourself.

Why Offline Games Are Fair Game
Why Offline Games Are Fair Game
Tip Modifying a single-player game you own, offline, is generally ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{your_game_your_rules}

Modifying a single-player game you own, offline, is generally ___? (one word)

+10 pts
$

Need a hint? The opposite of forbidden.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
7

Anti-Cheat Exists for a Reason

Anti-Cheat Exists for a Reason

Because some people do cheat online, games ship anti-cheat software that detects and blocks tampering. Far from being your enemy, anti-cheat is a fascinating security system — a real-world example of defenders spotting exactly the techniques you are learning.

Studying how it works (on your own systems) is legitimate and valuable.

Anti-Cheat Exists for a Reason
Anti-Cheat Exists for a Reason
Tip Software that detects and blocks cheating in games is called ___? (one word, hyphen ok) Answer: think it through, then submit below.

Flag: ASEC{someone_is_watching}

Software that detects and blocks cheating in games is called ___? (one word, hyphen ok)

+10 pts
$

Need a hint? It works "against" cheats.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
8

The Defender's Perspective

The Defender's Perspective

Here is the neat truth: the person building cheats and the person building anti-cheat use the *same* skills — memory analysis, reverse engineering, and code injection. One side hides, the other seeks.

Learning offense makes you a far better defender, which is why these skills are prized on security teams.

The Defender's Perspective
The Defender's Perspective
Tip Cheaters and anti-cheat engineers rely on the same underlying ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{poacher_and_gamekeeper}

Cheaters and anti-cheat engineers rely on the same underlying ___? (one word)

+10 pts
$

Need a hint? What you are building right now.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
9

Setting Up a Safe Practice Target

Setting Up a Safe Practice Target

The ideal practice target is a simple, single-player game you own and run offline — or a purpose-built practice app. That way every experiment is fully legal and nobody else is affected.

Many people use a basic offline game, a trainer-practice tool, or Cheat Engine's own tutorial, which is designed exactly for this.

Setting Up a Safe Practice Target
Setting Up a Safe Practice Target
Tip The safest thing to practise these techniques on is a game you ___ and run offline? (one word) Answer: think it through, then submit below.

Flag: ASEC{practice_safely}

The safest thing to practise these techniques on is a game you ___ and run offline? (one word)

+10 pts
$

Need a hint? It must belong to you.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
10

Your Toolkit Overview

Your Toolkit Overview

You will meet several tools, but the classic starting point is Cheat Engine — a free, friendly memory scanner and editor built for exactly this learning. Later you add debuggers (x64dbg) and disassemblers (Ghidra).

Do not worry about mastering them all now; this room builds the concepts first, tools second.

Your Toolkit Overview
Your Toolkit Overview
Tip The classic free beginner tool for scanning and editing game memory is Cheat ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{tools_of_the_trade}

The classic free beginner tool for scanning and editing game memory is Cheat ___? (one word)

+10 pts
$

Need a hint? It "drives" your memory edits.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
11

What Is RAM?

What Is RAM?

RAM (Random Access Memory) is your computer's fast, temporary working memory. While a program runs, all its live data sits in RAM, where it can be read and written in an instant.

It is fast but forgetful: switch the power off and it is wiped. Game state lives here, which is why it can be found and changed while the game runs.

What Is RAM?
What Is RAM?
Tip A game's live values sit in fast, temporary working memory called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{fast_and_forgetful}

A game's live values sit in fast, temporary working memory called ___? (one word)

+10 pts
$

Need a hint? Random Access Memory.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
12

Bits and Bytes

Bits and Bytes

At the lowest level everything is bits — 0s and 1s. Eight bits grouped together make one byte, the basic unit memory tools count in.

A single byte holds a value from 0 to 255. Bigger numbers simply use several bytes together. Knowing this makes data types (coming next) click into place.

Bits and Bytes
Bits and Bytes
Tip How many bits make up one byte? Answer: think it through, then submit below.

Flag: ASEC{eight_bits_a_byte}

How many bits make up one byte?

+10 pts
$

Need a hint? It is a power of two, between 4 and 16.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
13

What Is a Memory Address?

What Is a Memory Address?

Memory is one giant row of byte-sized boxes, and every box has a number — its address. When we say "your health is at 0x1A2B3C," that number is the address where the value lives.

Find the right address and you can read or change what is stored there. Addresses are the map of memory.

What Is a Memory Address?
What Is a Memory Address?
Tip The numbered location where a value is stored in memory is called its ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{every_value_has_a_home}

The numbered location where a value is stored in memory is called its ___? (one word)

+10 pts
$

Need a hint? Like a house number for a value.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
14

Hexadecimal: Why Addresses Look Weird

Hexadecimal: Why Addresses Look Weird

Addresses are written in hexadecimal (base-16), using digits 0-9 then A-F for 10-15. Hex is used because two hex digits map neatly to one byte, making memory compact to read.

So 0x1A2B is a perfectly normal number, just written in base-16 instead of the base-10 you are used to.

Hexadecimal: Why Addresses Look Weird
Hexadecimal: Why Addresses Look Weird
Tip Memory addresses are usually written in base-16, which is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{base_sixteen}

Memory addresses are usually written in base-16, which is called ___? (one word)

+10 pts
$

Need a hint? Often shortened to "hex".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
15

Reading a Hex Address

Reading a Hex Address

When you see something like 0x7FF6C21A, the 0x is just a marker meaning "this is a hex number." Everything after it is the value.

You do not need to convert hex in your head — the tools do it. You only need to recognise the 0x prefix and know it is base-16.

Reading a Hex Address
Reading a Hex Address
Tip Which two-character prefix marks a number as hexadecimal? Answer: think it through, then submit below.

Flag: ASEC{0x_means_hex}

Which two-character prefix marks a number as hexadecimal?

+10 pts
$

Need a hint? Zero then a letter.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
16

Data Types: Integer

Data Types: Integer

An integer is a whole number (no decimals): 100 health, 30 ammo, 5 lives. Integers are the most common thing you will scan for, since so many game values are whole numbers.

When you tell a scanner "I am looking for 100," you usually mean a 4-byte integer holding 100.

Data Types: Integer
Data Types: Integer
Tip A whole number (no decimals) stored in memory is called an ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{whole_numbers}

A whole number (no decimals) stored in memory is called an ___? (one word)

+10 pts
$

Need a hint? Like 100 or 30 — no decimal point.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
17

Data Types: Float and Double

Data Types: Float and Double

Values with decimals — position, speed, sometimes health — are stored as floats (4 bytes) or doubles (8 bytes, more precise).

This matters hugely when scanning: if a value is a float and you search for an integer, you will find nothing. Many "why can't I find it?" moments are secretly floats.

Data Types: Float and Double
Data Types: Float and Double
Tip Numbers with decimal points (like speed or position) are usually stored as a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{decimals_need_floats}

Numbers with decimal points (like speed or position) are usually stored as a ___? (one word)

+10 pts
$

Need a hint? The other common size is a "double".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
18

Data Types: Bytes and Strings

Data Types: Bytes and Strings

A single byte holds a small value (0-255) — handy for things like a level number. Text, such as a player name, is stored as a string: a run of bytes, one per character.

To find a name in memory you scan for a string; to find a small counter you might scan for a byte.

Data Types: Bytes and Strings
Data Types: Bytes and Strings
Tip Text like a player name is stored in memory as a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{text_is_a_string}

Text like a player name is stored in memory as a ___? (one word)

+10 pts
$

Need a hint? A sequence of characters.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
19

How Big Is Each Type?

How Big Is Each Type?

Size matters because the scanner reads exactly that many bytes at an address. Typical sizes: a byte is 1, a standard integer and a float are 4 bytes each, and a double is 8.

Picking the matching size is part of scanning correctly — the right value at the wrong size looks like garbage.

How Big Is Each Type?
How Big Is Each Type?
Tip How many bytes does a typical (32-bit) integer or float take? Answer: think it through, then submit below.

Flag: ASEC{size_matters}

How many bytes does a typical (32-bit) integer or float take?

+10 pts
$

Need a hint? Between 2 and 8.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
20

Signed vs Unsigned

Signed vs Unsigned

A signed number can be negative or positive; an unsigned one is only zero or positive. Health that can drop below zero is signed; a count that never goes negative might be unsigned.

If a value behaves oddly at the boundaries (like wrapping from 0 to a huge number), signedness is often the reason.

Signed vs Unsigned
Signed vs Unsigned
Tip A value that can hold negative numbers is described as ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{plus_or_minus}

A value that can hold negative numbers is described as ___? (one word)

+10 pts
$

Need a hint? It has a plus/minus sign.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
21

Endianness (Byte Order)

Endianness (Byte Order)

When a number spans several bytes, they can be stored in two orders. Little-endian (used by x86 PCs) stores the least-significant byte first, so 0x1A2B appears in memory as 2B 1A.

You rarely fight this directly, but it explains why raw bytes in a hex editor can look "backwards."

Endianness (Byte Order)
Endianness (Byte Order)
Tip Storing the least-significant byte first (as x86 PCs do) is called ___-endian? (one word) Answer: think it through, then submit below.

Flag: ASEC{little_end_first}

Storing the least-significant byte first (as x86 PCs do) is called ___-endian? (one word)

+10 pts
$

Need a hint? The opposite is "big".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
22

The Stack

The Stack

The stack is a tidy region of memory for a function's local variables and its call bookkeeping. It grows and shrinks as functions are called and return, like a stack of plates.

Short-lived values often live here. Understanding the stack becomes essential once you read assembly and debug functions.

The Stack
The Stack
Tip The memory region holding local variables and function-call bookkeeping is the ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{stack_em_up}

The memory region holding local variables and function-call bookkeeping is the ___? (one word)

+10 pts
$

Need a hint? Like a stack of plates.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
23

The Heap

The Heap

The heap is the big, flexible region where a program requests memory on the fly — for objects that stick around, like the player, enemies, or the inventory.

Most interesting game values live in heap-allocated objects, which is exactly why their addresses move around and why you will need pointers to reach them reliably.

The Heap
The Heap
Tip Dynamically allocated, longer-lived memory (where most game objects live) is the ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{a_big_heap}

Dynamically allocated, longer-lived memory (where most game objects live) is the ___? (one word)

+10 pts
$

Need a hint? A big, loose pile of memory.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
24

Pointers: Addresses That Hold Addresses

Pointers: Addresses That Hold Addresses

A pointer is a value that stores *another* address. Instead of holding your health, it holds "the health is over there."

Pointers are how programs link objects together, and — crucially for you — they are the key to finding values that move each run. Master pointers and you master reliable game hacking.

Pointers: Addresses That Hold Addresses
Pointers: Addresses That Hold Addresses
Tip A variable that stores the memory address of another value is called a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{it_points}

A variable that stores the memory address of another value is called a ___? (one word)

+10 pts
$

Need a hint? It "points" somewhere else.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
25

Virtual Memory Per Process

Virtual Memory Per Process

Each running program gets its own private, virtual address space. Two programs can both use "address 0x400000" without clashing, because the OS maps each one's virtual addresses to different real memory.

This is why you attach a tool to *one specific process* — you are exploring that program's private world.

Virtual Memory Per Process
Virtual Memory Per Process
Tip Each process gets its own private ___ address space, isolated from other programs? (one word) Answer: think it through, then submit below.

Flag: ASEC{your_own_space}

Each process gets its own private ___ address space, isolated from other programs? (one word)

+10 pts
$

Need a hint? Not the physical chip layout.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
26

The Core Loop: Scan, Change, Rescan

The Core Loop: Scan, Change, Rescan

All memory scanning is one loop. Scan for a value, change it in the game (take damage, spend money), then do a next scan filtered by how it changed. Repeat until one address remains.

This "scan → change → rescan" rhythm is the heartbeat of every memory hack.

The Core Loop: Scan, Change, Rescan
The Core Loop: Scan, Change, Rescan
Tip After you change a value in-game, the second scan that filters the results is called a ___ scan? (one word) Answer: think it through, then submit below.

Flag: ASEC{scan_and_rescan}

After you change a value in-game, the second scan that filters the results is called a ___ scan? (one word)

+10 pts
$

Need a hint? It comes after the first.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
27

Exact Value Scan

Exact Value Scan

If you can *see* the number — health is exactly 100 — start with an exact value scan for 100. This is the simplest, fastest way to begin and usually leaves a manageable list of candidates.

Most first hacks begin here: read the number off the screen, scan for it exactly.

Exact Value Scan
Exact Value Scan
Tip When you know the number exactly (e.g. 100 health), you begin with an ___ value scan? (one word) Answer: think it through, then submit below.

Flag: ASEC{i_know_the_number}

When you know the number exactly (e.g. 100 health), you begin with an ___ value scan? (one word)

+10 pts
$

Need a hint? You know the precise number.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
28

Unknown Initial Value Scan

Unknown Initial Value Scan

Sometimes you cannot see the number — a hidden stamina bar, say. Then you start with an unknown initial value scan, which grabs everything, and narrow it down by how the value changes (increased, decreased).

It takes more rounds, but it finds values you can only observe indirectly.

Unknown Initial Value Scan
Unknown Initial Value Scan
Tip When you can't see the exact number, you start with an ___ initial value scan? (one word) Answer: think it through, then submit below.

Flag: ASEC{start_from_nothing}

When you can't see the exact number, you start with an ___ initial value scan? (one word)

+10 pts
$

Need a hint? You do not know it yet.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
29

Increased / Decreased Scans

Increased / Decreased Scans

Between scans you compare to the previous result. Took damage? Your health value has decreased, so scan for "decreased value." Picked up ammo? Scan for "increased."

Each comparison throws away addresses that did not move the right way, rapidly shrinking the list.

Increased / Decreased Scans
Increased / Decreased Scans
Tip After taking damage, your health value has ___, so you scan for that change? (one word) Answer: think it through, then submit below.

Flag: ASEC{it_went_down}

After taking damage, your health value has ___, so you scan for that change? (one word)

+10 pts
$

Need a hint? It went down.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
30

Changed / Unchanged Scans

Changed / Unchanged Scans

You can also filter by whether a value moved at all. Standing still and want to drop everything that flickered? Scan for unchanged. Want only things that just moved? Scan for changed.

These are perfect when you cannot predict the exact direction, only that it did or did not change.

Changed / Unchanged Scans
Changed / Unchanged Scans
Tip To keep only values that stayed the same between scans, you search for ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{narrow_it_down}

To keep only values that stayed the same between scans, you search for ___? (one word)

+10 pts
$

Need a hint? It did not move.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
31

Narrowing Thousands to One

Narrowing Thousands to One

A first scan might return thousands of addresses. Each rescan filters them, and after a handful of rounds you are usually down to a single correct address — the one that truly holds your value.

Patience over a few rounds beats guessing every time.

Narrowing Thousands to One
Narrowing Thousands to One
Tip Repeated rescans shrink thousands of candidates down to the ___ correct address? (one word) Answer: think it through, then submit below.

Flag: ASEC{needle_in_haystack}

Repeated rescans shrink thousands of candidates down to the ___ correct address? (one word)

+10 pts
$

Need a hint? The single right result.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
32

Choosing the Right Data Type to Scan

Choosing the Right Data Type to Scan

Before scanning, tell the tool the type you expect — integer, float, byte. Scan for the wrong type and even the right value is invisible, because the bytes are interpreted differently.

When a value stubbornly refuses to appear, the first thing to check is whether you picked the right data type.

Choosing the Right Data Type to Scan
Choosing the Right Data Type to Scan
Tip If a value won't appear in a scan, the first thing to double-check is the data ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{pick_the_type}

If a value won't appear in a scan, the first thing to double-check is the data ___? (one word)

+10 pts
$

Need a hint? Integer vs float vs byte.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
33

Floats: The Scanning Gotcha

Floats: The Scanning Gotcha

The single most common beginner trap: values like speed, position, and sometimes health are stored as floats, not integers. Scan for an integer and you get nothing.

If an obviously present value refuses to show up, switch the scan type to float (or double) and try again.

Floats: The Scanning Gotcha
Floats: The Scanning Gotcha
Tip A value like speed that won't appear as an integer is often stored as a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{sneaky_floats}

A value like speed that won't appear as an integer is often stored as a ___? (one word)

+10 pts
$

Need a hint? It has decimals.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
34

When a Value Won't Scan

When a Value Won't Scan

Sometimes the number on screen is not the number in memory. A health bar might display 100 while storing the real value as 1.0 (a float 0-to-1) or as a max/current pair.

When scanning the displayed number fails, suspect that the display and the stored value differ, and scan by how it *changes* instead.

When a Value Won't Scan
When a Value Won't Scan
Tip The number shown on screen can differ from the ___ value actually stored in memory? (one word) Answer: think it through, then submit below.

Flag: ASEC{display_vs_reality}

The number shown on screen can differ from the ___ value actually stored in memory? (one word)

+10 pts
$

Need a hint? The true underlying number.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
35

Freezing a Value

Freezing a Value

Once you find an address, tools let you freeze it — repeatedly writing the same value so the game can never change it. Freeze health at 100 and you effectively have god mode (offline!).

Freezing is often more useful than a one-off edit, because the game constantly tries to overwrite the value.

Freezing a Value
Freezing a Value
Tip Locking a value so the game cannot change it is called ___ the value? (one word) Answer: think it through, then submit below.

Flag: ASEC{frozen_in_time}

Locking a value so the game cannot change it is called ___ the value? (one word)

+10 pts
$

Need a hint? Like ice — it cannot move.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
36

Editing a Found Value

Editing a Found Value

The payoff: once you have the right address, you write a new value to it, and the game reads your number back as if it were its own.

Write 999 to the ammo address and you have 999 ammo. It really is that direct — the hard part was finding the address, not changing it.

Editing a Found Value
Editing a Found Value
Tip Once you have the right address, you ___ a new number to it to change the game value? (one word) Answer: think it through, then submit below.

Flag: ASEC{just_write_it}

Once you have the right address, you ___ a new number to it to change the game value? (one word)

+10 pts
$

Need a hint? The opposite of read.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
37

Health, Ammo, Money: Easy First Targets

Health, Ammo, Money: Easy First Targets

The friendliest values to practise on are ones you can watch change on screen: health, ammo, money, score. You see the number, scan for it exactly, do something to change it, and rescan.

Start with health — it changes clearly when you take damage, giving you fast, obvious feedback.

Health, Ammo, Money: Easy First Targets
Health, Ammo, Money: Easy First Targets
Tip A great, clearly-visible first value to find and edit is your ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{first_blood}

A great, clearly-visible first value to find and edit is your ___? (one word)

+10 pts
$

Need a hint? It drops when you take damage.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
38

Multi-Level Values (Same Number, Many Places)

Multi-Level Values (Same Number, Many Places)

Sometimes the same number (say, 100) appears at many addresses at once — copies, caches, or unrelated values that happen to match.

That is fine: the rescan loop weeds out the copies that do not change with your health. The one that always tracks the game is the real one.

Multi-Level Values (Same Number, Many Places)
Multi-Level Values (Same Number, Many Places)
Tip The same value can appear at many different memory ___ at once? (one word) Answer: think it through, then submit below.

Flag: ASEC{copies_everywhere}

The same value can appear at many different memory ___ at once? (one word)

+10 pts
$

Need a hint? Each has its own location number.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
39

Verifying You Found the Right One

Verifying You Found the Right One

Before trusting an address, prove it: change the value and watch the game update on screen. If editing the address moves your health bar, you found the right one.

Always verify — an address that looks right but does nothing is a decoy that will waste your time.

Verifying You Found the Right One
Verifying You Found the Right One
Tip To confirm an address is correct, edit it and watch the ___ update on screen? (one word) Answer: think it through, then submit below.

Flag: ASEC{trust_but_verify}

To confirm an address is correct, edit it and watch the ___ update on screen? (one word)

+10 pts
$

Need a hint? The thing you are playing.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
40

Saving Your Findings

Saving Your Findings

Good hackers keep notes: the addresses (or better, pointer paths) they found, the data types, and what each value does. Tools let you add found addresses to a saved table.

Without notes you redo the same scan tomorrow. With them, you build a reusable map of the game.

Saving Your Findings
Saving Your Findings
Tip Recording the addresses and paths you discover is simply good ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{write_it_down}

Recording the addresses and paths you discover is simply good ___? (one word)

+10 pts
$

Need a hint? You write them down.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
41

Why Addresses Change Next Launch

Why Addresses Change Next Launch

Frustrating discovery: the address you found today is wrong tomorrow. Modern systems use ASLR (Address Space Layout Randomization) to load things at different places each run, for security.

So a raw address is a one-time find. To make a hack that survives restarts, you need pointers — the next few tasks.

Why Addresses Change Next Launch
Why Addresses Change Next Launch
Tip Addresses shift on each launch because of a security feature abbreviated ___? (four letters) Answer: think it through, then submit below.

Flag: ASEC{it_moved}

Addresses shift on each launch because of a security feature abbreviated ___? (four letters)

+10 pts
$

Need a hint? Address Space Layout Randomization.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
42

Dynamic vs Static Addresses

Dynamic vs Static Addresses

Most useful values sit at dynamic addresses that move each run. But some locations — inside the loaded module itself — stay put relative to the module's base; these are effectively static.

The trick to reliability is starting from a static point and following pointers to the moving value.

Dynamic vs Static Addresses
Dynamic vs Static Addresses
Tip An address that stays constant across launches (relative to its module) is described as ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{some_things_stay}

An address that stays constant across launches (relative to its module) is described as ___? (one word)

+10 pts
$

Need a hint? It does not move.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
43

Introducing Pointer Chains

Introducing Pointer Chains

A pointer chain is a path: start at a stable base, read the pointer there to get another address, add an offset, read again, and so on until you reach the value.

Because the chain begins somewhere stable and follows the game's own links, it lands on the right value every run — even though the value itself moved.

Introducing Pointer Chains
Introducing Pointer Chains
Tip A path of pointers that reliably leads to a moving value is called a pointer ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{follow_the_chain}

A path of pointers that reliably leads to a moving value is called a pointer ___? (one word)

+10 pts
$

Need a hint? A series of linked hops.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
44

What Is a Base Address?

What Is a Base Address?

Every good pointer chain starts from a base address — a reliable, static anchor, usually the game module's load address (like "game.exe"+something).

The base is the one part that does not randomize away, so it is the trustworthy starting line from which the chain is followed.

What Is a Base Address?
What Is a Base Address?
Tip The reliable, static starting point of a pointer chain is called the ___ address? (one word) Answer: think it through, then submit below.

Flag: ASEC{start_at_the_base}

The reliable, static starting point of a pointer chain is called the ___ address? (one word)

+10 pts
$

Need a hint? Where the chain begins.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
45

Offsets Along the Chain

Offsets Along the Chain

At each hop of a chain you add a small fixed number — an offset — before reading the next pointer. Offsets are the "+0x10, +0x8" steps that walk from one object to a field inside it.

Offsets stay constant even when addresses randomize, which is what makes the whole chain dependable.

Offsets Along the Chain
Offsets Along the Chain
Tip The small fixed numbers added at each step of a pointer chain are called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{mind_the_offset}

The small fixed numbers added at each step of a pointer chain are called ___? (one word)

+10 pts
$

Need a hint? Like "+0x10" between hops.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
46

Pointer Scanning

Pointer Scanning

Finding a chain by hand is hard, so tools include a pointer scan: give it the current address of your value, and it searches for base+offset paths that reach it.

Restart the game (the value moves), rescan to filter the paths, and you are left with chains that work every launch.

Pointer Scanning
Pointer Scanning
Tip The tool feature that automatically finds pointer chains to a value is a pointer ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{scan_the_pointers}

The tool feature that automatically finds pointer chains to a value is a pointer ___? (one word)

+10 pts
$

Need a hint? Like a memory scan, but for pointers.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
47

Testing a Pointer After Restart

Testing a Pointer After Restart

A pointer chain is only proven once it survives a restart. Close the game, reopen it, and check that following the chain still lands on your value.

If it works after a fresh launch (and ideally on another day), you have a reliable, reusable hack rather than a one-time lucky address.

Testing a Pointer After Restart
Testing a Pointer After Restart
Tip A good pointer chain still finds the value after you ___ the game? (one word) Answer: think it through, then submit below.

Flag: ASEC{survives_a_restart}

A good pointer chain still finds the value after you ___ the game? (one word)

+10 pts
$

Need a hint? Close and reopen it.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
48

Module + Offset Notation

Module + Offset Notation

Static bases are written as module + offset, like "game.exe"+0x1234. This means "the game.exe module's load address, plus 0x1234."

Because the OS tells you where the module loaded, this notation resolves to a real address every run, giving your chain its stable anchor.

Module + Offset Notation
Module + Offset Notation
Tip Notation like "game.exe"+0x1234 combines a module with an ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{module_plus_offset}

Notation like "game.exe"+0x1234 combines a module with an ___? (one word)

+10 pts
$

Need a hint? The number added to the module base.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
49

Why Pointers Beat Raw Addresses

Why Pointers Beat Raw Addresses

A raw address is a snapshot that expires at the next launch. A pointer chain is a *recipe* that recomputes the address each time, giving you stable access no matter how memory is randomized.

This is the leap from "it worked once" to "it works reliably" — the mark of real skill.

Why Pointers Beat Raw Addresses
Why Pointers Beat Raw Addresses
Tip Compared to a raw address, a pointer chain gives you ___ access to a value every run? (one word) Answer: think it through, then submit below.

Flag: ASEC{stable_access}

Compared to a raw address, a pointer chain gives you ___ access to a value every run? (one word)

+10 pts
$

Need a hint? Reliable and repeatable.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
50

Multi-Level Pointer Chains

Multi-Level Pointer Chains

Simple values need one hop; deeply nested ones need several. A multi-level pointer chain follows pointer after pointer (base → object → sub-object → value).

More levels are harder to find but reach values buried deep in the game's object tree. Pointer scans handle the searching for you.

Multi-Level Pointer Chains
Multi-Level Pointer Chains
Tip A pointer chain with several hops from base to value is called a ___-level pointer? (one word) Answer: think it through, then submit below.

Flag: ASEC{hop_hop_hop}

A pointer chain with several hops from base to value is called a ___-level pointer? (one word)

+10 pts
$

Need a hint? The opposite of single.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
51

From Code to Machine Instructions

From Code to Machine Instructions

Games are written in languages like C++, then compiled down to assembly — the human-readable form of the raw machine instructions the CPU runs.

You do not get the original source, but you *can* read the assembly. It is lower-level and terse, yet learnable, and it is where you go once memory editing is not enough.

From Code to Machine Instructions
From Code to Machine Instructions
Tip The low-level, human-readable language that the CPU actually runs is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{closer_to_metal}

The low-level, human-readable language that the CPU actually runs is called ___? (one word)

+10 pts
$

Need a hint? Just above raw machine code.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
52

What the CPU Actually Does

What the CPU Actually Does

Underneath everything, the CPU does something simple at blinding speed: fetch one instruction, do it, move to the next. Add these, compare those, jump there.

A whole game is millions of these tiny steps per second. Reverse engineering is just slowing that down enough to read it.

What the CPU Actually Does
What the CPU Actually Does
Tip The CPU executes the program one ___ at a time? (one word) Answer: think it through, then submit below.

Flag: ASEC{one_step_at_a_time}

The CPU executes the program one ___ at a time? (one word)

+10 pts
$

Need a hint? A single machine step.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
53

Registers: The CPU's Scratchpad

Registers: The CPU's Scratchpad

The CPU has a small set of ultra-fast storage slots called registers. It uses them as a scratchpad to hold the values it is working on right now.

Assembly is mostly moving data between registers and memory and doing arithmetic on registers. Knowing they exist is enough to start reading code.

Registers: The CPU's Scratchpad
Registers: The CPU's Scratchpad
Tip The CPU's handful of tiny, ultra-fast internal storage slots are called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{cpu_scratchpad}

The CPU's handful of tiny, ultra-fast internal storage slots are called ___? (one word)

+10 pts
$

Need a hint? The CPU's scratchpad.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
54

Common x86 Registers

Common x86 Registers

On 32-bit x86 you will constantly see general-purpose registers named EAX, EBX, ECX, and EDX. (On 64-bit they become RAX, RBX, and friends.)

EAX in particular is a workhorse — often holding function results. You do not memorise them all; you just get comfortable seeing them in code.

Common x86 Registers
Common x86 Registers
Tip A very common general-purpose x86 register, often holding results, is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{meet_the_registers}

A very common general-purpose x86 register, often holding results, is ___? (three letters)

+10 pts
$

Need a hint? It starts with E and ends with AX.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
55

The Instruction Pointer

The Instruction Pointer

One special register, EIP (RIP on 64-bit), holds the address of the *next* instruction to run. The CPU follows it forward, step by step, and jumps change it.

Controlling where EIP goes is the essence of both game patching and exploitation — it decides what runs next.

The Instruction Pointer
The Instruction Pointer
Tip The register that holds the address of the next instruction is the instruction ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{whats_next}

The register that holds the address of the next instruction is the instruction ___? (one word)

+10 pts
$

Need a hint? EIP / RIP.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
56

MOV: Moving Data

MOV: Moving Data

The instruction you will see most is MOV — it copies data from one place to another (register to register, memory to register, and so on).

MOV eax, [health] means "copy the health value into eax." Despite the name it copies rather than relocates, but it is the fundamental data-shuffling instruction.

MOV: Moving Data
MOV: Moving Data
Tip The assembly instruction that copies data between locations is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{move_it}

The assembly instruction that copies data between locations is ___? (three letters)

+10 pts
$

Need a hint? Short for "move".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
57

ADD and SUB

ADD and SUB

Arithmetic shows up as ADD (addition) and SUB (subtraction). Taking 10 damage is literally something like SUB [health], 10 somewhere in the code.

Finding that one subtract instruction — and neutralising it — is a classic way to stop damage entirely. Simple math, big effect.

ADD and SUB
ADD and SUB
Tip The assembly instruction that adds two values is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{do_the_math}

The assembly instruction that adds two values is ___? (three letters)

+10 pts
$

Need a hint? The opposite of SUB.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
58

CMP: Comparing Values

CMP: Comparing Values

CMP compares two values (for example, "is health <= 0?") and sets internal flags with the result. A following jump instruction then decides what to do based on those flags.

CMP-then-jump is how all the game's decisions — alive or dead, enough ammo or not — are made.

CMP: Comparing Values
CMP: Comparing Values
Tip The assembly instruction that compares two values is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{compare_them}

The assembly instruction that compares two values is ___? (three letters)

+10 pts
$

Need a hint? Short for "compare".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
59

JMP and Conditional Jumps

JMP and Conditional Jumps

Programs are not straight lines; they branch. JMP jumps unconditionally to another instruction, while conditional jumps (JE, JNE, JLE...) jump only if the last comparison met a condition.

Changing a conditional jump — say, forcing "if dead" to never trigger — is a powerful, surgical way to alter behaviour.

JMP and Conditional Jumps
JMP and Conditional Jumps
Tip The unconditional "go to another instruction" assembly instruction is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{take_the_leap}

The unconditional "go to another instruction" assembly instruction is ___? (three letters)

+10 pts
$

Need a hint? Short for "jump".

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
60

Reading a Disassembly

Reading a Disassembly

Turning raw machine bytes back into readable assembly is called disassembly, and a disassembler does it for you. The result is a list of instructions you can read top to bottom.

You will not understand every line at first — and that is fine. You learn to spot the few lines that matter.

Reading a Disassembly
Reading a Disassembly
Tip Turning machine-code bytes back into readable assembly is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{read_the_asm}

Turning machine-code bytes back into readable assembly is called ___? (one word)

+10 pts
$

Need a hint? Un-assembling the code.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
61

Opcodes vs Mnemonics

Opcodes vs Mnemonics

Each instruction has a numeric opcode (the actual bytes the CPU reads) and a friendly mnemonic — the short name like MOV or JMP that humans use.

Disassemblers show you mnemonics; hex editors show the opcodes. Knowing both are the same instruction, just displayed differently, avoids a lot of confusion.

Opcodes vs Mnemonics
Opcodes vs Mnemonics
Tip The human-friendly short name for an instruction, like MOV or JMP, is called a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{easy_to_remember}

The human-friendly short name for an instruction, like MOV or JMP, is called a ___? (one word)

+10 pts
$

Need a hint? Easy for humans to remember.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
62

NOP: The Do-Nothing Instruction

NOP: The Do-Nothing Instruction

NOP (No Operation) is an instruction that does absolutely nothing but take up space and move to the next instruction.

That sounds useless, but it is a favourite tool: overwrite an unwanted instruction (like the one that subtracts your health) with NOPs, and that behaviour simply stops happening.

NOP: The Do-Nothing Instruction
NOP: The Do-Nothing Instruction
Tip The assembly instruction that does nothing at all is ___? (three letters) Answer: think it through, then submit below.

Flag: ASEC{do_nothing}

The assembly instruction that does nothing at all is ___? (three letters)

+10 pts
$

Need a hint? No Operation.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
63

Finding What Writes to an Address

Finding What Writes to an Address

Memory scanning finds *where* a value is; to find the *code* behind it, tools offer "find what writes to this address." Trigger the value to change and the debugger catches the exact instruction responsible.

This bridge from a found value to the code that changes it is a pivotal skill.

Finding What Writes to an Address
Finding What Writes to an Address
Tip To locate the code that changes a value, you ask the tool to find what ___ to its address? (one word) Answer: think it through, then submit below.

Flag: ASEC{who_touched_it}

To locate the code that changes a value, you ask the tool to find what ___ to its address? (one word)

+10 pts
$

Need a hint? The opposite of reads.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
64

The "Find Out What Accesses" Trick

The "Find Out What Accesses" Trick

A cousin feature, "find what *accesses* this address," catches every instruction that reads or writes your value — great for discovering the surrounding code and other useful pointers.

By watching who touches a value while you play, you map out the game's logic around it without ever seeing the source.

The "Find Out What Accesses" Trick
The "Find Out What Accesses" Trick
Tip "Find what accesses this address" reveals the ___ that reads or writes your value? (one word) Answer: think it through, then submit below.

Flag: ASEC{catch_it_in_the_act}

"Find what accesses this address" reveals the ___ that reads or writes your value? (one word)

+10 pts
$

Need a hint? The instructions involved.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
65

From Value to Code

From Value to Code

Put it together: memory scanning gives you the *value*, and the "what writes/accesses" features give you the code that manages it. That is the leap from editing numbers to editing behaviour.

Once you can walk from a value to the instructions that touch it, you can change *how the game works*, not just what a number currently is.

From Value to Code
From Value to Code
Tip Scanning finds the value; the debugger's access features find the ___ behind it? (one word) Answer: think it through, then submit below.

Flag: ASEC{value_to_code}

Scanning finds the value; the debugger's access features find the ___ behind it? (one word)

+10 pts
$

Need a hint? The instructions.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
66

Patching an Instruction

Patching an Instruction

Changing an instruction's bytes to alter behaviour is called patching. Replace, remove (NOP), or rewrite an instruction and the program does something different from here on.

Patching is more powerful than value editing: instead of setting health to 100 once, you can stop the code that ever reduces it.

Patching an Instruction
Patching an Instruction
Tip Changing an instruction's bytes to alter a program's behaviour is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{apply_a_patch}

Changing an instruction's bytes to alter a program's behaviour is called ___? (one word)

+10 pts
$

Need a hint? Like a patch on clothing.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
67

NOP-ing Out Damage

NOP-ing Out Damage

The textbook example: find the SUB [health], 10 that runs when you are hit, and overwrite it with NOP instructions. Damage code now does nothing, so your health never drops — effectively infinite health, offline.

One tiny patch, a dramatic result, and a perfect illustration of value-to-code thinking.

NOP-ing Out Damage
NOP-ing Out Damage
Tip Replacing the damage instruction with NOPs gives you effectively ___ health? (one word) Answer: think it through, then submit below.

Flag: ASEC{no_more_damage}

Replacing the damage instruction with NOPs gives you effectively ___ health? (one word)

+10 pts
$

Need a hint? It never runs out.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
68

Code Caves

Code Caves

Sometimes you need to add *more* code than fits in place. A code cave is a patch of unused, empty space in the program where you can write your own instructions.

You redirect execution into the cave, run your custom code, then jump back — a classic way to inject new behaviour without overwriting anything important.

Code Caves
Code Caves
Tip Unused empty space in a program where you inject your own instructions is a code ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{into_the_cave}

Unused empty space in a program where you inject your own instructions is a code ___? (one word)

+10 pts
$

Need a hint? An empty hollow.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
69

Detour / Hook Basics

Detour / Hook Basics

A hook (or detour) redirects execution: at some instruction you insert a jump into your own code, do something, then jump back.

Hooks let you observe or change what the game does at a precise moment — reading a value as it is calculated, or overriding a result — and they underpin most trainers and, on the flip side, anti-cheat.

Detour / Hook Basics
Detour / Hook Basics
Tip Redirecting a program's execution into your own code is called a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{hook_the_code}

Redirecting a program's execution into your own code is called a ___? (one word)

+10 pts
$

Need a hint? Like catching a fish.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
70

Assembly Injection

Assembly Injection

Writing brand-new assembly into a running game (via a cave and a hook) is code injection. You are literally adding instructions to a program while it runs.

This is how more advanced cheats and, importantly, many debugging and instrumentation tools work. Done to your own software, it is a superb way to learn how programs execute.

Assembly Injection
Assembly Injection
Tip Writing new assembly into a running program is called code ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{inject_the_code}

Writing new assembly into a running program is called code ___? (one word)

+10 pts
$

Need a hint? You inject it in.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
71

Cheat Engine Auto Assembler

Cheat Engine Auto Assembler

Cheat Engine bundles all of this into scripts written in its Auto Assembler, which can find a spot, allocate a code cave, install a hook, and cleanly undo it all.

These scripts (often shared as "[ENABLE]/[DISABLE]" blocks) are how the community packages reversible patches for offline games.

Cheat Engine Auto Assembler
Cheat Engine Auto Assembler
Tip Cheat Engine scripts that patch code use its ___ Assembler? (one word) Answer: think it through, then submit below.

Flag: ASEC{scripted_patches}

Cheat Engine scripts that patch code use its ___ Assembler? (one word)

+10 pts
$

Need a hint? It assembles automatically.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
72

AOB (Array of Bytes) Scanning

AOB (Array of Bytes) Scanning

Instead of a fragile fixed address, you can locate code by its unique byte pattern — an Array of Bytes (AOB) scan searches memory for that signature and finds the instruction wherever it moved to.

AOB scanning is how robust patches locate their target reliably, even at different addresses.

AOB (Array of Bytes) Scanning
AOB (Array of Bytes) Scanning
Tip Finding code by its unique byte pattern is called ___ scanning? (three letters) Answer: think it through, then submit below.

Flag: ASEC{find_by_pattern}

Finding code by its unique byte pattern is called ___ scanning? (three letters)

+10 pts
$

Need a hint? Array Of Bytes.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
73

Why AOB Beats Fixed Addresses

Why AOB Beats Fixed Addresses

A patch tied to a fixed address breaks the moment the game updates and the code shifts. An AOB signature, chosen from stable bytes around your target, keeps finding it across many versions.

That resilience is why serious patches identify code by pattern rather than by a brittle hard-coded address.

Why AOB Beats Fixed Addresses
Why AOB Beats Fixed Addresses
Tip AOB patterns keep working across game ___ that would break a fixed address? (one word) Answer: think it through, then submit below.

Flag: ASEC{survive_the_update}

AOB patterns keep working across game ___ that would break a fixed address? (one word)

+10 pts
$

Need a hint? New versions / patches.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
74

Making a Patch Reversible

Making a Patch Reversible

A good patch can be turned off again, restoring the original bytes. Cheat Engine's [ENABLE]/[DISABLE] scripts save the original instruction so you can toggle your change cleanly.

Reversibility keeps your experiments safe and tidy — you can always put the game back exactly as it was.

Making a Patch Reversible
Making a Patch Reversible
Tip A well-made patch can be toggled back ___ to restore the original code? (one word) Answer: think it through, then submit below.

Flag: ASEC{on_and_off}

A well-made patch can be toggled back ___ to restore the original code? (one word)

+10 pts
$

Need a hint? The opposite of on.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
75

Testing Patches Safely

Testing Patches Safely

Always test patches on a copy of a game you own, offline, ideally with saves backed up. Patches can crash a program, and you never want to risk important data or online accounts.

Experiment freely — but on your own copy, disconnected, where a crash costs nothing but a restart.

Testing Patches Safely
Testing Patches Safely
Tip You should only test code patches on a ___ of a game you own, offline? (one word) Answer: think it through, then submit below.

Flag: ASEC{test_on_a_copy}

You should only test code patches on a ___ of a game you own, offline? (one word)

+10 pts
$

Need a hint? Not the original important files.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
76

Cheat Engine: The Beginner's Swiss Army Knife

Cheat Engine: The Beginner's Swiss Army Knife

Cheat Engine is the classic all-in-one starter: memory scanner, value editor, pointer scanner, debugger, and Auto Assembler in one free package. Its built-in tutorial teaches every scanning skill step by step.

Almost everyone begins here, and it remains useful long after, precisely because it bundles so much into one friendly window.

Cheat Engine: The Beginner's Swiss Army Knife
Cheat Engine: The Beginner's Swiss Army Knife
Tip The go-to free, all-in-one beginner memory tool is Cheat ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{the_classic_tool}

The go-to free, all-in-one beginner memory tool is Cheat ___? (one word)

+10 pts
$

Need a hint? It "drives" your edits.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
77

Debuggers: x64dbg and Others

Debuggers: x64dbg and Others

A debugger lets you pause a running program, inspect registers and memory, set breakpoints, and step through instructions. On Windows, x64dbg is a popular free choice.

Debuggers are how you watch code execute in slow motion, which is essential once you move from editing values to understanding logic.

Debuggers: x64dbg and Others
Debuggers: x64dbg and Others
Tip A tool that pauses a program to let you inspect and step through it is a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{pause_and_inspect}

A tool that pauses a program to let you inspect and step through it is a ___? (one word)

+10 pts
$

Need a hint? It helps you find bugs.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
78

Disassemblers: IDA and Ghidra

Disassemblers: IDA and Ghidra

A disassembler takes a compiled program and shows its assembly, often with navigation, function detection, and graphs. Ghidra — free and released by the NSA — and IDA are the big names.

These are for deeper static analysis: understanding a whole program's structure, not just one value.

Disassemblers: IDA and Ghidra
Disassemblers: IDA and Ghidra
Tip The free reverse-engineering suite released by the NSA is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{free_from_the_nsa}

The free reverse-engineering suite released by the NSA is called ___? (one word)

+10 pts
$

Need a hint? Six letters, starts with G.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
79

Decompilers: From ASM to C-like

Decompilers: From ASM to C-like

Reading raw assembly is slow, so modern tools include a decompiler that reconstructs approximate C-like source from the assembly. Ghidra and IDA both do this.

It is not the original code and it is imperfect, but readable pseudo-C makes understanding a function far faster than instruction-by-instruction.

Decompilers: From ASM to C-like
Decompilers: From ASM to C-like
Tip A tool that turns assembly back into readable C-like code is a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{almost_source}

A tool that turns assembly back into readable C-like code is a ___? (one word)

+10 pts
$

Need a hint? The opposite of a compiler.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
80

Hex Editors

Hex Editors

A hex editor shows a file's raw bytes as hexadecimal and lets you edit them directly. It is how you patch a program *on disk* (rather than in memory) or inspect unknown file formats.

Every reverse engineer keeps one handy for peering at the raw bytes beneath the abstractions.

Hex Editors
Hex Editors
Tip A tool that views and edits a file's raw bytes is a ___ editor? (one word) Answer: think it through, then submit below.

Flag: ASEC{raw_bytes}

A tool that views and edits a file's raw bytes is a ___ editor? (one word)

+10 pts
$

Need a hint? It shows base-16.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
81

Process Monitors

Process Monitors

Process Monitor (and similar tools) records what a program does to files, the registry, and the network in real time.

When you want to know *what a program touches* — which config file it reads, where it saves — a process monitor shows you, which is invaluable for both game hacking and malware analysis.

Process Monitors
Process Monitors
Tip The Sysinternals tool that logs a program's file and registry activity is Process ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{watch_the_process}

The Sysinternals tool that logs a program's file and registry activity is Process ___? (one word)

+10 pts
$

Need a hint? It "monitors" the process.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
82

Breakpoints: Pausing Execution

Breakpoints: Pausing Execution

In a debugger, a breakpoint is a marker that pauses the program when execution reaches it (or when a chosen address is read/written).

Breakpoints are how you freeze the game at the exact moment something interesting happens, so you can inspect the state right then and there.

Breakpoints: Pausing Execution
Breakpoints: Pausing Execution
Tip A debugger marker that pauses the program at a chosen point is a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{stop_right_there}

A debugger marker that pauses the program at a chosen point is a ___? (one word)

+10 pts
$

Need a hint? It breaks execution.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
83

Stepping Through Code

Stepping Through Code

Once paused, you step — running one instruction at a time (step into, over, out). Watching registers and memory change with each step reveals exactly how a routine works.

Stepping turns an intimidating wall of assembly into a slow, understandable story you can follow line by line.

Stepping Through Code
Stepping Through Code
Tip Running a paused program one instruction at a time is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{one_line_at_a_time}

Running a paused program one instruction at a time is called ___? (one word)

+10 pts
$

Need a hint? Like taking small steps.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
84

Reading the Call Stack

Reading the Call Stack

When paused, the call stack shows the chain of functions that led to the current spot — who called whom to get here.

It answers "how did the program end up running this code?" and helps you climb back up to the higher-level logic, such as the function that decided to apply damage.

Reading the Call Stack
Reading the Call Stack
Tip The list of functions that led to the current instruction is the call ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{how_did_i_get_here}

The list of functions that led to the current instruction is the call ___? (one word)

+10 pts
$

Need a hint? Functions stacked on each other.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
85

Choosing the Right Tool

Choosing the Right Tool

Match the tool to the job: quick value edits and pointer scans → Cheat Engine; live stepping through code → a debugger; understanding a whole binary → a disassembler/decompiler; raw file bytes → a hex editor.

Knowing which to reach for saves hours. Most tasks start in Cheat Engine and graduate to the others as you go deeper.

Choosing the Right Tool
Choosing the Right Tool
Tip For quick memory value edits and pointer scans, the go-to tool is Cheat ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{right_tool_right_job}

For quick memory value edits and pointer scans, the go-to tool is Cheat ___? (one word)

+10 pts
$

Need a hint? The beginner all-rounder.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
86

What Is Reverse Engineering?

What Is Reverse Engineering?

Reverse engineering is figuring out how something works when you do not have the plans — taking a finished program apart to understand its inner logic.

Everything in this room is applied reverse engineering. The mindset — observe, hypothesise, test, refine — carries far beyond games into malware analysis, security research, and software archaeology.

What Is Reverse Engineering?
What Is Reverse Engineering?
Tip Working out how software functions without its source code is called reverse ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{take_it_apart}

Working out how software functions without its source code is called reverse ___? (one word)

+10 pts
$

Need a hint? Un-building it.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
87

Static vs Dynamic Analysis

Static vs Dynamic Analysis

Static analysis studies a program *without running it* — reading the disassembly or decompiled code. It is safe and gives the big picture, but you must reason out what will happen.

It pairs with dynamic analysis (next). Together, reading and running, they let you understand almost anything.

Static vs Dynamic Analysis
Static vs Dynamic Analysis
Tip Analysing a program by reading its code without running it is ___ analysis? (one word) Answer: think it through, then submit below.

Flag: ASEC{look_dont_run}

Analysing a program by reading its code without running it is ___ analysis? (one word)

+10 pts
$

Need a hint? Nothing is executing.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
88

Dynamic Analysis: Watch It Run

Dynamic Analysis: Watch It Run

Dynamic analysis studies a program *while it runs* — using a debugger to watch values, step through code, and see real behaviour.

It shows what actually happens (including things static analysis might miss), at the cost of needing to run the code. Most reverse engineering blends both approaches.

Dynamic Analysis: Watch It Run
Dynamic Analysis: Watch It Run
Tip Analysing a program by running it and watching its behaviour is ___ analysis? (one word) Answer: think it through, then submit below.

Flag: ASEC{watch_it_live}

Analysing a program by running it and watching its behaviour is ___ analysis? (one word)

+10 pts
$

Need a hint? It is live and moving.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
89

Functions and Calling Conventions

Functions and Calling Conventions

Code is organised into functions, and a calling convention is the agreed set of rules for how arguments are passed (which registers, the stack) and how results come back.

Recognising function boundaries and conventions turns a soup of instructions into meaningful, named routines you can reason about.

Functions and Calling Conventions
Functions and Calling Conventions
Tip The agreed rules for passing arguments to a function are the calling ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{how_to_call}

The agreed rules for passing arguments to a function are the calling ___? (one word)

+10 pts
$

Need a hint? An agreed standard.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
90

Identifying Loops and Conditions

Identifying Loops and Conditions

In assembly, a loop appears as code that ends with a jump *back* to an earlier point, repeating until a condition changes. Conditions show up as CMP followed by a conditional jump.

Learning to spot these patterns lets you read the control flow — the shape of the logic — even without comments.

Identifying Loops and Conditions
Identifying Loops and Conditions
Tip Repeated code driven by a jump back to an earlier point is a ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{round_and_round}

Repeated code driven by a jump back to an earlier point is a ___? (one word)

+10 pts
$

Need a hint? It goes round and round.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
91

Strings as Clues

Strings as Clues

Readable text left inside a binary — menu labels, error messages, file names — are strings, and they are gold for reverse engineers.

Search for a message you saw on screen, find where it lives, and the nearby code is often exactly the logic you were hunting for. Strings are the fastest shortcut into unknown code.

Strings as Clues
Strings as Clues
Tip Readable text left inside a program that gives you clues is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{follow_the_strings}

Readable text left inside a program that gives you clues is called ___? (one word)

+10 pts
$

Need a hint? Text values in the binary.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
92

Job-Ready Notes

Job-Ready Notes

Tools to know: Ghidra, IDA, x64dbg, gdb (with pwndbg), radare2.
Cheat sheet

file ./bin; strings ./bin        # quick triage
gdb ./bin                        # dynamic analysis

Interview practice

  • Static vs dynamic analysis — strengths of each?
  • What is a pointer chain and why is it useful?
  • How do programs try to detect a debugger?
93

Cross-References (XREFs)

Cross-References (XREFs)

A cross-reference (XREF) shows everywhere a function, string, or address is used from. Right-click a function and "show XREFs" to see who calls it.

XREFs let you navigate a program like a web of links: find an interesting string, follow its XREF to the code, then follow that code's XREFs upward to the important logic.

Cross-References (XREFs)
Cross-References (XREFs)
Tip Links showing everywhere a function or value is used from are called cross-references, or ___ for short? (one word) Answer: think it through, then submit below.

Flag: ASEC{who_calls_this}

Links showing everywhere a function or value is used from are called cross-references, or ___ for short? (one word)

+10 pts
$

Need a hint? Cross-REFerences.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
94

Naming and Commenting as You Go

Naming and Commenting as You Go

Reverse engineering is memory-intensive, so as you figure out what a function does, rename it and add comments. "sub_401000" becomes "apply_damage."

This makes every later step easier, because the code slowly turns from cryptic to readable. Good reversers leave a trail of breadcrumbs for their future selves.

Naming and Commenting as You Go
Naming and Commenting as You Go
Tip Renaming and commenting functions as you understand them makes the rest of the work ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{leave_breadcrumbs}

Renaming and commenting functions as you understand them makes the rest of the work ___? (one word)

+10 pts
$

Need a hint? Less hard.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
95

Packing and Obfuscation

Packing and Obfuscation

Some programs resist reverse engineering with packing (compressing/encrypting the code so it only unpacks in memory) or obfuscation (deliberately confusing code).

These slow you down but rarely stop a determined analyst — you often let the program unpack itself in memory, then dump and analyse it. Recognising a packed binary is an early, useful skill.

Packing and Obfuscation
Packing and Obfuscation
Tip Compressing or encrypting a program's code to resist reverse engineering is called ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{hidden_in_plain_sight}

Compressing or encrypting a program's code to resist reverse engineering is called ___? (one word)

+10 pts
$

Need a hint? Like packing a suitcase tightly.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
96

Patience: The Real RE Skill

Patience: The Real RE Skill

More than any tool, reverse engineering rewards patience. Progress comes from many small, careful observations — rename a function, test a theory, follow one XREF — that slowly add up to understanding.

Nobody reads assembly fluently on day one. The people who get good are simply the ones who keep chipping away, calmly.

Patience: The Real RE Skill
Patience: The Real RE Skill
Tip The single most important trait for reverse engineering is ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{slow_and_steady}

The single most important trait for reverse engineering is ___? (one word)

+10 pts
$

Need a hint? Slow and steady wins.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
97

How Anti-Cheat Detects You

How Anti-Cheat Detects You

The simplest anti-cheat method scans your memory for the byte signatures of known cheats and tools, exactly like antivirus. If it spots Cheat Engine's fingerprint or a known trainer, it flags you.

Understanding signature detection — and why it only catches *known* things — is the first lesson in the defender's side of this game.

How Anti-Cheat Detects You
How Anti-Cheat Detects You
Tip Anti-cheat that scans memory for known cheat byte-patterns uses ___ detection? (one word) Answer: think it through, then submit below.

Flag: ASEC{they_scan_for_you}

Anti-cheat that scans memory for known cheat byte-patterns uses ___ detection? (one word)

+10 pts
$

Need a hint? Like a fingerprint.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
98

Signature vs Behavioral Detection

Signature vs Behavioral Detection

Beyond signatures, behavioral detection watches *how you play* and flags the impossible: perfect aim, superhuman speed, seeing through walls. It does not need to recognise your specific cheat — only that your behaviour is not humanly plausible.

This is why even a brand-new, undetected cheat can still get you banned for playing "too well."

Signature vs Behavioral Detection
Signature vs Behavioral Detection
Tip Detection that flags impossible actions (perfect aim, superhuman speed) is ___ detection? (one word) Answer: think it through, then submit below.

Flag: ASEC{too_good_to_be_true}

Detection that flags impossible actions (perfect aim, superhuman speed) is ___ detection? (one word)

+10 pts
$

Need a hint? Based on how you act.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
99

Kernel-Level Anti-Cheat

Kernel-Level Anti-Cheat

Some anti-cheat runs at the kernel level — the deepest, most privileged layer of the operating system — so it can observe things a normal program cannot, including tools trying to hide from it.

It is powerful and controversial (it sees a lot of your system), and it dramatically raises the difficulty for cheat developers.

Kernel-Level Anti-Cheat
Kernel-Level Anti-Cheat
Tip Anti-cheat that runs at the deepest, most privileged OS layer is ___-level? (one word) Answer: think it through, then submit below.

Flag: ASEC{deep_in_the_system}

Anti-cheat that runs at the deepest, most privileged OS layer is ___-level? (one word)

+10 pts
$

Need a hint? The core of the OS.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
100

Server-Side Validation Wins

Server-Side Validation Wins

The strongest defence is not on your machine at all: server-side validation. The server independently checks every action — is that move possible, was that shot legitimate — and ignores anything the client claims that does not add up.

Client-side checks can always be bypassed; server authority cannot, which is why serious online games rely on it.

Server-Side Validation Wins
Server-Side Validation Wins
Tip The strongest anti-cheat validates every action on the ___, not the client? (one word) Answer: think it through, then submit below.

Flag: ASEC{the_server_decides}

The strongest anti-cheat validates every action on the ___, not the client? (one word)

+10 pts
$

Need a hint? The authoritative remote machine.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.
101

Putting It All Together

Putting It All Together

Look how far you have come. You know that game state is just numbers in memory; that you find them by scanning, reach them reliably with pointers, and understand them through assembly and the debugger. You can patch code, choose the right tool, reverse-engineer logic, and you understand how anti-cheat fights back — and why the server always wins online.

That mental model — a program as data and instructions you can read and change — is the real prize, and it powers everything from malware analysis to exploit development. Keep practising, offline, on games you own.

Putting It All Together
Putting It All Together
Tip At the core, all of game hacking rests on the idea that game state is just numbers in ___? (one word) Answer: think it through, then submit below.

Flag: ASEC{you_understand_the_machine}

At the core, all of game hacking rests on the idea that game state is just numbers in ___? (one word)

+15 pts
$

Need a hint? Also called RAM.

What is the flag for this task?

+10 pts
$

Need a hint? It is in bold at the end.

Reviews

No written reviews yet. Be the first once you have played the room.