Интересный крякми на переполнение стека... http://crackmes.de/users/abcd/abcds_battleroyale/ Мой солюшн: http://ifolder.ru/5944308
Краткий мануал - смотрим, что происходит при нажатии кнопки test - видим, что пеервые семь символов из license.lic пишутся во 2-ой Edit, без проверки на длину остаток файла пишется в 1-ый эдит. Но! Перед тем как записать их в эдиты, они сохраняются в стековом пространстве. Трассируем до выхода из процедуры вставки этих значений в поля - видим, что адрес возврата, тто есть вершина стека, оказалась чуть ниже сохранённых считанных значений. Значит, адрес возврата можно переписать, если сделать большой второе поле в license.lic. А там уже и пошло-поехало
стек(содержимое license.lic): Nick, ноль, пароль, ноль, мусор до адреса возврата из функции, затераем адрес возврата адресом MessageBoxA, адрес ExitProcess(это типа адрес возврата из MessageBoxA), ноль, адрес строки дисплэй хэккид,адрес строки дисплэй хэккид, ноль, ноль(параметр ExitProcess), строка дисплый хэккид