Rev 1: Introduction to Reverse Engineering
by Jason An
Reverse engineering is a field of cybersecurity that involves figuring out what a program, often compiled, does, in order to achieve some kind of goal, like bypassing a license check or finding a vulnerability in the software. From professional positions like vulnerability research and malware analysis, to hobbyist activities like game modding or DRM cracking, reverse engineering has a wide variety of interesting applications in cybersecurity. We'll start off by learning basic reverse engineering principles on programs with full to nearly-full source code access, and then move towards learning how to reverse engineer compiled executables later on.
Slides
Challenges
A set of challenges with increasing difficulty are deployed to platform.acmcyber.com to practice the concepts covered in the slides.
Rev Challenges:
rev/Character Numbers
rev/my EPIC scrambler
rev/sandwich
rev/brick-maze
rev/schedule-i
rev/dancing
rev/salsa69
Resources
The following resources are great tools for some of the reversing challenges:
- Online Java Decompiler: An entirely online tool that can decompile Java jar/class files back to decent-quality source code.
- repl.it: A website that lets you run many different programming languages online, which you can use to play around with programs if you don't want to install them locally.
- CyberChef: An online tool that has a variety of different encoding and encryption schemes, which may be useful.