A Dotfuscator használatával létrehozott alkalmazások elhomályosítása (Visaul Studio 2022-es verzió)

Oldal frissítve :
Oldal létrehozásának dátuma :

összefoglalás

A .NET keretrendszereken alapuló alkalmazások az úgynevezett közös köztes nyelven jönnek létre, így az eredeti forráskódhoz közeli formában olvashatók szétszerelési eszközök és hasonlók használatával. Ez a szakasz azt ismerteti, hogyan lehet az osztályokat és a metódusneveket könnyen olvashatatlan formátumokba homszálni a Dotfuscator, a Visual Studióhoz mellékelt obfuszkáló eszköz ingyenes verziójával.

Ezt a Visual Studio 2022 segítségével írják le, de a Dotfuscator más verzióiban is használható.

Működési környezet

Visual Stúdió
  • Visual Studio 2022

A Dotfuscator-ról

A Dotfuscator egy olyan ködösítő eszköz, amely megnehezíti a forráskód olvasását, ha szétszerelik a .NET keretrendszercsaláddal (a továbbiakban: .NET) írt alkalmazások esetében. A Dotfuscator ingyenesen és díj ellenében érkezik a Visual Studióval.

Az ingyenes verzió csak akkor érhető el, ha számos funkciója korlátozott, vagy a Visual Studio elindul, de bárki használhatja, amíg telepítve van a Visual Studio. A fizetős verzió számos erőteljes ködösítő funkcióval rendelkezik, amelyek nem találhatók meg az ingyenes verzióban, de olyan áron kínálják, amelyet a nagyközönség nehezen engedhet meg magának.

A Dotfuscator a verziótól függően különböző funkciókkal, árakkal és kiadásokkal rendelkezik, ezért kérjük, olvassa el a következő weboldalt a részletekért.

A szétszerelésről

Korábban említettem, hogy a .NET-ben írt alkalmazások könnyen szétszerelhetik és elolvashatják az eredeti forráskódot, de valójában az történik, hogy ha szétszerelünk egy .exe fájlt (vagy .dll fájlt), ahogy az a következő ábrán látható, akkor szinte reprodukálhatja az eredeti forráskódot, például a névteret, az osztálynevet, a metódus nevét stb.

A ködösítendő programok típusai

Ez elsősorban azokra a programokra vonatkozik, amelyeket nem meghatározott felhasználók számára terjesztenek és futtatnak. Például asztali alkalmazások. Ezzel szemben azok a webalkalmazások, amelyek nehezen férnek hozzá közvetlenül a programfájlokhoz, kevésbé fontosak az elhomályosítás szempontjából.

Ezúttal egy projektet nézünk a WPF-ben, egy asztali alkalmazásban.

A Dotfuscator telepítése

Ez az alkalmazás a Visual Studio 2022-vel érkezik, de nem szerepel a szabványos telepítésben (néhány korábbi Visual Studiosban előfordulhat, hogy a semmiből telepítik).

Dotfuscator hozzáadása: Indítsa el a Visaul Studiót, és válassza az Eszközök és funkciók beszerzése lehetőséget az Eszközökből.

Válassza az "Egyes összetevők" lehetőséget a fenti fülről, jelölje be a "PreEmptive Protection - Dotfuscator" elemet a "Kódeszközök" csoportban, majd kattintson a jobb alsó sarokban található Telepítés gombra. Ennek során zárja be a Visual Studio konzolt.

Elhomályosítási eljárás

Leírja azokat a lépéseket, amelyek miatt ezek a nevek zavarosak és homályosak lehetnek.

Hozzon létre egy alkalmazást a Visual Studióban, hozzon létre .exe fájlt, majd kattintson a . Hozzon létre egy dll fájlt. Eddig ez ugyanaz, mint egy normál alkalmazás létrehozása. A létrehozott alkalmazásnak a kiadási buildben létrehozottaknak kell lennie. (Mert általában nem tesz közzé tartalmat a Debugban.)

Miután létrehozta .exe vagy .dll, válassza az Eszközök lehetőséget a Visual Studio menüjében, majd válassza a PreEmptive Protection – Dotfuscator Community lehetőséget.

Megjelenik a regisztrációs képernyő, de nem szükséges, ezért ha felesleges, kattintson a mégse gombra úgy, ahogy van.

Maradjon, és kattintson a gombra OK gombot.

Elindul a Dotfuscator. Az alkalmazás önmagában működik, így elhomályosíthatja azokat a fájlokat, amelyek nem relevánsak a jelenleg megnyitott projekt szempontjából. (Magának az alkalmazásnak az ingyenes verziója esetén feltételezzük, hogy a Visual Studio elindult.) )

Ebben a cikkben egy .NET 6.0 WPF alkalmazásprojektet fogok elhomályosítani, amely alapértelmezésekkel készült mintaként.

Válassza a "Bemenet" lehetőséget a bal oldali listából, majd kattintson a "+" gombra.

Válassza ki az elhomályosítani kívánt programfájlt. NET-keretrendszerben írt alkalmazások gyakran elhomályosították a .exe, de a .NET-ben és a .NET Core-ban a programok gyakran .dll entitások. NET WPF alkalmazások .dll entitásokkal is rendelkeznek, ezért válassza a .dll.

Ez hozzáadódik a listához. Ha több DLL-ből áll, adjon hozzá egynél több DLL-t.

A célfájl hozzáadása után kattintson az eszköztár "Build" gombjára.

A rendszer megkérdezi, hogy hová mentse az elhomályosított projektfájlt, ezért adja meg. A hely lehet tetszőleges, de lehet egy homályos program kimeneti helye is. Elmenti a bemenetet, és megnyitja ezt az obfuszkációs projektfájlt, ha újra el akarja takarni. A kiterjesztés ". xml".

Ha a build elindult, és az alábbi üzenetben megjelenik a "Build completed" felirat, az a sikeres befejezést jelzi. A képernyőn megjelenik a buildnapló, valamint az elhomályosított osztályok és változók listája.

A bal oldali listából válassza az "Eredmény" lehetőséget, hogy megtekinthesse az osztály- és metódusnevek változásának részleteit.

Az osztálynevek és a módszernevek a jobb oldali fában, például "->", az elhomályosítás utáni nevek. Ha az osztály nevét vagy a metódus nevét egy ilyen értelmetlen névre változtatja, akkor a forráskód tartalmát akkor is megnehezítheti az olvasás, ha szétszerelik.

Az obfuszkált programok a "Dotfuscated" nevű mappába kerülnek a projektfájl mentési helyén.

A Map.xml egy ködösítési eredményfájl, így biztonságosan törölheti.

Mivel a .NET 6.0 WPF-et nem lehet csak DLL-fájllal elindítani, másolja a build kimenetekor létrehozott "XXXX.exe" és "XXXX.runtimeconfig.json" fájlt ugyanabba a mappába, és indítsa el. Ha normálisan el tudod kezdeni, egyelőre nincs probléma. Ha nem tudja elindítani, akkor lehet, hogy hiányoznak a fájlok, vagy olyan programot hoz létre, amely az elhomályosítás miatt következetlenné válik.

Ha elemzi a programot, amelyet ténylegesen elhomályosítottak, látni fogja az elhomályosítás néhány nyomát. Az alábbi ábra első lapja az elhomályosítás előtt van, a második pedig az elhomályosítás után.

Vegye figyelembe, hogy NET-kódtárakban definiált osztálynevekre nem vonatkozik az átnevezés, mert keretrendszerként léteznek.

Ezúttal elhomályosítottam az alapértelmezett projektet, ahogy van, ezért úgy gondolom, hogy van egy kép, amely szinte nem homályos, de úgy gondolom, hogy az elhomályosítás hatása világossá válik, mert minél nagyobb a projekt, annál egyedibb osztályok fognak növekedni.

Továbbá, bár ezúttal az eljárást az ingyenes verzióba foglaltuk, a fizetős verzió lehetővé teszi a bonyolultabb ködösítést, és megakadályozza magát a szétszerelést is. Az elhomályosításnak azonban különböző káros hatásai vannak, és előfordulhat, így amikor az elhomályosítást végzik, azt meg kell tenni, miközben figyelembe vesszük, hogy a tervezés kezdetétől megfelelően fog-e működni.

Az elhomályosítás kizárása

Ha olyan osztály- vagy tulajdonságnevei vannak, amelyeket nem szeretne elhomályosítani, kizárhatja őket.

A szerelvény betöltése közben válassza az Átnevezés > kizárás lehetőséget a képernyő bal oldalán. Mivel a szerelvény tartalma megjelenik, ellenőrizni fogom azokat, amelyeket nem akarok elhomályosítani.

A ködösítést részletes szinten ki lehet zárni, de szerintem könnyebb névtér alapján beállítani.

Könyvtár mód

A bemeneti szerelvény kiválasztásakor láthatja, hogy a "Könyvtár mód" be van jelölve.

A "könyvtár mód" az, hogy olyan DLL-ekhez csatolja, amelyeket más programok is meghívhatnak. Ha be van jelölve, a nyilvános osztályok és a más programok által hívott tulajdonságok ki vannak zárva az elhomályosításból.

Általánosságban azonban ritkán lehet olyan könyvtárat kitenni, amelyet generatívan neveznek más programokból, és úgy gondolom, hogy gyakran elhomályosítják az egyedül működő alkalmazások számára, ezért nem baj, ha alapvetően eltávolítjuk ezt az ellenőrzést.

Az egyfájlos .exe elhallgatása (meg nem erősített)

A Visual Studio 2022-ben ennek a tételnek a vizsgálata jelenleg nem erősített meg.

Valószínűleg az MSBuild-tel való ködösítés lesz, de a jelenleg hiányzó információ miatt felfüggesztem.