Ho un progetto C++ in Visual Studio 2010 che viene compilato in una DLL. Ho diverse classi specifiche per l'implementazione private definite nel mio progetto, ad es. CMyClass
. Questa classe non viene esportata dalla dll o da alcuna funzione di interfaccia. Tuttavia, quando controllo il file dll generato, c'è una stringa "CMyClass" in essa contenuta. È una build di rilascio e non voglio che questa stringa appaia nel file dll. Questa DLL è spedita ai clienti, e voglio che tutti i nomi che ho usato nel mio progetto vengano rimossi dal file dll, così nessuno può avere un indizio così semplice su quali algoritmi usiamo nella nostra DLL.Rimuovere i nomi di classe C++ dal file dll binario
Uso la configurazione di rilascio. Nelle proprietà del progetto, l'opzione "Genera informazioni di debug" nella scheda del linker è disattivata, il "Formato informazioni di debug" nella scheda C/C++ è impostato su "Database del programma (/ Zi)". Ho provato a impostare la stringa vuota per "Debug Information Format" senza successo.
La stringa trovata nella dll si presenta come [email protected]@
e si trova all'estremità del file dll. È l'unica occorrenza della stringa "CMyClass" nel file dll. Tuttavia, questa stringa è presentata per quasi tutte le mie classi interne.
Come sbarazzarsi di queste menzioni?
Aggiornamento
Si prega di notare, io non voglio offuscare il codice sorgente stesso. Il link fornito è irrilevante. Non vedo alcun motivo per cui i nomi delle classi sono memorizzati nel file dll. Posso sempre rinominare le mie classi prima della compilazione, ma non è una soluzione molto semplice.
Update2
non sono d'accordo con la comunità in chiusura questo qustion, dal momento che questo non è un duplicato. E la risposta è data nei commenti dal Tyler Gill. Grazie a lui e vergogna per gli altri.
http://stackoverflow.com/questions/1025494/obfuscating-cc-code – Ram
"Non voglio che questa stringa appaia nel file dll" Qual è il motivo esatto per cui pensi che il nome della classe sia essere nascosto Compilare un codice C++ è già abbastanza offuscamento! – Ram
@Ram Perché i nomi delle classi corrispondono ai nomi degli algoritmi che usiamo per risolvere il problema. Non vogliamo che nessuno sappia quali algoritmi utilizziamo. – Mikhail