↯   KNOWLEDGE AREA

Reverse engineering

Recover behavior from binaries, bytecode, and execution.

9 topics

Reversingintermediate

Anti-debugging checks and observation-preserving analysis

Anti-debugging code detects altered process state, unusual timing, debugger APIs, tracing relationships, or exception behavior.

anti-debuggingreversing
Reversingintermediate

Assembly reading: widths, flags, and ABI contracts

Assembly interpretation depends on operand width, signedness, flags, and the calling convention.

assembly-and-abireversing
Reversingadvanced

Audit symbolic pointer concretization

Distinguish unreachable behavior from behavior discarded by a symbolic execution memory strategy.

angrsymbolic-executionconcretization
Reversingintermediate

Dynamic debugging and hypothesis-driven breakpoints

Dynamic analysis observes a concrete execution and tests static hypotheses.

dynamic-debuggingreversing
Reversingintermediate

Managed code, bytecode, and runtime semantics

Java, .NET, Python, and JavaScript artifacts often retain richer metadata than native binaries.

managed-codereversing
Reversingintermediate

Packed binaries and identifying original-code transitions

Packing compresses or transforms executable code and supplies a loader stub that reconstructs it at runtime.

packing-and-unpackingreversing
Reversingintermediate

Reconstructing validation loops and reversible transforms

Challenge validators often transform input bytes and compare against constants.

validation-loopsreversing
Reversingfoundation

Static analysis: strings, imports, and control-flow landmarks

Static analysis reconstructs behavior without running the program.

static-analysisreversing
Reversingadvanced

Symbolic execution: constraints, paths, and concrete validation

Symbolic execution represents input as variables and builds constraints along program paths.

symbolic-executionreversing