Hämärtää Dotfuscatorilla luotuja sovelluksia (Visaul Studio 2022 -versio)

Sivu päivitetty :
Sivun luontipäivämäärä :

yhteenveto

.NET-kehyssarjaan perustuvat sovellukset luodaan niin sanotulla yhteisellä välikielellä, joten ne voidaan lukea lähellä alkuperäistä lähdekoodia olevassa muodossa purkutyökalujen ja vastaavien avulla. Tässä osassa kuvataan, kuinka luokat ja menetelmien nimet voidaan hämärtää helposti lukukelvottomiksi muodoiksi käyttämällä Dotfuscatorin, Visual Studion mukana tulevan obfuscator-työkalun, ilmaista versiota.

Se on kuvattu Visual Studio 2022: lla, mutta sitä voidaan käyttää myös muissa Dotfuscator-versioissa.

Toimintaympäristö

Visuaalinen studio
  • Visual Studio 2022

Tietoja Dotfuscatorista

Dotfuscator on hämärtymistyökalu, joka vaikeuttaa lähdekoodin lukemista, kun se puretaan sovelluksiin, jotka on kirjoitettu .NET-kehysperheellä (jäljempänä .NET). Dotfuscatorin mukana tulee Visual Studio ilmaiseksi ja maksua vastaan.

Ilmainen versio ei ole käytettävissä, elleivät monet sen ominaisuuksista ole rajoitettuja tai Visual Studio on käynnistetty, mutta kuka tahansa voi käyttää sitä niin kauan kuin visual studio on asennettu. Maksullisessa versiossa on monia tehokkaita hämärtymisominaisuuksia, joita ei löydy ilmaisesta versiosta, mutta sitä tarjotaan hinnalla, johon suuren yleisön on vaikea olla varaa.

Dotfuscatorilla on erilaisia ominaisuuksia, hintoja ja versioita versiosta riippuen, joten katso lisätietoja seuraavalta kotisivulta.

Tietoja purkamisesta

Mainitsin aiemmin, että .NET:iin kirjoitetut sovellukset voivat helposti purkaa ja lukea alkuperäisen lähdekoodin, mutta todellisuudessa tapahtuu, että jos purat .exe tiedoston (tai .dll-tiedoston) seuraavan kuvan mukaisesti, voit melkein toistaa alkuperäisen lähdekoodin, kuten nimiavaruuden, luokan nimen, menetelmän nimen jne.

Ohjelmien tyypit, jotka tulisi hämärtää

Se koskee pääasiassa ohjelmia, joita jaetaan ja suoritetaan määrittelemättömille käyttäjille. Esimerkiksi työpöytäsovellukset. Päinvastoin, verkkosovellukset, joilla on vaikeuksia käyttää ohjelmatiedostoja suoraan, ovat vähemmän tärkeitä hämärtymiselle.

Tällä kertaa tarkastelemme projektia WPF: ssä, työpöytäsovelluksessa.

Dotfuscatorin asentaminen

Tämän sovelluksen mukana tulee Visual Studio 2022, mutta se ei sisälly vakioasennukseen (joissakin aiemmissa Visual Studiosissa se voidaan asentaa tyhjästä).

Dotfuscatorin lisääminen: Käynnistä Visaul Studio ja valitse Hanki työkalut ja ominaisuudet työkaluista.

Valitse yllä olevasta välilehdestä "Yksittäiset komponentit", valitse "Code Tools" -ryhmästä "PreEmptive Protection - Dotfuscator" ja napsauta oikeassa alakulmassa olevaa Asenna-painiketta. Kun teet niin, sulje Visual Studio -konsoli.

Hämärtymismenettely

Kuvaa vaiheet, joilla nämä nimet ovat hämmentäviä ja hämärtyneitä.

Luo sovellus Visual Studiossa, luo .exe tiedosto ja napsauta sitten . Luo dll-tiedosto. Toistaiseksi tämä on sama kuin tavallisen sovelluksen luominen. Luomasi sovelluksen tulee olla tarkoitettu julkaisuversiossa luoduille. (Koska et yleensä julkaise Debugissa.)

Kun olet luonut .exe tai .dll, valitse Visual Studio -valikosta Työkalut ja valitse sitten PreEmptive Protection - Dotfuscator Community( PreEmptive Protection - Dotfuscator Community).

Rekisteröintinäyttö tulee näkyviin, mutta sitä ei vaadita, joten jos se on tarpeetonta, napsauta peruuta-painiketta sellaisenaan.

Pysy ja napsauta OK painiketta.

Dotfuscator käynnistyy. Sovellus toimii yksinään, joten voit hämärtää tiedostoja, jotka eivät ole merkityksellisiä tällä hetkellä avoimessa projektissa. (Itse sovelluksen ilmaisen version tapauksessa oletetaan, että Visual Studio on käynnistetty.) )

Tässä artikkelissa peitän .NET 6.0 WPF -sovellusprojektin, joka on rakennettu oletuksena näytteenä.

Valitse vasemmalla olevasta luettelosta "Input" ja napsauta "+" -painiketta.

Valitse ohjelmatiedosto, jonka haluat hämärtää. .NET Frameworkissa kirjoitetut sovellukset ovat usein hämärtäneet .exe, mutta .NET- ja .NET Core -ohjelmissa ohjelmat ovat usein .dll entiteettejä. NET WPF -sovelluksissa on myös .dll entiteettejä, joten valitse .dll.

Se lisätään luetteloon. Jos se koostuu useista DLL-tiedostoista, lisää useampi kuin yksi.

Kun olet lisännyt kohdetiedoston, napsauta työkalurivin "Rakenna" -painiketta.

Sinulta kysytään, mihin obfuskoitu projektitiedosto tallennetaan, joten määritä se. Sijainti voi olla mielivaltainen, mutta se voi olla myös obfuskoidun ohjelman lähtöpaikka. Se tallentaa syötteesi ja avaa tämän hämärtymisprojektitiedoston, jos haluat hämärtää sen uudelleen. Laajennus on ". xml".

Jos koontiversio on alkanut ja "Rakenna valmis" näkyy alla olevassa viestissä, se osoittaa onnistuneen valmistumisen. Näytössä näkyy koontiversion loki ja luettelo hämärtyneistä luokista ja muuttujista.

Valitse vasemmalla olevasta luettelosta "Tulos", niin näet yksityiskohtaiset tiedot siitä, miten luokan ja menetelmien nimet ovat muuttuneet.

Oikealla olevassa puussa olevat luokkien nimet ja menetelmien nimet, kuten "->", ovat nimiä hämärtymisen jälkeen. Muuttamalla luokan nimen tai menetelmän nimen tällaiseksi merkityksettömäksi nimeksi voit vaikeuttaa lähdekoodin sisällön lukemista, vaikka se purettaisiin.

Obfuskoidut ohjelmat tallennetaan kansioon nimeltä "Dotfuscated" paikassa, johon tallensit projektitiedoston.

Kartta.xml on hämärtymistulostiedosto, joten voit poistaa sen turvallisesti.

Koska .NET 6.0 WPF: ää ei voi käynnistää pelkästään DLL: llä, kopioi "XXXX.exe" ja "XXXX.runtimeconfig.json", jotka luotiin rakennuslähdön aikana samaan kansioon, ja käynnistä se. Jos voit aloittaa normaalisti, toistaiseksi ei ole mitään ongelmaa. Jos et voi käynnistää sitä, sinulta saattaa puuttua tiedostoja tai saatat olla luomassa ohjelmaa, josta tulee epäjohdonmukainen hämärtymisen vuoksi.

Jos analysoit ohjelmaa, joka on todella hämärtynyt, näet joitain jälkiä hämärtymisestä. Alla olevan kuvan ensimmäinen arkki on ennen hämärtymistä, ja toinen on hämärtymisen jälkeen.

Huomaa, että .NET-kirjastoissa määritettyjä luokkien nimiä ei nimetä uudelleen, koska ne ovat olemassa kehyksenä.

Tällä kertaa hämärsin sellaisenaan luodun oletusprojektin, joten luulen, että on olemassa kuva, jota ei melkein ole hämärtynyt, mutta luulen, että hämärtymisen vaikutus tulee selväksi, koska mitä suurempi projekti on, sitä ainutlaatuisemmat luokat kasvavat.

Lisäksi, vaikka olemme sisällyttäneet menettelyn tällä kertaa ilmaiseen versioon, maksettu versio mahdollistaa monimutkaisemman hämärtymisen ja estää myös itse purkamisen. Hämärtymisellä on kuitenkin erilaisia haitallisia vaikutuksia ja mahdollisuuksia esiintyä, joten kun hämärtyminen suoritetaan, on tarpeen tehdä se harkiten, toimiiko se oikein suunnittelun alusta alkaen.

Sulje pois hämärtyminen

Jos sinulla on luokkien tai kiinteistöjen nimiä, joita et halua hämärtää, voit sulkea ne pois.

Kun kokoonpano on ladattu, valitse näytön vasemmasta reunasta Nimeä uudelleen > Sulje pois. Koska kokoonpanon sisältö on näkyvissä, tarkistan ne, joita en halua hämärtää.

Hämärtyminen on mahdollista sulkea pois rakeisella tasolla, mutta mielestäni sitä on helpompi säätää nimiavaruuden perusteella.

Kirjaston tila

Kun valitset tulokokoonpanon, näet, että "Kirjastotila" on valittuna.

"Kirjastotila" on liittää DLL-tiedostoihin, joita muut ohjelmat voivat kutsua. Jos se tarkistetaan, muiden ohjelmien kutsumat julkiset luokat ja ominaisuudet eivät kuulu hämärtymiseen.

Yleensä on kuitenkin harvinaista paljastaa kirjasto, jota kutsutaan generatiivisesti muista ohjelmista, ja mielestäni se on usein hämärtynyt sovelluksiin, jotka toimivat yksin, joten on okei periaatteessa poistaa tämä tarkistus.

Yhden tiedoston .exe hämärtyminen (vahvistamaton)

Tämän kohteen tutkimuksia Visual Studio 2022:ssa ei ole tällä hetkellä vahvistettu.

Se on todennäköisesti hämärtymistä MSBuildin kanssa, mutta laitan sen pitoon, koska tällä hetkellä ei ole tietoa.