Inspired by a Tutorial of a Friend about advanced Reverse Engineering, I’ve decided to learn some Basics of Software Reverse Engineering, because I don’t have much experience on that area yet and I’m interessted to learn some secrets how computerprograms work in their deepnes and maybe what kind of weakness they have. A definition of Reverse Engineering is the process of taking a compiled binary file and trying to recreate or understand the original way how the program works. Sounds not easy and I think a lot of knowledge and patience is needed to be an effective reverse engineer. Examples where Reverse Engineering is used are the analysis of malware and viruses, breaking the copy protection of different kind of Software, adding functions to existing software or evaluating software of their quality and robustness.
For the beginning it’s important to know soemthing about the tools which are used in reversing. But what kind of tools do we meet in Reverse Engineering?
With a Dissasembler it’s possible to translate a binary file into Assembler Code.
With a Debugger it’s not only possible to analyze the binary in Assembler. You have also the possibility to step trough the Code, setting breakpoints and run specific Code lines to find out how the program or a specific programsequenz work.
3. Hex editors
Hex editors allow you to view and edit the actual bytes in a binary file.
There are lot’s of other tools where a reverser use to do his work, but Dissasembler, Debuggers and Hex editors are the main tools and are important to understand if you plan to go a bit into reverse engineering. For the next step I plan to have a closer look on the well known Olly Debugger to learn some basics.