I have a third party dll that I want to change the symbol names. Is this possible? I dont want the competition to know what component my product uses. I don't have the source for the dll.
问题:
回答1:
Symbol table is required for binding executable with dll during linking and runtime. It usually contains decorated function names and ordinals. It is possible to use ordinals only. If you are building library you can define .def file to have a control over symbol tables. But if this is pre-built 3rd party library, it may be very hard way to go. Of course everything is possible but I doubt it is worth your efforts.
If you are desparate, I would try altering a letter in decorated function name in hex editor, lookup this function ordinal value and then try using GetProcAddress with ordinal of this function.
回答2:
You might look at PE Explorer. I'm not sure it will do what you want, but maybe.
回答3:
Not without modifying the binary, and if the DLL is signed then this would invalidate the signature.
Even if it isn't signed it would probably violate the license agreement that governs the use of the DLL.