Ich habe eine ausführbare Datei, die vom Benutzer eingegebene Binärdaten entschlüsselt. Meine Aufgabe ist es, den Entschlüsselungsalgorithmus wiederherzustellen, ohne den Quellcode der ausführbaren Datei zu sehen. Ich habe bereits etwa 50 Entschlüsselungsversuche unternommen, und den Ergebnissen nach zu urteilen ist der Algorithmus offensichtlich einfach (XOR-ähnlich, aber die Änderung eines Bytes der Eingabedaten wirkt sich in der Regel auf zwei Bytes der Ausgabe aus), und die Länge des Schlüssels beträgt definitiv 16 Bytes, aber ich kann ihn immer noch nicht wiederherstellen.
Meine Frage lautet also: Gibt es irgendwelche Tipps zur erfolgreichen Wiederherstellung des Entschlüsselungsalgorithmus? Einige Leitlinien oder jede andere Hilfe wird sehr geschätzt werden.
Hier sind einige echte Beispiele, ich kann die Regelmäßigkeit erkennen, aber ich kann den gesamten Algorithmus nicht verstehen. Wenn ich mehr als 16 Bytes eingebe (z.B. 17 Nullbytes), wiederholt sich die Ausgabebytefolge. Der linke Teil ist das, was ich eingebe, der rechte Teil ist das, was ich erhalte (alles in hex):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 65
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 66
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 -> 93 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 75
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 76
00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 -> 83 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 A9 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 BA 55
00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 B9 54
00 00 00 00 00 00 00 00 00 00 00 00 00 01 01 00 -> 94 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 75 A8 64
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 -> 73 36 15 B9 95 5D 8E EA 01 72 1C F4 FA 76 AA 63
P.S. Dies ist kein "Hacking" im üblichen Sinne. Ich schreibe einen 3D-Modell-Viewer für ein unbekanntes Format (.bmd), aber einige der Modelle sind verschlüsselt, so dass ich meinen eigenen internen Entschlüsseler implementieren möchte, anstatt eine externe ausführbare Datei zu verwenden.