Frage

Ich habe Dotfuscator verwendet, um meine Anwendung vor Reverse Engineering zu schützen Ich habe die DLL-Dateien in der Windows-Anwendung verschlüsselt, aber wie kann ich das in OSX / MonoTouch machen?

Extrahieren Sie die DLL aus ipa, verwechseln Sie dann die DLLs in Windows, packen Sie die verschlüsselten DLLs neu in IPA und veröffentlichen Sie sie dann im Appstore?

Gibt es eine einfache Lösung?

War es hilfreich?

Lösung

In erster Linie müssen Sie daran denken, dass iOS dies nicht zulässt JIT (gerade rechtzeitig) kompilieren.Dies bedeutet, dass alles durch die gehen muss AOT (vor der Zeit) Compiler.

Dies führt dazu, dass der gesamte IL-Code aus Ihren Assemblys in native ARM-Anweisungen (v6, v7 und / oder Thumb) konvertiert wird und dass die IL ist nicht erforderlich Mehr.

Dies bedeutet, dass, wenn Sie für bauen Release|iPhone, wird der IL-Code aus Ihren Assemblys entfernt.Da es entfernt wurde, ist es in der von Ihnen veröffentlichten Anwendung nicht vorhanden (zu dekompilieren).

NOTES

  • die Baugruppen befinden sich weiterhin in der Anwendung da die Metadaten werden weiterhin benötigt (z. System.Reflection braucht es).Symbolnamen und Ressourcendateien werden also nicht wie bei Verschleierern im Allgemeinen verstümmelt / verschlüsselt;

  • Sie können die ARM-Baugruppe zerlegen (das wäre auch dann der Fall, wenn Sie die Baugruppen vor der AOT-Kompilierung verschleiert hätten), aber es ist viel schwerer zu verstehen (und zu C # zurückzukehren) als IL ist.

  • Das Extrahieren der Baugruppen aus dem IPA und deren Verarbeitung wird unterbrochen mindestens die Signatur der Anwendung (Sie können sie erneut signieren).Es wird auch wahrscheinlich brechen Sie viele andere Dinge (da der Code auf Namen / Strukturen verweist, die sich möglicherweise geändert haben).Ich glaube nicht, dass dies funktionieren wird (aber es hängt von den Optionen ab, die Sie von Ihrem Verschleierer verwenden würden).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top