2010-11-24 4 views
3

Ich versuche zu beurteilen, dass die Verschleierung, die ich auf meine Assembly angewendet habe, ausreicht, mein Hauptanliegen ist es, Strings zu schützen, die Passwörter oder private Schlüssel enthalten.

Ich dekompilierte erfolgreich meine Assembly mit Salamander Decompiler und sah, was meine Zeichenfolge verschlüsselt wurde, aber während der Laufzeit muss die Zeichenfolge entschlüsselt werden, um verwendet zu werden.

Mir wurde gesagt, dass es möglich ist, die Anwendung zu debuggen und den Assemblercode zu sehen, irgendeine Idee, wie man das macht?Debuggen einer verschleierten .Net-Assembly

Lösung
Das ist für mich gearbeitet, obwohl es wahrscheinlich eine bessere Art und Weise ist es mit WinDbg zu tun.

1- Ausführen des Programms
2- eine Befehlszeile und Typ offen:

adplus -crash -pn [executablename] -o [ output directory ] 

* adplus in demselben Ordner wie WinDBG platziert

3- das Programm schließen oder warten schließt
4- die FULLDUMP * Öffnen Sie im angegebenen Ausgabeverzeichnis
5- Open Notepad ++ anb platziert .DMP wählen TextFX-> Zeichen-> Zap alle nicht druckbare Zeichen zu #
6- Suche nach der Zeichenfolge in diesem Format 's # r # # t i # n # g'
oder all '#' durch 'ersetzen' und sucht 'string' (dies kann eine Weile dauern)

* Übrigens konnte ich keine SecureString finden, die auch im Klartext im Speicher war

Antwort

4

Für sensible Daten wie Passwörter und private Schlüssel sollten Sie SecureString verwenden.

Zum Anzeigen des Assembler-Codes - wenn die Anwendung ausgeführt wird, können Sie windbg verwenden, um einen Speicherabbild zu erhalten, und dann den tatsächlichen Assembler in Windbg betrachten.

+0

Ich kann nicht glauben, dass ich noch nie von SecureString gehört habe! Am besten brauchbar. –

+0

SecureString ist ziemlich interessant, ich bin mir sicher, dass es die Dekompilierung kompliziert macht, aber sicherlich nicht die definitive Lösung, denn wenn Sie die Zeichenfolge verwenden müssen, müssen Sie sie schließlich an einen ungesicherten Speicherort verschieben. Ich werde einen Blick auf die Müllhalde werfen. –

+0

@Cristian - wie sicher brauchen Sie das? Die Tatsache ist jedoch, verschleiert Ihren Code, wenn es auf einem Prozessor läuft, kann ein entschlossen genug Hacker in der Lage sein zu entschlüsseln/zu dekompilieren. – Oded

1

Wenn Sie etwas hart verschleierten Anwendung debuggen können Sie prüfen für dnSpy von 0xd4d, es ist eine freie und Open-Source-.NET-Decompiler suchen die in der Lage ist, dass Sie jede .NET-Assembly debuggen zu lassen, & können Sie Breakpoints setzen und erhalte den Wert der Variablen. Wirklich interessant, was das Debugging betrifft, und ich möchte Ihnen sagen, dass es eine Freude ist, eine App ohne WinDBG oder Olly2 zu debuggen.

Jetzt, über String Verschleierung, können Sie einen Blick auf .NETGuard's string encryption, die sehr komplexe Methode (.NET Stackframe + privater Schlüssel + Ressource Entschlüsselung + Zeiger) zu schützen & sichern Sie Ihre Saiten haben. Meiner Meinung nach hat das Schützen von Strings höchste Priorität, da Hacker Ihre App meistern und sich hauptsächlich auf Strings beziehen.