This page is still under development
The tools you will use often depend heavily on the challenge.
Reverse-engineering suites for x86/ARM programs:
Reverse-engineering tools for Java or Android
Tools for dynamic (runtime) analysis
gdb
is a popular debugger, usually used for native linux applications. More information. It is useful for setting breakpoints, stepping through parts of a program, and you can even modify a program's behavior at runtime.