Kerülje az olyan szerelvények elhomályosítását, amelyek a Dotfuscator System.Xml névterében lévő osztályokat használnak, amelyek hibákat okozhatnak
A tünetek ellenőrzése
Hozzon létre egy új projektet. Ez lehet Windows Form vagy WPF, de itt létrehozunk egy WPF alkalmazást.
Írjon kódot a System.Xml névtérhez tartozó osztályok használatához. Itt az "XmlDocument" és az "XmlNode" osztályokat használjuk az alábbiak szerint.
using System.Windows;
using System.Xml;
namespace DotfuscatorTest
{
<summary>MainWindow.xaml の相互作用ロジック</;summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
XmlDocument doc = new XmlDocument();
doc.LoadXml("<a></a>");
XmlNode node = doc.FirstChild;
}
}
}
Az építés után válassza a "PreEmptive Dotfuscator and Analytics" lehetőséget a menüben található eszközök közül, és indítsa el.
Adja hozzá a létrehozott .exe fájlt, és hozza létre.
Ezután a következő hibaüzenet jelenik meg, és a build sikertelen lesz.
Ez nem felügyelt modul (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone71\ja\System.Xml.dll). Build hiba.
Megpróbáltam kideríteni, hogy mi okozza ezt a hibát, de nem találtam egyértelmű választ. Figyelembe véve, hogy az angol oldalon nincs információ, és hogy a System.Xml.dll elérési út "en" -vel rendelkezik, kitalálhatja, hogy ez egy egyedi hiba, amely nem más, mint az angol környezet.
Kerülő megoldás
Annak ellenére, hogy a projekt a System.Xml.dll Windows-ügyfélre hivatkozik, amikor a Dotfuscatorral épít, a Windows Phone System.Xml szerelvényére hivatkozik.dll ezért helyileg erőszakkal másoltuk a System.Xml fájlt.dll Szeretném elkerülni az építési hibákat azzal, hogy hivatkozom rá.
Nyissa meg a projekt referenciáit, kattintson a jobb gombbal a System.Xml fájlra, és válassza a Tulajdonságok parancsot.
Módosítsa a helyi példányban lévő elemet True (Igaz) értékre.
Ha ebben az állapotban épít, a "System.Xml.dll" a .exe fájllal együtt kerül kimenetre.
Nyissa meg a Dotfuscator alkalmazást, és adja hozzá a "System.Xml.dll" fájlt az elhomályosítani kívánt szerelvényhez. Ez elhomályosítja az összeszerelést, így az nem hivatkozik a telepített keretrendszer DLL-jére, és nem látja a helyi DLL-t.
Vegye figyelembe, hogy a System.Xml.dll tulajdonság ellenőrzi a Könyvtár módot. Ezen ellenőrzés nélkül előfordulhat, hogy a System.Xml.dll is elhomályosul, és az általa hivatkozott osztálynevek megváltozhatnak. Természetesen, ha az osztály neve megváltozik, akkor nem tudja normálisan elindítani az alkalmazást.
Ha ebben az állapotban építkezik, akkor sikeresen befejeződik.
Biztos lehet benne, hogy az elhomályosított alkalmazás problémamentesen indul el.
Az itt bemutatott tartalom kissé trükkös megoldás, így nem tudjuk garantálni, hogy még az ennek megfelelően felépített szerelvények esetében is hatékony lesz. Még akkor is, ha az összeállítás sikeres és elindítható, nem tagadható annak a lehetősége, hogy egy adott folyamat végrehajtásakor leesik, ezért kérjük, ellenőrizze megfelelően a műveletet a kiadás előtt.
Még ha nem is korlátozódik a System.Xml névtérre, az obfuszkáció érzékeny funkció, amelyet meg kell győződnie arról, hogy a konzisztencia megmarad. Különösen a reflexió használatakor az I/O-val kapcsolatos dolgok, például a fájl I/O-val és a külső API-kkal való interakció valószínűleg hatással lesz, ezért legyen óvatos.