程序使用Virtual Basic写的 无壳
分析程序

you get wrong try again
程序是使用用户名和序列号的方式加密 载入OD 随便输入一个 用户名和密码 来到第一处关键校验处

往上找看看函数的主要算法在哪里


求出了用户名的长度
将用户名长度乘以0x17CFB 得到结果 如果溢出则跳转
将结果再加上用户名的第一个字 符的ASCII
将结果转为十进制
将结果和AKA进行拼接 得到最后的序列号
注册机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #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);
int iUsernameLen = strlen(username);
int result = iUsernameLen * 0x17CFB;
result = result + username[0];
char key[MAX_PATH] = { 0 }; sprintf(key, "%s-%d", key1, result);
printf("生成的序列号为:%s\n", key); system("pause"); return 0; }
|
