Užmaskuoti programas, sukurtas naudojant "Dotfuscator" ("Visaul Studio 2022" versija)
suvestinė
Programos, pagrįstos .NET sistemų serija, yra sukurtos vadinamąja bendra tarpine kalba, todėl jas galima perskaityti forma, artima pradiniam šaltinio kodui, naudojant išmontavimo įrankius ir pan. Šiame skyriuje aprašoma, kaip užmaskuoti klases ir metodų pavadinimus į lengvai neįskaitomus formatus naudojant nemokamą "Dotfuscator" versiją, obfuskatoriaus įrankį, kuris pateikiamas kartu su "Visual Studio".
Jis aprašytas naudojant "Visual Studio 2022", tačiau jis taip pat gali būti naudojamas kitose "Dotfuscator" versijose.
Darbinė aplinka
- "Visual Studio"
-
- "Visual Studio 2022"
Apie "Dotfuscator"
"Dotfuscator" yra užmaskavimo įrankis, dėl kurio šaltinio kodą sunku perskaityti, kai jis išardomas programoms, parašytoms naudojant .NET sistemų šeimą (toliau – .NET). "Dotfuscator" su "Visual Studio" pateikiama nemokamai ir už tam tikrą mokestį.
Nemokama versija nepasiekiama, nebent daugelis jos funkcijų yra ribotos arba paleista "Visual Studio", tačiau bet kas gali ja naudotis, jei tik yra įdiegta "Visual Studio". Mokama versija turi daug galingų užmaskavimo funkcijų, kurių nėra nemokamoje versijoje, tačiau ji siūloma už kainą, kurią plačiajai visuomenei sunku sau leisti.
"Dotfuscator" turi skirtingas funkcijas, kainas ir leidimus, priklausomai nuo versijos, todėl išsamesnės informacijos ieškokite šiame pagrindiniame puslapyje.
Apie išmontavimą
Anksčiau minėjau, kad programos, parašytos .NET, gali lengvai išardyti ir perskaityti pradinį šaltinio kodą, tačiau iš tikrųjų tai, kas vyksta, yra tai, kad jei išardysite .exe failą (arba .dll failą), kaip parodyta kitame paveikslėlyje, galite beveik atkurti pradinį šaltinio kodą, pvz., Vardų sritį, klasės pavadinimą, metodo pavadinimą ir kt.
Programų tipai, kurie turėtų būti užmaskuoti
Tai daugiausia taikoma programoms, kurios yra platinamos ir vykdomos nenurodytiems vartotojams. Pavyzdžiui, darbalaukio programos. Ir atvirkščiai, žiniatinklio programos, kurioms sunku tiesiogiai pasiekti programos failus, yra mažiau svarbios užmaskavimui.
Šį kartą žiūrime į projektą WPF, darbalaukio programoje.
"Dotfuscator" diegimas
Ši programa pateikiama su "Visual Studio 2022", tačiau nėra įtraukta į standartinį diegimą (kai kuriose ankstesnėse "Visual Studios" ji gali būti įdiegta nuo nulio).
Norėdami įtraukti "Dotfuscator": Paleiskite "Visaul Studio" ir pasirinkite Gauti įrankius ir funkcijas iš įrankių.
Iš aukščiau esančio skirtuko pasirinkite "Individualūs komponentai", grupėje "Kodo įrankiai" pažymėkite "PreEmptive Protection - Dotfuscator" ir apatiniame dešiniajame kampe spustelėkite mygtuką Įdiegti. Tai darydami uždarykite "Visual Studio" konsolę.
Užmaskavimo procedūra
Aprašomi veiksmai, kaip padaryti šiuos pavadinimus painius ir užmaskuotus.
Sukurkite programą "Visual Studio", sukurkite .exe failą, tada spustelėkite . Sukurkite dll failą. Kol kas tai yra tas pats, kas sukurti įprastą programą. Jūsų sukurta programa turėtų būti skirta tiems, kurie sukurti leidimo versijoje. (Nes paprastai neskelbiate "Debug".)
Sukūrę .exe arba .dll, "Visual Studio" meniu pasirinkite Įrankiai, tada pasirinkite PreEmptive Protection – Dotfuscator Community.
Rodomas registracijos ekranas, tačiau jis nereikalingas, todėl, jei jis nereikalingas, spustelėkite atšaukimo mygtuką tokį, koks jis yra.
Likite ir spustelėkite mygtuką Gerai (OK).
Prasideda dotfuscator. Programa veikia savaime, todėl galite užmaskuoti failus, kurie nėra susiję su šiuo metu atidarytu projektu. (Pačios nemokamos programos versijos atveju daroma prielaida, kad paleidžiama "Visual Studio".) )
Šiame straipsnyje kaip pavyzdį užmaskuosiu .NET 6.0 WPF programos projektą, sukurtą su numatytaisiais nustatymais.
Kairėje esančiame sąraše pasirinkite "Įvestis" ir spustelėkite mygtuką "+".
Pasirinkite programos failą, kurį norite užmaskuoti. Programos, parašytos ".NET Framework", dažnai užmaskavo .exe, tačiau .NET ir .NET Core programos dažnai yra .dll objektus. NET WPF programos taip pat turės .dll objektus, todėl pasirinkite .dll.
Jis bus įtrauktas į sąrašą. Jei jį sudaro keli DLL, pridėkite daugiau nei vieną.
Pridėję tikslinį failą, įrankių juostoje spustelėkite mygtuką "Kurti".
Jūsų bus paklausta, kur išsaugoti užmaskuotą projekto failą, todėl nurodykite jį. Vieta gali būti savavališka, tačiau tai taip pat gali būti užmaskuotos programos išvesties vieta. Jis išsaugo jūsų įvestį ir atidarys šį užmaskavimo projekto failą, jei norite jį vėl užmaskuoti. Pratęsimas yra ". xml".
Jei versija prasidėjo ir toliau pateiktame pranešime rodoma "Statyti baigta", tai rodo sėkmingą užbaigimą. Ekrane rodomas kūrimo žurnalas ir užmaskuotų klasių bei kintamųjų sąrašas.
Kairėje esančiame sąraše pasirinkite "Rezultatas", kad pamatytumėte išsamią informaciją apie tai, kaip pasikeitė klasių ir metodų pavadinimai.
Klasių pavadinimai ir metodų pavadinimai medyje dešinėje, pvz., "->", yra pavadinimai po užmaskavimo. Pakeitę klasės pavadinimą ar metodo pavadinimą į tokį beprasmį pavadinimą, galite padaryti šaltinio kodo turinį sunkiai skaitomą, net jei jis yra išardytas.
Užmaskuotos programos išsaugomos aplanke pavadinimu "Dotfuscated" toje vietoje, kur įrašėte projekto failą.
Map.xml yra užmaskavimo rezultato failas, todėl galite jį saugiai ištrinti.
Kadangi .NET 6.0 WPF negalima paleisti vien tik DLL, nukopijuokite "XXXX.exe" ir "XXXX.runtimeconfig.json", sugeneruotus kuriant išvestį į tą patį aplanką, ir paleiskite jį. Jei galite pradėti normaliai, kol kas nėra jokių problemų. Jei negalite jo paleisti, gali trūkti failų arba gali būti, kad kuriate programą, kuri tampa nenuosekli dėl užmaskavimo.
Jei analizuosite programą, kuri iš tikrųjų buvo užmaskuota, pamatysite keletą užmaskavimo pėdsakų. Pirmasis žemiau esančio paveikslo lapas yra prieš užmaskavimą, o antrasis - po užmaskavimo.
Atkreipkite dėmesį, kad .NET bibliotekose apibrėžti klasių pavadinimai nepervadinami, nes jie egzistuoja kaip sistema.
Šį kartą užmaskavau numatytąjį projektą, sukurtą tokį, koks jis yra, todėl manau, kad yra vaizdas, kuris beveik nėra užmaskuotas, bet manau, kad užmaskavimo poveikis tampa aiškus, nes kuo didesnis projektas, tuo unikalesnės klasės padidės.
Be to, nors šį kartą įtraukėme procedūrą į nemokamą versiją, mokama versija leidžia sudėtingiau užmaskuoti ir taip pat apsaugo nuo paties išmontavimo. Tačiau užmaskavimas turi įvairių neigiamų padarinių ir gali atsirasti, todėl, atliekant užmaskavimą, būtina tai padaryti, atsižvelgiant į tai, ar jis veiks tinkamai nuo pat dizaino pradžios.
Neįtraukite užmaskavimo
Jei turite klasių ar ypatybių pavadinimus, kurių nenorite užmaskuoti, galite juos išskirti.
Kai surinkimas įkeliamas, kairėje ekrano pusėje pasirinkite Pervardyti > Išskirti. Kadangi rodomas surinkimo turinys, patikrinsiu tuos, kurių nenoriu užmaskuoti.
Galima atmesti užmaskavimą detaliu lygiu, tačiau manau, kad lengviau jį koreguoti vardų erdvės pagrindu.
Bibliotekos režimas
Pasirinkę įvesties rinkinį, matote, kad pažymėtas "Bibliotekos režimas".
"Bibliotekos režimas" yra prijungti prie DLL, kuriuos gali iškviesti kitos programos. Jei tikrinama, viešos klasės ir savybės, kurias vadina kitos programos, neįtraukiamos į užmaskavimą.
Tačiau apskritai retai galima atskleisti biblioteką, kuri iš kitų programų vadinama generatyvine, ir manau, kad ji dažnai užmaskuojama programoms, kurios veikia atskirai, todėl iš esmės galima pašalinti šį patikrinimą.
Vieno failo .exe užmaskavimas (nepatvirtintas)
Šio elemento tyrimai "Visual Studio 2022" šiuo metu nepatvirtinti.
Tai tikriausiai bus MSBuild užmaskavimas, bet aš jį atidedu, nes šiuo metu trūksta informacijos.