Looking for:
Decompiler Delphi Software - Free Download Decompiler Delphi.Delphi exe decompiler download. Delphi and C++Builder Decompiler 3.42 Download
Decompiler produces all project forms and data modules with all assigned properties and events. Produced event procedures don't have a body, but have an address of code in executable file. Version 8. Designed to make shopping easier. IObit Uninstaller. Internet Download Manager. Advanced SystemCare Free. WinRAR bit. VLC Media Player. MacX YouTube Downloader. Microsoft Office YTD Video Downloader. Adobe Photoshop CC. VirtualDJ Avast Free Security. WhatsApp Messenger.
Talking Tom Cat. Clash of Clans. Subway Surfers. TubeMate 3. Google Play. Windows Windows. Most Popular. New Releases. Desktop Enhancements. Networking Software. Software Coupons. Full Specifications. What's new in version 8. Release November 7, Date Added July 24, Operating Systems. Total Downloads 90, Downloads Last Week 0. Report Software.
Related Software. Code Compare Free to try. Compare and merge diffing files and folders. Visual Basic Database Projects Free. Use this set of three programs to illustrate the advanced uses of Visual Basic with databases. DLL to C Free to try.
User Reviews. Show Reviews.
- Delphi exe decompiler download
Find centralized, trusted content and collaborate around the technologies you use most. Connect and share knowledge within a single location that is structured and easy to search. Delphi uses textfiles describing the content of your form and hooks up event handlers by name. This approach obviously needs enough metadata to deserialize that textual representation of a from and hook up the eventhandlers by name. An alternative some other GUI toolkits use is auto-generating code that initializes the form and hooks up the event handler with code.
Which has the side-effect that reversing becomes a bit harder. It shouldn't be too hard to create a program that transforms a dfm file into a series of hardcoded instructions that creates the form instead.
So a tool like DeDe won't work that well anymore. But that doesn't gain you much in practice. So you just need to breakpoint the one you're interested in and then step into the user code. The statement you make is false. Delphi is not particularly more easy to decompile than code produced by other mainstream compilers.
If you were able to prove that the results of decompiling a Delphi executable were of significantly higher quality than in other widely used languages then your question would carry more weight. I've been through a Delphi decompiling session myself. It was one of those fake-sounding "I lost my sources" thing, I really did lose the sources for a tiny Firebird UDF library.
Now I do no better, I didn't jump right into decompiling because the library was so small and I knew a rewrite would be much faster. After doing the sane thing and rewriting the function and doing some regression tests I discovered some obscure corner-cases where the new function's result wasn't the same as the old function's result! The trouble was, the new function's result was the correct result, the old DLL contained a BUG and I had to reproduce the BUG - with this function consistency is more important then accuracy.
Again, did the sane thing and tried to "guess" at the BUG. I knew it was a rounding issue but simply couldn't figure out what it was. Finally I decided to give decompilers I try. Decompiling failed! I tried lots of different decompilers, including a couple of "commercial" ones.
Most produced what on the surface looked like good data, but not enough to figure out the old bug. The most promising one, the one with version specific knowledge of the VCL and RTL gave the worst failure: sure, it figured out the RTL calls, gave them names, but failed to locate the exported function! The one function I was interested in wasn't shown int the list of entry points, and it should have been straight forward since it's an exported function. I wrote a small Delphi program that directly imports the function from the DLL, created a fake Firbird memory manager DLL so my DLL can load, called my old function with the parameters I knew would give bad results, steped into the code using the debugger and closely watched the FPU registers.
Armed with that knowledge I was able to reproduce the bug. Only thing that is easier in Delphi is retrieving VCLs. After using decompilers like DeDe you will get application user interface but without any logic. There are pros and cons. I am not sure what angle your referring to as being easier.
There is also a huge difference in a 1 form simple application, versus a very in-depth application that has many forms and tons of classes and functions.
It's like Notepad versus Office given they were coded in delphi, just an example comparing complexity not language. In a small app, having the extra information that Delphi apps "usually" contain can make it a breeze. However, in a large application it may "help", but you have a million calls to dig through. They may help you get in the near vicinity, but calls inside of calls inside of calls, then multiple returns used as jumps Then if the app "was" packed or protected, some things can still be a garbled mess.
While it may work programming wise, reading it can be a lot harder. I was in one the other day, where all of the strings were encrypted, so "referenced text strings" were no help, and the encryption was not a simple md5 or base64, it was some custom algorithm.
Maybe an MD5 with a salt, then base64 encoded? I never could get to the exact method on the strings. I knew what some of them were supposed to be, but couldn't reproduce the method, even though it looked like it was base64, it was the base64 of the string already encrypted some how I dont rely on text strings, but in a large large app, every little bit helps. Of course, my interpretation of this question, was looking at a Delphi exe in OllyDbg. I could be off base on where you guys were going with this topic, but I feel in regards to Olly and reversing, I am on point if that was what you were talking about lol.
Stack Overflow for Teams — Start collaborating and sharing organizational knowledge. Create a free Team Why Teams?
Learn more about Collectives. Learn more about Teams. Delphi decompiling [closed] Ask Question. Asked 11 years, 7 months ago. Modified 7 years, 11 months ago. Viewed 19k times. BlackShadow BlackShadow 1, 6 6 gold badges 19 19 silver badges 25 25 bronze badges.
Why do you think it is easy? Decompilers of various quality are available for all compiled languages I'm aware of.
Mostly the quality is pretty poor. Knowing the names of visual component classes eg. Your claim that this makes it easier to decompile is nonsense - knowing that Delphi32 uses a window class named TAppBuilder doesn't mean you can write a new version of the Delphi IDE with the same capabilities.
The program you link to creates a. It does nothing special. Calling it a decompiler is misleading. Show 3 more comments. Sorted by: Reset to default. Highest score default Trending recent votes count more Date modified newest first Date created oldest first.
There are a few things that help with reversing delphi programs: You get the full form data including the name of event handler methods All members with published visibility have metadata used with RTTI The compiler is pretty bad at optimizing.
It does no whole program optimization and the assembly is usually a straight forward translation of the original source with only minor optimizations. At least it was in the versions I used, might have improved since then All classes, even those compiled with RTTI off have some level of metadata available. In particular it's possible to get the name and inheritance structure of classes. And for any instance of a class you happen to see in the debugger you can get its VMT and thus its class name.
Yes, its exactly what i mean, but my question is why? But reversing the GUI part is rarely interesting. It just helps you to get to the parts of the code you're interested in quicker. I think packages export all public functions using dll exports with a mangled name. Add a comment. Community Bot 1 1 1 silver badge. David Heffernan David Heffernan k 42 42 gold badges silver badges bronze badges.
My question is referred only to compiled executables exe that contain assembly code, not IL such as. My answer stands.
If your question was only meant to refer to compilers that emit native code, why didn't you say so? No need to be nasty. CodeInChaos describes the reasoning nicely.
Basically, Delphi programs retain a lot more metadata than other native compilers definitely more than e. Cosmin's story is not really relevant. He tried to reverse a single function in a single DLL, it did not involve any metadata. Real Delphi apps have many classes for which most of details are available in RTTI: name, size, inheritance hierarchy, names of fields and handlers for UI events and so on.
For example, here's what can be recovered from the executable for a single form: pastie. This way you can restore almost complete layouts of many classes which speeds up reversing significantly.
When reversing, every scrap of information can be useful, "fluff" or not. Even isolated code functions have to interact with the rest of the program and the extra info you might have about that will help. Show 2 more comments. This decompiling attempt should have been easy because: The code was fairly simple and not a lot of it.
It was a DLL with an exported function, none of the complexity you'd expect from an event-driven exe. I wasn't interested in re-compilable code, I simply wanted to find an old bug so I can reproduce it.
I didn't ask for Pascal code, assembler would've been good enough. I knew precisely what the code was doing and how it was doing it. It wasn't cryptic 3rd party code. Cosmin Prund Cosmin Prund
No comments:
Post a Comment