Ставишь бряк на CreateFileA, третья остановка при открытии regkey.dat, потом чтение файла в память, ставишь memory breakpoint на эту память и ты в функции проверки файла. Функция должна вернуть 1, делать патч или кейген решай сам. Структура файла проста: 12 байт - то, что проверяется; 80< - ключ, не проверяется, но отображается в окне About. Я так думаю, при регистрации ключ проверяется, если он валиден, создаётся его хэш и вместе сним записывается в файл.
Part II
Ставишь бряк на CreateFileA, вторая остановка при открытии самого себя, потом чтение в память, ставишь memory бряк на эту память и ты в функции проверки crc, точнее в месте, где происходит сравнение crc текущего файла с crc оригинального. Можно пропатчить ( je --> jmp ), а можно посмотреть crc текущего файла и hex-editor-ом заменить его crc оригинального.
Если что-то непонятно, могу написать более подробно с адресами и комментами.