Mittwoch, 23. Mai 2012


Artikel

Dezember 2009 | Artikel

Neues Bier in alten Kisten

(Link zum Artikel: http://www.entwickler.de/dotnet//002768)

Mobile Anwendungen für Windows ausliefern Teil 2

Text: von Tam Hanna
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share
Im ersten Teil des Artikels haben wir uns mit dem so genannten Kabinettdateiformat beschäftigt. Dabei haben wir uns auch damit befasst, wie man CAB-Dateien komfortabel mit Visual Studio 2005/2008 erstellt. Dies wird nun im zweiten Teil des Artikels vertieft.
Teil 1   Teil 2   

Nebelgranaten

Ein kleiner – aber mitunter wichtiger – Schritt ist die "Obfuscation" der entstehenden Assembly/Assemblies. Sie kann derzeit allerdings nicht automatisch erfolgen. Also muss sie von Hand aus vorgenommen werden.

Alle .NET-Sprachen werden zu einer gemeinsamen, CIL (ehemals MSIL) genannten Sprache kompiliert, die von der virtuellen Maschine ausgeführt wird. Leider lässt sich MSIL – mit relativ geringem Aufwand – in C#-Code umwandeln. Ein Obfuscator kann diesen Prozess zwar nicht verhindern, den Code jedoch so strukturieren, dass er – wenn dekompiliert – schwerer verständlich wird (beispielsweise können Variablennamen nach dem Schema a, b, c ,d gesetzt werden).
Bei der Obfuscation entpackt man das CAB File in einen separaten Ordner. Dann aktiviert man den mitgelieferten Obfuscator (STARTMENÜ | MICROSOFT VISUAL STUDIO 2005 | VISUAL STUDIO TOOLS | DOTFUSCATOR COMMUNITY EDITION). Nun lässt sich eine ganz besondere Funktion des Obfuscators nutzen: Er kann nämlich selbst erkennen, welche Dateien verarbeitbar sind und welche nicht. Deshalb fügt man einfach alle Dateien zum "Projekt" dazu, ignoriert eventuell aufpoppende Fehlermeldungen und startet den Prozess. Bricht dieser ab, entfernt man einfach die in der Konsolenausgabe monierte Datei (siehe Listing 3 – das Problemkind heißt DAQUPO~1.001).
  1. Saving Options...
  2. Loading Assemblies...
  3. Running C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\ildasm.exe /OUT="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~0DaquGU.0\0DaquGUI.005.il" /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /FORWARD "C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\DaquCab\0DaquGUI.005"
  4. Running C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\ildasm.exe /OUT="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~DAQUPO~.4\DAQUPO~1.001.il" /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /FORWARD "C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\DaquCab\DAQUPO~1.001"
  5. Running C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\ildasm.exe /OUT="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~DAQUPO~.5\DAQUPO~1.004.il" /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /FORWARD "C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\DaquCab\DAQUPO~1.004"
  6. Running C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\ildasm.exe /OUT="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~QUOTET~.2\QUOTET~1.002.il" /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /FORWARD "C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\DaquCab\QUOTET~1.002"
  7. Renaming...
  8. Writing map file to C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\Dotfuscated\Map.xml
  9. Writing Assemblies...
  10. Running C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe /OUTPUT="C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\Dotfuscated\0DaquGUI.005" /nologo /quiet /dll /resource="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~0DaquGU.0\0DaquGUI.005.res" "C:\Documents and Settings\TAMHAN\Local Settings\Temp\~0DaquGU.0\0DaquGUI.005.il"
  11. Running C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ilasm.exe /OUTPUT="C:\Documents and Settings\TAMHAN\Desktop\usbstick\em-boxes\decompresscab\Dotfuscated\DAQUPO~1.001" /nologo /quiet /dll /resource="C:\Documents and Settings\TAMHAN\Local Settings\Temp\~DAQUPO~.4\DAQUPO~1.001.res" "C:\Documents and Settings\TAMHAN\Local Settings\Temp\~DAQUPO~.4\DAQUPO~1.001.il"
  12. ilasm returned 1
  13. Build Error.

Danach holt man die bearbeiteten Dateien (Listing 4), kopiert sie in den Ordner mit dem CAB, wobei die Originale ersetzt werden (erstellte .xml-Dateien verbleiben übrigens im Dotfuscated-Ordner und kommen NICHT ins CAB) und verpackt sie wieder. In 99,9 Prozent der Fälle ist dann Ruhe. Ein kurzer Test verschafft Gewissheit.

Teil 1   Teil 2   

Kommentare