Introduction
What to expect
The majority of the challenges are programs written in C and compiled for x64 architecture linux machines. This means that the player is provided an ELF file. With the help of a tool called disassembler, the file can be translated from machine code into assembly language. A tool called decompiler can then try to translate the assembly back into high-level source code like C code. The player then tries to make sense of the source code to find out what the program is doing exactly. Oftentimes, the player has to dig into the assembly code generated by the disassembler, because decompilers often make mistakes or fail to decompile parts of the code.
Other types of challenges include Android Apps (apk format) that are written in Java or Kotlin.
Skills required (or Motivation to learn)
- C (understanding code, not necessarily writing)
- assembly (understanding, not writing)
Types of challenges (not an exhaustive list)
- reverse engineering crypto implementation
- reverse engineering a game
- reverse engineering a program acting as a virtual machine with its own instruction set
- reverse engineering an android app
- reverse engineering a flag-checker
- bypassing obfuscation and anti-reversing measures
If you have questions...
...feel free to ask people on Discord in the LCSC Server or me directly (#mathisfoxius)