Delphi - unmangle names in BPL's -
Is it possible to resolve their names in Delphi? If so, where do I get more information?
An example of an error message where he can not find a certain entry in DBRL 100. BPL, I have to know that this is not the exact job (unit, class, name), parameters, etc. ).
--------------------------- myApp.exe - Entry Point Not Found ----- ---------------------- Methodology entry point @ DBMON @GetTableNameFromSQLEx $ qqrx17 System @ WideString25Dabman @ IDETFeropen Dynamic Link could not be located in library dbrtl100.bpl - ------------------------- Fine ---------------------- -- ---
I know that this is GetTableNameFromSQLEx in the debombon unit (Delphi with my RTL / VCL sources), but sometimes I Will bump into where all code (yes, clients should always buy the source code for third party accessories, but sometimes they do not).
But is this an example for which I do not have the code, or only the interface files (any person?) What is the parameter (i.e. the potential surcharge)?
- jeroen
1 edit :
Thanks to Rob Kennedy: tdump -e dbrtl100.bpl does not require anymore for -am :
c: \ windows \ system32 & gt; Tdump -e dbrtl100.bpl | Grep GetTableNameFromSQLEx File STDIN: 00026050 1385 04AC __fastcall Dbcommon :: GetTableNameFromSQLEx (Const Systems :: WideString, Dbcommon :: IDENTIFIEROption)
Edit 2 :
Thank you to Tondage that found (). This article accurately describes the format, and it is possible to make some delphi codes to disable it.
Pitty is the website on which the author is mentioned (and email) is dead, but knowing it is good information.
- jeroen
No function is available with Delphi , And I am not aware of having a document anywhere about it, it is mentioned that the "tdump" utility has an -um switch to which it is searched for unknown symbols I have ever tried to do it Not of
If that does not work, then it does not look like a very complex plan. Obviously, the name starts with "@" and then there is the unit name and function name, which is different from the other "@" sign. The name of that function is done by "$ qqrx" followed by parameter types.
The parameter types are encoded using the character of that type, followed by the delimited format before the same "@".
The beginning of the name of the function name and the beginning of "parameter" types is required "$". The remaining secret "qqrx" part is revealed by that article indicates "Qqr" calling conference, in which case registered , a.k.a. fastcall is there. Applies to the "X" parameter and it means that it is stable.
The return type does not need to be encoded in the disturbance function name because overloading does not consider return type anyway.
Comments
Post a Comment