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.
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.
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: