Software Reverse Engineering Techniques – Level 1 (W19)


13 in stock

Get the access to all our courses via Subscription



Software Reverse Engineering Techniques - Level 1

Software Reverse Engineering Techniques is a field of work where you can have a binary file and revert it into a programing language (usually Assembly). It is very useful when you do not have the original source code (e.g. legacy code) and need to change something in the program or even debug it. In this first approach (Level 1), you will learn the things that you should know about Computer Organization, Machine Language, Assembly Language and the techniques related to these topics used to understand a program without having the original source code. The course was developed considering x86 32 and 64 bits architecture.

 Your instructor: 



Phd. in Engineering by University of Sao Paulo (USP), teaches Operating Systems, Computer Organization, Computer Networks and Software Reverse Engineering since 2006.
Published papers in the following areas: operating systems and computational mechanics.
Also worked as programmer in public and private companies for almost fifteen years.
You can find more information about me on Linkedin and ResearchGate.


Module I: Computer Organization and Machine Language (Opcodes)

    • Von Neumann Architecture and the x86;

    • Arithmetic Logic Unit, Memory, Registers and the relationship with the Operating System;

    • Opcodes - Binary and Hexadecimal approach;

    • The differences between 32 and 64 bits (Registers and Flags).

      - Emulating an architecture to understand how opcodes work.

Module II: Assembly Language - x86 32 and 64 bits

    • Opcodes x Assembly Language

    • Arithmetic and Logic Commands

    • Memory Access Commands

    • Writing programs in Assembly (using the Assembler)

      - Writing different types of programs (using the commands learned).

Module III: Debugging and Changing a Binary (Real Time)

    • What is a debugger and how to use it?

    • Understanding how a program works and modifying it;

    • Removing small parts of a binary program;

    • Adding new code to a binary program;

      - Using a Debugger to understand the behaviour of a binary program;
      - Changing the behaviour of a binary program in real time;

Module IV: Debugging Changing a Binary (Permanently)

    • Using a hexadecimal editor to change a binary on hard disk;

    • Case Study: Removing Advertisement;

    • Case Study: Removing Unwanted Warnings.

      - Using a Hexadecimal Editor to make a permanent change in a binary program;
      - Removing advertisement, password checking and other stuff of a binary program.


If you have any questions about this course, feel free to contact our training coordinator Marta at [email protected]

© HAKIN9 MEDIA SP. Z O.O. SP. K. 2013