У меня есть исполняемый файл, который расшифровывает ввод двоичных данных пользователем.Моя задача - восстановить алгоритм дешифрования, не видя исходного кода исполняемого файла.Я уже сделал около 50 попыток расшифровки, и, судя по результатам, алгоритм, очевидно, прост (XOR-подобен, но изменение байта входных данных обычно влияет на два байта вывода), а длина ключа определенно равна 16байт, но я все еще не могу восстановить его.
Итак, мой вопрос: есть ли какие-либо советы по успешному восстановлению алгоритма дешифрования?Будем весьма благодарны за некоторые рекомендации или любую другую помощь.
Вот несколько реальных примеров, я вижу там закономерность, но не могу понять весь алгоритм.Если я введу более 16 байтов (например, 17 нулевых байтов), последовательность выходных байтов повторяется.Левая часть - это то, что я ввожу, правая - то, что я получаю (все в шестнадцатеричной форме):
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
PS Это не «взлом» в обычном смысле.Я пишу вьюер 3D-моделей для небезызвестного формата (.bmd), но некоторые модели зашифрованы, поэтому я хочу реализовать свой собственный внутренний расшифровщик вместо использования внешнего исполняемого файла.