How can I hide the names of identifiers in compiled projects?

When I compile the project related code like:

ttest = record
   one, two: string;
   three: integer;


I can see on EXE lines like "ttest", "one", "two" and "three".

It's Delphi anyway, even in Free Pascal.

Is there a way not to put this in the compiled program? Without the use of packers, encryptors, etc.


source to share

4 answers

I solved the problem. Using "string" on a record causes the record name to appear in the executable



Try turning off any debugging information you can find in the Project Options dialog ( Project / Options menu item ) and then rebuilding the whole project (i.e. not just Compile , use the Project / New menu item to make each block was recompiled in the project). This should fix it.

The actual options you should override in the project options depend on your Delphi version: for Delphi 2006 / Turbo Delphi they include all options under Debug in Compiler (possibly except "Assertion") and on the Linker tab "Include TD32 Debug Information" / "Include remote debug symbols". Newer versions of Delphi have a "Build Configuration" feature similar to Visual Studio, and here you can select "Release", and to restore you need to remove all "debug" debug information.



Not sure if this helps, but check create smaller delphi xe executable , it seems like deleting RTTI

might fix your problem.



Just avoid posting your data if possible, otherwise the field names will be visible. Also, don't forget that every method generated by a Property Inspector attack is automatically posted as published (as they are also used in dfm files). So every "Button1Click" etc. We see and therefore can be easily localized (method code).

Just run any program compiled with Delphi in IDA and with a special "Delphi string IDC script (find it at the IDA palace)". In the Names window, you can easily see all TSomething, every TSomething published property and methods ...



All Articles