4 ms·
My first experience with Delphi is quite recent actually. I've done quite a lot of C/C++ programming & reverse engineering (the latter as a hobby) and recently
by xor42 5y ago
My first experience with Delphi is quite recent actually. I've done quite a lot of C/C++ programming & reverse engineering (the latter as a hobby) and recently had to scratch the itch to take a closer look into the ecosystem of a popular alarm systems manufacturer.
Their hardware is well designed but the quality of their software is unfortunately not quite what you'd expect to see in this field. As such, I wanted to see what could be learnt/exploited by exploring their binaries.
As it turns out, their software suite is written in Delphi, which required me to read quite a lot about it, and use/write some custom tools to help me analyze the binaries in Ghidra.
An existing tool I have relied on is called IDR[0]. It relies on "knowledge bases" which are binary files generated by another project[1] from the same author to store information about all the types and classes provided by each version of Delphi. The source code of these two projects is pretty "funky" from a software engineering point of view, but quite enlightening from a research standpoint to understand how Delphi binaries are generated.
I can see from this thread that a lot of people are nostalgic about how easy/enjoyable it was to use. I now find the low-level analysis of this technology just as fun and interesting.
As a side note and to loop back to the reason of this whole endeavor, after many hours spent reversing the software of this manufacturer, I can attest that the rumors about the code quality are not just rumors :)
[0] https://github.com/crypto2011/IDR https://github.com/crypto2011/IDR
[1] https://github.com/crypto2011/KBBUILDER https://github.com/crypto2011/KBBUILDER