160个CrackMe002

 查壳


程序使用Virtual Basic写的 无壳

 分析程序


程序是使用用户名和序列号的方式加密
载入OD 随便输入一个用户名和密码

来到第一处关键校验处 校验过程如下



1. 求出了用户名的长度
2. 将用户名长度乘以0x17CFB 得到结果 如果溢出则跳转
3. 将结果再加上用户名的第一个字符的ASCII
4. 将结果转为十进制
5. 将结果和AKA进行拼接 得到最后的序列号

 校验结果


输入我们计算的一组序列号 注册成功

 写出注册机

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
    //密码
    char key1[4] = "AKA";
    //输入用户名
    char username[10] = { 0 };
    printf("请输入用户名:");
    scanf_s("%s", username, 10);
    //1\. 取长度
    int iUsernameLen = strlen(username);
    //2\. 将用户名长度乘以0x17CFB 得到结果
    int result = iUsernameLen * 0x17CFB;
    //3\. 将结果再加上用户名的第一个字符的ASCII
    result = result + username[0];
    //4\. 将结果转为十进制 此步骤省略
    //5\. 拼接序列号
    char key[MAX_PATH] = { 0 };
    sprintf(key, "%s-%d", key1, result);
    //打印序列号
    printf("生成的序列号为:%s\n", key);
    system("pause");
    return 0;
}


至此 002分析完成
需要源码的可以到我的Github下载:https://github.com/TonyChen56/160-Crackme

猜你喜欢

转载自www.cnblogs.com/guishou/p/10418046.html
今日推荐