Я пытаюсь решить это упражнение для университета. Мы должны «взломать» программу, в которой отсутствует файл лицензии, необходимый для запуска программы. Мы работаем только с оболочкой Linux.
Итак, я уже создал этот отсутствующий файл лицензии. Это .ini, который включает в себя владельца лицензии и лицензионный ключ. Единственное, что я сейчас ищу, это правильный лицензионный ключ. Задача говорит, что мы должны использовать «strace» и «ltrace» для решения этой проблемы.
Вот что я получаю в качестве вывода:
fopen("license.ini", "r") =0x55c088307380
fgets("LicenseHolder=annabell.krause@ex"..., 4096, 0x55c088307380) = 0x7ffe72450860
strncmp("LicenseKey=", "LicenseHolder=annabell.krause@ex"..., 11) = 3
strncmp("LicenseHolder=", "LicenseHolder=annabell.krause@ex"..., 14) = 0
sscanf(0x7ffe72450860, 0x55c08753c16b, 0x7ffe72450800, 0xffffc000) = 1
fgets("LicenseKey=aoeklycf", 4096, 0x55c088307380) = 0x7ffe72450860
strncmp("LicenseKey=", "LicenseKey=aoeklycf", 11) = 0
sscanf(0x7ffe72450860, 0x55c08753c121, 0x7ffe72450840, 0xfffff800) = 1
fgets("LicenseKey=aoeklycf", 4096, 0x55c088307380) = 0
memfrob(0x7ffe72450840, 8, 0, 0xfbad2498) = 0x7ffe72450840
strncmp("KEOAFSIL", "aoeklycf", 8) = -22
fwrite("ERROR: License key is invalid.\n", 1, 31, 0x7faeabe60680
ERROR: License key is invalid.
) = 31
+++ exited (status 1) +++
Так что я думаю, что ответ лежит где-то внутри функции memfrob и strncmp в конце. Но я не знаю, каков будет следующий шаг.