Crackme029

42次阅读

共计 613 个字符,预计需要花费 2 分钟才能阅读完成。

Crackme029 的逆向分析 


1. 程序观察

从界面上来看,和 Crackme028 没有区别,但是这个并不会自动退出。

2. 简单查壳

没有壳。

3. 程序分析


前面的流程和 Crackme028 差不多,都是先比较用户名和序列号的长度,小于 6 就弹窗提示错误。然后获取输入的用户名和序列号。

后面的流程就和 Crackme028 不一样了

程序有 3 个循环。第一个循环分别将用户名的每个字符进行异或。
第二个循环分别将序列号的每个字符进行异或。
第三个循环比较用户名和序列号的每个字符是否相同,不同则错误。

4. 注册机

#include <stdio.h>
#include <string.h>
#include <Windows.h>


int Keygen()
{char szName[20] = {0};
    char szSerial[120] = {0};
    int NameLen = 0;

    printf("请输入用户名:");
    scanf_s("%s", szName, 20);
    NameLen = strlen(szName);

    for (int i = 0x0; i < NameLen; i++)
    {szName[i] ^= (i + 0x1);
        szSerial[i] = szName[i] ^ (i + 0xA);
    }


    printf("%s\n", szSerial);

    return 0;
}


int main(int argc, char* argv[])
{Keygen();
    system("pause");
    return 0;
}

相关文件在我的 Github

正文完
 0