Überprüfen von .NET Framework-Assemblys
Ich habe gerade unsere durchgesehendeutsche VB.NET Foren und es gab etwas Interessantes, das mir Kopfschmerzen bereitete.
Das ist tatsächlich möglichbearbeiten die .NET Framework-Assemblys mit ReflexIL oder einem anderen IL-Editor. Sie müssen nur die Signatur "Starker Name" der Assembly umgehen. Nach dem Ändern der Assembly IL müssen Sie ausführensn.exe -Vr [assemblyname]
um die starke Namensvalidierung zu überspringen. Danach müssen Sie die zwischengespeicherten nativen Bilder löschen. Gehen Sie einfach durch dieC:\Windows\assembly
Verzeichnis und löschen Sie jedes Bild in Bezug auf Ihre Baugruppe. Starten Sie dann neu. Wenn Sie angemeldet sind, führen Sie ausngen install [assemblyname]
. Jetzt dieNeu native Bilder werden generiert.
Das funktioniert. Ich habe diesen Vorgang in meiner virtuellen Umgebung (Windows XP x86) überprüft. Was mich am meisten beunruhigt, ist, dass Sie .NET leicht umgehen könnenVerifyHash
oderVerifyData
Methoden derRSACryptoServiceProvider
. Das funktioniert eigentlich auch. Ein Freund von mir und ich, die getestet wurden, konnten dieses Problem überprüfen (siehe Screenshots). Das war ziemlich einfach.
Wenn ich beispielsweise ein Lizenzsystem erstellen würde, das auf den .NET Framework-Kryptografieklassen basiert, könnte dies umgangen werdensystemweit zumjeden .NET-Anwendung auf dem System unter Verwendung des Frameworks. Auch jeder kannLog undVeränderung die eingabe von functios, die ich nur durch einbinden in die methoden aufrufe.
Nun ist meine Frage: Da dies ein großes Problem sein kann, wie kann ich etwas dagegen tun? Natürlich könnte ein böswilliger Benutzer nur bearbeitenmeine Anwendung, aber das wäre nicht so schlimm wie dies systemweit zu tun. Ich habe über eine Framework-Prüfsummenüberprüfung nachgedacht, aber da es für .NET Framework viele verschiedene Updates gibt, scheint dies unmöglich zu sein.
Irgendwelche Lösungen oder Vorschläge? Kümmert sich Microsoft in irgendeiner Weise um dieses Problem?