I'm organizing an introduction to reverse engineering weekend class in my city and wanted to get some feedback and advice on how to structure it. I'm considering two 5 hour sessions.
The objective is for the students to be able to use linux tools and and reverse engineering tools (specifically radare2/GDB) to start doing CTFs and crackmes to practice. The target audience is software engineers, developers and students. Having said that and after a few conversations with potential participants, quality here is mediocre at best so I rather prepare for the worse and assume some participants won't even know the behind the scenes of a compilation process.
What I have so far is the following:
- Linux usage
- Memory map
- Binary sections
- Passing function arguments
- Radare installation
- Quick intro to x86 assembler
- Gdb
- Stacks - return address
- stack canaries
- Buffer overflows
- Shellcode
- Nop slides
- CTF’s challenges