Verschleierung in Xamarin-Projekten

8

Wie Sie wissen, werden Xamarin-Projekte in die dot net dll Assembly kompiliert und in eine APK-Datei gepackt und können von Reflektoren wie DotPeek leicht wiedergegeben werden.

Meine erste Frage ist: Wie können wir unseren Code schützen?

Meine zweite Frage ist: Sind Obfuscator-Tools wie SmartAssembly in Xamarin-Projekten oder Xamarin-Projekten verwendbar? Werden sie nicht unterstützt?

    
Ali Bahraminezhad 05.04.2016, 09:57
quelle

4 Antworten

4

Der beste Weg, Ihren .NET-Code (.DLLS) für APKs zu schützen, besteht darin, Vor der Zeit (AOT) compilation:

Die AOT-Kompilierung kompiliert den IL-Code (.dlls) Ihrer Anwendungen in native Anweisungen. Der endgültige Code, der in das APK gepackt wird, ist dann X86, Arm usw., anstatt verwalteter IL-Code.

Die AOT-Kompilierung ist nur in Enterprise- und höheren Lizenzen verfügbar.

Während AOT die Schwierigkeit des Reverse Engineering erhöht, ist es immer noch nicht 100% idiotensicher. Die endgültigen Binärdateien können weiterhin von einem gerooteten Gerät abgerufen und mithilfe von Software wie IDA pro zurückentwickelt werden. Es ist viel schwieriger als die Verwendung von DotPeek, aber es ist immer noch möglich.

Es ist auch wichtig, die Nachteile der AOT-Kompilierung zu beachten. Die Zeiten für die Erstellung von Anwendungen steigen erheblich, da jede von Ihrer App referenzierte Assembly kompiliert werden muss. Meine Erfahrungen haben gezeigt, dass Sie eine Steigerung der Build-Zeiten um 200% -300% erwarten sollten, wenn AOT aktiviert ist.

Außerdem wird durch die AOT-Kompilierung die endgültige APK-Größe erhöht.

    
matthewrdev 05.04.2016, 22:16
quelle
3

Für Ihre erste Frage ist es möglich, einige Werkzeuge zum Verschleiern Ihres Xamarin-Codes zu verwenden. Zum Beispiel Crypto Obfuscator , Babel Obfuscator und Dotfuscator

Für Ihre zweite Frage scheint SmartAssembly-Verschleierung möglich zu sein. Überprüfen Sie den Windows Phone-Teil hier .

    
Luis Beltran 05.04.2016 10:06
quelle
2

Dotfuscator hat Unterstützung für Xamarin und Anweisungen sind online (für Dotfuscator Professional oder die kostenlose Community Edition ) für die Integration. Im Wesentlichen ist der Prozess:

  1. Konfigurieren Sie den Build, um Dotfuscator über ein AfterBuild-Ziel auszuführen
  2. Dotfuscator konfigurieren:
    1. Geben Sie die Eingaben an
    2. Schließen Sie die Dinge wie gewöhnlich / nach Bedarf von der Umbenennung aus
    3. aus
    4. Verwenden Sie nur Mono-kompatible Transformationen (nur Pro)
  3. Konfigurieren Sie eine Kopieraufgabe oder ein Post-Build-Ereignis, um die verschleierten Binärdateien an ihre ursprünglichen Positionen zu kopieren
  4. Build, verifizieren Sie die Verschleierung und testen Sie

Vollständige Offenlegung: Ich arbeite für PreEmptive Solutions.

    
Nathan Arthur 20.10.2016 20:59
quelle
1

Es gibt keine Möglichkeit, Ihren Code zu 100% vor der Dekompilierung und Überprüfung zu schützen.

Sie könnten viel Zeit damit verbringen, alle Ihre Methoden und Variablen zu hashen und dann eine Menge Zeit damit verbringen, eine Art Anwendungsinterpreter zu erstellen, der Ihren verschleierten Code versteht, aber selbst das wird untersucht, untersucht und schließlich geknackt.

Siehe auch: Wie kann ich meine .NET-Assemblys schützen? von Dekompilierung?

Schützen Sie .NET-Code vor Reverse Engineering?

    
peter kover 05.04.2016 10:09
quelle