Reverse Engineering

Description

There are multiple ways of writing and disseminating a software program. The usual process includes software programmers writing the code in arbitrary programming language, after which the code is compiled or interpreted in order to be run on chosen architecture.

Our reverse engineers are able to work with many different software programs, including with the executables and libraries written and compiled for the following architectures: ARM, x86/x64, MIPS, SPARC, etc. We will also use static as well as dynamic reverse engineering techniques to determine the program internals. If security measures like anti-debugging/anti-detection techniques are in place, we'll use the latest counter-measures to bypass them in order to determine how the program actually works.

Audience

Reverse engineering is a suitable solution for companies wishing to take apart the program to determine it's inner workings for a number of reasons, including:

  • Determining how a piece of code funtions after an employee responsible for it has left the company.
  • To check whether competitor company has integrated a piece of code into their product without acquiring the necessary rights.
  • Write the chosen functionality incorporated by the software product in a different programming language for easier integration.
  • Determining the effectiveness of protection mechanisms against reverse engineering such as anti-debugging/anti-detection techniques.

Results

The end results include an extensive report about the reverse engineering process, including:

  • Basic information about the project scope and timeline.
  • Detailed description about the environment set-up as well as executables and libraries being reverse engineered.
  • Detailed analysis of the reverse engineered functions, depending on customer wishes, including:
    • A report about the interworkings of a chosen high-level functionality.
    • A detailed analysis of encoding/decoding process.
    • A detailed analysis of encryption/decryption process.
  • A program written in an arbitrary programming language duplicating the chosen functionality of the original excutable or library.
  • A highly commented code with all the corresponding documentation.
  • A detailed report about the internal workings of the binary as well as anti-debugging/anti-detection techniques.
  • Recommendations how to further protect the binary to make reverse engineering somewhat harder and more complicated.