Sign in to follow this  
lordcorm

Reverse Enginnier?

Recommended Posts

Palidine    1315
you can get what's called a "disassembler", which converts and exe into assembly language. Unfortunately, because of how compilation works, there is no way to go from assembly into the original c/c++ or whatever language the application was written in.

-me

Share this post


Link to post
Share on other sites
Anatol    178
Assuming you used C++, unfortunately not at all.
Seriously, you are out of luck, it is not possible. Even if you could disassemble the executable, the resulting code would hardly resemble something you have ever written. I'm sorry, but at least you've learned the value of frequent backups :/

Share this post


Link to post
Share on other sites
mikeman    2942
Quote:

...i lost the objectgs and the ccp...


Tough luck :) I don't think you can do much more than just disassembly it. This is actually a good thing. If, for instance, you made a multiplayer game, you wouldn't want to make lamers and cheaters' life even easier by being able to reverse engineering your .exe into C++ code.

Share this post


Link to post
Share on other sites
TheAdmiral    1122
That's quite enough naysaying. If you ask a good reverser what's impossible, they'll say nothing (interpret that how you will) [wink].

Depending on what exactly you hope to achieve and how much experience you have in RCE (I'm guessing very little) then your task can range from wholly possible to extremely difficult.

If you just need to change a parameter or two, you can do so quite easily without using a disassembler. If you need to find out how an algorithm works, you probably will find a disassembler very helpful (may I recommend IDA?). If you want to work out what a piece of code is doing, a good debugger (OllyDbg is the tool of choice) will be indispensable. If you want to recover lost source code, you're pretty much out of luck. Other essential tools include the hex editor, PE viewer and a Win32 API reference.

Although decompilers exist for many languages (which will produce a source listing for the original language, as opposed to raw assembly code like a disassembler generates) they are, on the whole, unreliable and unpredictable. The language syntax may be more familiar, but you still have no variable or function names and certain high-level structures will be misinterpreted (imagine a while loop being expresed as a for loop). Most reversers are perfectly happy with a disassembly and wouldn't use a decompilation even if it were given to them.

Working from a dead-listing (as produced by a disassembler) is very different to working from source code: All objects are nameless and code structure is radically different from how it was written: An assembly contains only conditional jumps and calls, so in a disassembly; for loops, while loops, if statements and switch statements all end up looking very much like that same thing. However, when the program is 'live' (under a debugger), one can glean far more information about what is going on (what variables and registers are doing what) but is more or less lost in terms of subroutine structure (attempts to trace the call stack are unpredictable at best).

Let us know what your intentions are and we may be able to give you some more useful help.

Regards
Admiral

Share this post


Link to post
Share on other sites
Tachikoma    575
There used to be old an DOS tool that converted EXE files to a high-level source code, such as C. It was called exe-to-c or something along those lines. It *kinda* worked, but I doubt it would work with modern WIN32 executables.

It's also worth noting that debug builds are easier to reverse engineer than release builds, as they tend to retain of some symbolic information, and it would be (I imagine) easier to identify parts of code that would aid the recunstruction of high level code. So if there was an application that is capable of retriving some of the source code from executables, debug builds would the the best candidate. Release builds are (unfortunately in your case) optimised to the point where all the redundant debug info and other code is removed. That said, it's a HUGE task, and you'd save time by rewriting everything from scratch.

If you're confortable with assembly, get your hands on Interactive Disassembler (IDA). It's a fairly advanced tool, it can even identify standard C & C++ libraries and functions in release builds. It can generate ASM files that can be rebuilt with MASM or TASM.

Share this post


Link to post
Share on other sites
chowe6685    349
To clarify what's been said here.

It sounds like you've lost the source code files for some code you've lost. In this case reverse engineering isn't going to help you. Recovering meaningful source code from a binary (assuming we're working in c/c++) is extremely difficult and would almost certainly take longer than just rewriting the code.

Reverse engineering would be useful if you can't remember the details of an algorithm and wanted to look up how you had implemented it. Realize though that you need to be very comfortable with assembly to get much useful information out of a binary

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this