0xploit.com

Reverse Engineering Reverse Engineering For Beginners With Resources

Legion

Active member
Satan
Joined
Nov 21, 2023
Messages
1,314
Hellcoins
♆2,871
image.jpg

While i wanted to learn up reverse engineering , I started hunting up for blogs, I wish to share the links which i came across with respect to categorization .

What is reverse engineering :

Reverse engineering may refer to any of the following: 1. When referring to computer science/programming, reverse engineering means to “break down” the programming code. … Generally speaking, the purpose is to fix errors in the software engineer’s code, or create a program like the one being deconstructed.

Are reverse engineering and decompilation the same?

Decompilation is just one method of reverse engineering.

From the decompilation description:

Decompiling is the process of analyzing an executable or object code binary and outputting source code in a programming language such as C. The process involves translating a file from a low level of abstraction to a higher level of abstraction.Decompilation is usually carried out using a decompiler. From Wikipedia’s article on reverse engineering:

QUOTE:
Reverse engineering is the process of discovering the technological principles of a device, object, or system through analysis of its structure, function, and operation.
Software can be reverse engineered and decompiled. A lot of other things (such as hardware, door locks) can be reverse engineered but not decompiled, because their software/firmware is written in low level languages without a higher-level representation, or, more radically, they don’t have any firmware in the first place.
Whenever we begin up reverse engineering Two things will come up in mind :
QUOTE:
Dynamic program analysis is the analysis of computer software that is performed by executing programs on a real or virtual processor.
Static program analysis is the analysis of computer software that is performed without actually executing programs.
In other words :
  • The static analysis is usually based on analyzing the program without the need to execute it. It is mostly based on finding patterns, counting memory references, … The Wikipedia page about Static program analysis is, from my point of view, incomplete but still a good read.
  • The dynamic analysis, on the other hand, involves executing the program and requires instrumentation of basic blocks such as loops, functions, … The instrumentation consists of inserting probes at the entry and exit of a basic block which will measure the time according to a certain metric (CPU cycles, time in µs, …). The information gathered after analysis is usually used to optimize the application by performing loop unrolling with a suitable unroll factor, vectorization if possible (SSE, AVX, Altivec, …), etc.


 
Last edited by a moderator:
Top