Ofuscar aplicacions creades amb Dotfuscator (versió Visaul Studio 2022)

Pàgina actualitzada :
Data de creació de la pàgina :

resum

Les aplicacions basades en la sèrie de frameworks .NET es creen en el que s'anomena un llenguatge intermedi comú, de manera que es poden llegir d'una manera propera al codi font original mitjançant eines de desmuntatge i similars. Aquesta secció descriu com ofuscar les classes i els noms del mètode en formats fàcilment il·legibles utilitzant la versió gratuïta de Dotfuscator, l'eina ofuscatòria que ve amb Visual Studio.

Es descriu utilitzant Visual Studio 2022, però també es pot utilitzar en altres versions de Dotfuscator.

Entorn operatiu

Estudi visual
  • Visual Studio 2022

Quant a Dotfuscator

Dotfuscator és una eina d'ofuscació que fa que el codi font sigui difícil de llegir quan es desmunta per a aplicacions escrites amb la família de frameworks .NET (d'ara endavant, .NET). El Dotfuscator inclou Visual Studio de forma gratuïta i per un suplement.

La versió gratuïta no està disponible a menys que moltes de les seves característiques siguin limitades o s'inicii Visual Studio, però qualsevol pot utilitzar-la sempre que tingui el Visual Studio instal·lat. La versió de pagament té moltes funcions d'ofuscació potents que no es troben a la versió gratuïta, però s'ofereix a un preu difícil de permetre per al públic en general.

Dotfuscator té diferents característiques, preus i edicions en funció de la versió, així que consulteu la pàgina d'inici següent per obtenir més informació.

Quant al desmuntatge

He esmentat anteriorment que les aplicacions escrites en .NET poden desmuntar i llegir fàcilment el codi font original, però el que realment està passant és que si desmunteu un fitxer .exe (o .dll fitxer) com es mostra a la figura següent, gairebé podeu reproduir el codi font original, com ara l'espai de noms, el nom de la classe, el nom del mètode, etc.

Tipus de programes que s'han d'ofuscar

S'aplica principalment als programes que es distribueixen i s'executen a usuaris no especificats. Per exemple, aplicacions d'escriptori. Per contra, les aplicacions web que tenen dificultats per accedir directament als fitxers del programa són menys importants per a l'ofuscació.

Aquesta vegada, estem veient un projecte en WPF, una aplicació d'escriptori.

S'està instal·lant Dotfuscator

Aquesta aplicació ve amb Visual Studio 2022 però no està inclosa en la instal·lació estàndard (en alguns estudis visuals anteriors es pot instal·lar des de zero).

Per afegir un dotfuscator: Inicieu Visaul Studio i seleccioneu Obtén eines i funcions de Les eines.

Seleccioneu "Components individuals" de la pestanya anterior, marqueu "Protecció preventiva - Dotfuscator" al grup "Eines de codi" i feu clic al botó Instal·la a la cantonada inferior dreta. En fer-ho, tanqueu la consola del Visual Studio.

Procediment d'ofuscació

Descriu els passos per confondre i ofuscar aquests noms.

Creeu una aplicació al Visual Studio, creeu .exe fitxer i, a continuació, feu clic al . Crea un fitxer de dll. Fins ara, això és el mateix que crear una aplicació regular. L'aplicació que creeu s'ha d'adreçar a les creades a la versió de la versió. (Perquè normalment no publiqueu a Debug.)

Després de crear .exe o .dll, seleccioneu Eines del menú Del Visual Studio i trieu Protecció preventiva - Comunitat de dotfuscator.

La pantalla de registre es mostra, però no és necessària, de manera que si és innecessària, feu clic al botó cancel·la tal com és.

Quedeu-nos i feu clic al botó D'acord.

Comença el dotfuscator. L'aplicació funciona per si sola, de manera que podeu ofuscar fitxers que no són rellevants per al projecte obert actualment. (En el cas de la pròpia versió gratuïta de la pròpia aplicació, s'assumeix que s'ha iniciat Visual Studio.) )

En aquest article, ofuscaré un projecte d'aplicació .NET 6.0 WPF construït amb valors predeterminats com a mostra.

Seleccioneu "Entrada" de la llista de l'esquerra i feu clic al botó "+".

Seleccioneu el fitxer de programa que voleu ofuscar. Les aplicacions escrites en el .NET Framework sovint han ofuscat .exe, però en .NET i .NET Core, els programes sovint són .dll entitats. Les aplicacions NET WPF també tindran entitats .dll, així que trieu .dll.

S'afegirà a la llista. Si consta de múltiples DLLs, afegiu-ne més d'un.

Després d'afegir el fitxer de destinació, feu clic al botó "Construeix" de la barra d'eines.

Se us demanarà on desar el fitxer de projecte ofuscat, així que especifiqueu-lo. La ubicació pot ser arbitrària, però també pot ser la ubicació de sortida d'un programa ofuscat. Desa la vostra entrada i obrirà aquest fitxer del projecte d'ofuscació si voleu ofuscar-lo de nou. L'ampliació és". xml".

Si la construcció s'ha iniciat i "La construcció completa" es mostra al missatge següent, indica la finalització correcta. La pantalla mostra el registre de compilació i una llista de classes i variables ofuscates.

Seleccioneu "Resultat" de la llista de l'esquerra per veure els detalls de com han canviat els noms de classe i mètode.

Els noms de classe i els noms de mètodes de l'arbre de la dreta, com ara "->", són els noms després de l'ofuscació. En canviar el nom de la classe o el nom del mètode a un nom sense sentit com aquest, podeu fer que el contingut del codi font sigui difícil de llegir encara que es desmunti.

Els programes ofuscats es desen en una carpeta anomenada "Dotfuscated" al lloc on heu desat el fitxer del projecte.

Map.xml és un fitxer de resultats d'ofuscació, de manera que podeu suprimir-lo amb seguretat.

Com que .NET 6.0 WPF no es pot iniciar només per una DLL, copieu "XXXX.exe" i "XXXX.runtimeconfig.json" generats en el moment de la sortida de la construcció a la mateixa carpeta i inicieu-la. Si es pot començar amb normalitat, de moment no hi ha cap problema. Si no podeu iniciar-lo, és possible que us faltin fitxers o que creeu un programa que es torni inconsistent a causa de l'ofuscació.

Si analitzeu el programa que realment s'ha ofuscat, veureu alguns rastres d'ofuscació. El primer full de la figura següent és abans de l'ofuscació, i el segon és després de l'ofuscació.

Tingueu en compte que els noms de classe definits a les biblioteques .NET no estan subjectes a canviar el nom perquè existeixen com a marc.

Aquesta vegada, he ofuscat el projecte per defecte creat tal com és, així que crec que hi ha una imatge que gairebé no està ofuscada, però crec que l'efecte de l'ofuscació es fa evident perquè com més gran sigui el projecte, més classes úniques augmentaran.

A més, tot i que aquesta vegada hem inclòs el procediment en la versió gratuïta, la versió de pagament permet una ofuscació més complexa i també evita el propi desmuntatge. No obstant això, l'ofuscació té diversos efectes adversos i potencial per ocórrer, de manera que quan es realitza l'ofuscació, cal fer-ho mentre es considera si funcionarà correctament des de l'inici del disseny.

Exclou l'ofuscació

Si teniu noms de classe o de propietat que no voleu ofuscar, podeu excloure'ls.

Mentre es carrega l'assemblat, seleccioneu Canvia el nom > Exclou des de la part esquerra de la pantalla. Com que es mostren els continguts del muntatge, comprovaré els que no vull ofuscar.

És possible excloure l'ofuscació a un nivell granular, però crec que és més fàcil ajustar-la en funció de l'espai de noms.

Mode biblioteca

Quan seleccioneu l'assemblat d'entrada, veureu que "Mode biblioteca" està marcat.

"Mode biblioteca" és adjuntar a DLL que poden ser cridats per altres programes. Si està marcada, les classes públiques i les propietats convocades per altres programes s'exclouen de l'ofuscació.

No obstant això, en general, és rar exposar una biblioteca que es diu generativament d'altres programes, i crec que sovint s'ofusca a aplicacions que funcionen soles, de manera que està bé eliminar bàsicament aquesta comprovació.

Ofuscació de .exe d'un sol fitxer (no confirmat)

Les investigacions sobre aquest element al Visual Studio 2022 no estan confirmades actualment.

Probablement serà ofuscació amb MSBuild, però ho poso en suspens a causa de la manca d'informació en aquest moment.