This blog is subject the DISCLAIMER below.

Tuesday, November 20, 2007

Beginning Reversing

Reversing is a good word which have a great meaning especially in computer science so
what is the meaning of Reversing or ( Reversed engineering )?
the Reversed engineering means Retrieving the blueprints from the output of the product whatever the product is as an example :suppose that we have a great building from 1977 and we want to repair it (for tourism issues) but actually we don't have the blueprints that building was built with so repairing it will be unmanaged work as we don't know exactly what each part of the building means and the answer of that problem is the magic word (REVERSE IT ) and we mean by reversing it try to retrieve the blueprints from it by this example I suppose that most of us know what is Reversing now let's talk about Reversing in computer science as you may thought Reversing is Retrieving the source code from the executables.

BUT why would we do that ? ???

there is lots of reasons to do so . Note that Reversing is not the science of stealing other people work as someone may expect . Reversing is used in such cases when some one was working with us and then he left the company and some of his work has some bugs in running and we had a problem communicating with him and we don't have the source code here the magic of reversing appears if we just reversed his work we will have the blueprint and we can fix the bug . some other reason as we all make we all work with third party product which may be dlls com components and some of them have a missing documentation and we need to know some of it's detail again here is Reversing solves the problem . and lots of application of reversing we could write lots of articles on Reversing application but one of the great application is viruses antis when the virus is spread most of the anti virus companies reverse it to know some information on how to beat it .
but how could we Reverse ?
that is last question and maybe the hardest one of course Reversing is not that trivial task you need to know exactly how your program run and know about your target operating system and of course you must know about the law level language you are reversing to it . after you know the appropriate information you actually need to watch your target application through debuggers and some other tools (actually reversing is all about using tools) you must watch the whole program running and then indicate the places of interest in your needs and then watch those places closely to know where is your bug exactly and then defeat it .

Reference : Secrets of Reversed engineering by Eldad Eilam


Adel Solaiman said...

congratulations waleed for your first great post,
keep on I'm waiting your next article hope it be soon.

i also think that any code can be reversed isn't for professional developer
i mean professional developer shouldn't let it's code reversible.

End Of Days said...

Realy Great work waled & keep going i'm waiting for something amazing
(rabna yekrmk)