The aim of Reverse engineering is to bring executable programs and libraries back into a human understandable code. Therefore exist a lot of different tools. Common used tools are Disassembler and Decompiler.
Disassemblers are tools that translate executable programs or libraries into readable assembler code. Examples for tools that work on machine code are OllyDbg, IDA Pro and Radare2.
Decompiler on the other hand are tools that translate executable programs or libraries straight back into source code. A common tool that works on machine code is Hex-Rays (x86, x64, ARM32, ARM64 to C-like pseudo code) and tools on an IR-Code are ILSpy and NET Reflector for MSIL-Code and Bytecode Viewer for Java Bytecode.