Witzbold. Der einzige Weg an das Passwort zu kommen wäre ein BruteForce.
Du hast AnitDebug Methoden drin:
- P/Invoke IsDebuggerPresent
- Überprüfen über die System.Diagnostics.Debugger Klasse
Die Methoden callst du in jeder kleinen **** Methode, da gibt es schönere Wege.
Wie bereits erwähnt speicherst du deine Strings in einem Array das du mit Xor entschlüsselst. Beim Start rufst du Methoden auf die wieder eine Methode aufrufen(Über 30x) bis dann der richtige Call zu der Methode kommt wo der String aus dem byte array geholt wird.
Parameter indexStringArray, indexByteArray, length
0,0,19 Enter the password! // Input description
1,19,26 Obfusc Password Protection // Input title
2,45,0 (empty) // Input default response
3,45,12 elcdxisy.2xx // Resource name
4,57,6 Obfusc // Console title
5,63,1 1 // Paremter für die verschlüsselte assembly in den resourcen
Die Resourcedatei "elcdxisy.2xx" ist mit TripleDES verschlüsselt(CipherMode ECB, Padding PKCS7), als Key wird der MD5 Hash vom Input genommen. Danach wird das ganze nochmal dekomprimiert mit der GZipStream Klasse(Zwischen durch wird noch mit Base64 dekodiert).
Zum Schluss startest du einen Thread der wiederum die entschlüsselte Resource nimmt und eine Assembly damit lädt, in der Assembly rufst du den EntryPoint auf mit dem Parameter "1".
Kein wirklicher guter Obfuscator, aber auf jeden Fall ein netter Versuch!