Neskaidras lietojumprogrammas, kas izveidotas, izmantojot Dotfuscator (Visaul Studio 2022 versija)
Kopsavilkuma
Lietojumprogrammas, kuru pamatā ir .NET ietvaru sērija, tiek veidotas tā sauktajā kopējā starpvalodā, lai tās varētu lasīt formā, kas ir tuvu sākotnējam pirmkodam, izmantojot demontāžas rīkus un tamlīdzīgi. Šajā sadaļā ir aprakstīts, kā aizsegt klašu un metožu nosaukumus viegli nesalasāmos formātos, izmantojot Dotfuscator bezmaksas versiju, kas ir aizsegtāja rīku, kas tiek piegādāts kopā ar Visual Studio.
Tas ir aprakstīts, izmantojot Visual Studio 2022, taču to var izmantot arī citās Dotfuscator versijās.
Darbības vide
- Vizuālā studija
-
- Visual Studio 2022
Par Dotfuscator
Dotfuscator ir aizsegšanas rīks, kas padara pirmkodu grūti lasāmu, kad tas tiek izjaukts lietojumprogrammām, kas rakstītas ar .NET ietvaru saimi (turpmāk tekstā .NET). Dotfuscator nāk ar Visual Studio bez maksas un par maksu.
Bezmaksas versija nav pieejama, ja vien daudzas no tās funkcijām nav ierobežotas vai nav startēts Visual Studio, taču ikviens to var izmantot, ja vien ir instalēta Visual Studio. Maksas versijai ir daudz spēcīgu aizklāšanas funkciju, kas nav atrodamas bezmaksas versijā, taču tā tiek piedāvāta par cenu, kuru plašai sabiedrībai ir grūti atļauties.
Dotfuscator ir dažādas funkcijas, cenas un izdevumi atkarībā no versijas, tāpēc, lūdzu, skatiet šo sākumlapu, lai iegūtu sīkāku informāciju.
Par demontāžu
Es jau iepriekš minēju, ka .NET rakstītās lietojumprogrammas var viegli izjaukt un lasīt sākotnējo pirmkodu, bet tas, kas faktiski notiek, ir tas, ka, izjaucot .exe failu (vai .dll failu), kā parādīts nākamajā attēlā, jūs varat gandrīz reproducēt sākotnējo pirmkodu, piemēram, nosaukumvietu, klases nosaukumu, metodes nosaukumu utt.
Programmu veidi, kas būtu jāapslēpj
Tas galvenokārt attiecas uz programmām, kas tiek izplatītas un darbojas nenoteiktiem lietotājiem. Piemēram, darbvirsmas lietojumprogrammas. Un otrādi, Web lietojumprogrammas, kurām ir grūtības tieši piekļūt programmu failiem, ir mazāk svarīgas, lai apslēptu.
Šoreiz mēs skatāmies uz projektu WPF, kas ir darbvirsmas lietojumprogramma.
Dotfuscator instalēšana
Šī lietojumprogramma ir iekļauta Visual Studio 2022, taču tā nav iekļauta standarta instalācijā (dažās iepriekšējās Visual Studios versijās tā var būt instalēta no nulles).
Lai pievienotu Dotfuscator: Startējiet programmu Visaul Studio un atlasiet Rīku un funkciju iegūšana no rīkiem.
Iepriekš redzamajā cilnē atlasiet "Atsevišķi komponenti", grupā "Koda rīki" pārbaudiet "PreEmptive Protection - Dotfuscator" un apakšējā labajā stūrī noklikšķiniet uz pogas Instalēt. To darot, aizveriet Visual Studio konsoli.
Apmulsināšanas procedūra
Aprakstītas darbības, kas jāveic, lai padarītu šos vārdus mulsinošus un neskaidrus.
Izveidojiet lietojumprogrammu programmā Visual Studio, izveidojiet .exe failu un pēc tam noklikšķiniet uz . Izveidojiet dll failu. Līdz šim tas ir tas pats, kas izveidot regulāru lietojumprogrammu. Jūsu izveidotajai programmai ir jābūt paredzētai tiem, kas izveidoti laidiena būvējumā. (Tāpēc, ka jūs parasti nepublicējat Debug.)
Kad esat izveidojis .exe vai .dll, Visual Studio izvēlnē atlasiet Rīki un pēc tam izvēlieties PreEmptive Protection - Dotfuscator Community.
Tiek parādīts reģistrācijas ekrāns, taču tas nav nepieciešams, tādēļ, ja tas nav nepieciešams, noklikšķiniet uz atcelšanas pogas, kāda tā ir.
Palieciet un noklikšķiniet uz pogas Labi.
Sākas dotfuscator. Lietojumprogramma darbojas atsevišķi, tāpēc varat aizsegt failus, kas neattiecas uz pašlaik atvērto projektu. (Pašas lietojumprogrammas bezmaksas versijas gadījumā tiek pieņemts, ka tiek sākta Visual Studio.) )
Šajā rakstā es aizēnošu .NET 6.0 WPF lietojumprogrammas projektu, kas veidots ar noklusējumiem kā paraugu.
Kreisajā pusē esošajā sarakstā atlasiet "Ievade" un noklikšķiniet uz pogas "+".
Atlasiet programmas failu, kuru vēlaties aizsegt. .NET Framework rakstītās lietojumprogrammas bieži ir apslēptas .exe, taču .NET un .NET Core programmās bieži tiek .dll entītijas. NET WPF lietojumprogrammām būs arī .dll entītijas, tāpēc izvēlieties .dll.
Tas tiks pievienots sarakstam. Ja tas sastāv no vairākiem DLL, pievienojiet vairāk nekā vienu.
Pēc mērķa faila pievienošanas rīkjoslā noklikšķiniet uz pogas "Veidot".
Jums tiks jautāts, kur saglabāt neskaidro projekta failu, tāpēc norādiet to. Atrašanās vieta var būt patvaļīga, bet tā var būt arī neskaidras programmas izejas vieta. Tas saglabā jūsu ievadi un atvērs šo aizklāšanas projekta failu, ja vēlaties to vēlreiz aizklāt. Paplašinājums ir ". xml".
Ja būvējums ir sācies un zemāk esošajā ziņojumā tiek parādīts uzraksts "Būvniecība pabeigta", tas norāda uz veiksmīgu pabeigšanu. Ekrānā tiek parādīts būvēšanas žurnāls un neskaidro klašu un mainīgo saraksts.
Kreisajā pusē esošajā sarakstā atlasiet "Rezultāts", lai skatītu detalizētu informāciju par to, kā ir mainījušies klašu un metožu nosaukumi.
Klašu nosaukumi un metožu nosaukumi kokā labajā pusē, piemēram, "->", ir nosaukumi pēc aizsegšanas. Mainot klases nosaukumu vai metodes nosaukumu uz šādu bezjēdzīgu vārdu, jūs varat apgrūtināt avota koda satura nolasīšanu pat tad, ja tas ir izjaukts.
Neskaidrās programmas tiek saglabātas mapē ar nosaukumu "Dotfuscated" vietā, kur saglabājāt projekta failu.
Karte.xml ir aizklāšanas rezultātu fails, lai to varētu droši izdzēst.
Tā kā .NET 6.0 WPF nevar startēt tikai ar DLL, kopējiet "XXXX.exe" un "XXXX.runtimeconfig.json", kas ģenerēti veidošanas izvades laikā, uz to pašu mapi un sāciet to. Ja jūs varat sākt normāli, pagaidām nav problēmu. Ja nevarat to startēt, iespējams, trūkst failu vai izveidojat programmu, kas kļūst nekonsekventa aizsegšanas dēļ.
Ja jūs analizējat programmu, kas faktiski ir apslēpta, jūs redzēsiet dažas neskaidrības pēdas. Zemāk redzamās attēla pirmā lapa ir pirms aptumšošanas, bet otrā - pēc aizklāšanas.
Ņemiet vērā, ka .NET bibliotēkās definētie klašu nosaukumi netiek pārdēvēti, jo tie pastāv kā ietvars.
Šoreiz es aizsedzu noklusējuma projektu, kas izveidots tāds, kāds tas ir, tāpēc es domāju, ka ir attēls, kas gandrīz nav apslēpts, bet es domāju, ka aizsegšanas efekts kļūst skaidrs, jo jo lielāks projekts, jo unikālākas klases palielināsies.
Turklāt, lai gan šoreiz mēs esam iekļāvuši procedūru bezmaksas versijā, apmaksātā versija ļauj veikt sarežģītāku aizklāšanu, kā arī novērš demontāžu. Tomēr aizklāšanai ir dažādas nelabvēlīgas sekas un potenciāls rasties, tāpēc, veicot aizklāšanu, tas ir jādara, apsverot, vai tas darbosies pareizi no dizaina sākuma.
Izslēdziet apmulsumu
Ja jums ir klases vai īpašuma nosaukumi, kurus nevēlaties aizsegt, varat tos izslēgt.
Kamēr montāža ir ielādēta, ekrāna kreisajā pusē atlasiet Pārdēvēt > Izslēgt. Tā kā tiek parādīts montāžas saturs, es pārbaudīšu tos, kurus es nevēlos apslēpt.
Ir iespējams izslēgt aizklāšanu granulētā līmenī, bet es domāju, ka to ir vieglāk pielāgot, pamatojoties uz nosaukumvietu.
Bibliotēkas režīms
Izvēloties ievades komplektu, var redzēt, ka ir atzīmēts "Bibliotēkas režīms".
"Bibliotēkas režīms" ir jāpievieno DLL, ko var izsaukt citas programmas. Ja to pārbauda, publiskās klases un īpašumi, ko sauc par citām programmām, tiek izslēgti no aizklāšanas.
Tomēr kopumā ir reti sastopams bibliotēku, ko sauc par ģeneratīvu no citām programmām, un es domāju, ka tas bieži tiek aizēnots lietojumprogrammām, kas darbojas atsevišķi, tāpēc ir pareizi būtībā noņemt šo pārbaudi.
Viena faila .exe aizsegšana (neapstiprināta)
Izmeklēšana par šo vienumu Visual Studio 2022 pašlaik nav apstiprināta.
Tas, iespējams, būs apmulsums ar MSBuild, bet es to apturu, jo pašlaik trūkst informācijas.