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分析完成
需要源文件和udd的可以到我的Github下载: https://github.com/TonyChen56/160-Crackme
银河债王: 构建EPROCESS替换完句柄之后读写没问题,创建远线程就直接蓝了,是什么原因呢
qq_43713903: 为啥写0连记事本都打不开了呢
大明律: 请问这个选中寄存器然后就可以代码高亮的操作是怎么弄得,需要插件吗?
mi-key: 火绒那块的代码不是替换导入表,是HOOK的ZwTestAlert,因为PE加载会调用这个来检测是否有APC队列
白话机器学习: 写的非常详细,是一篇优质博客,干货满满,让我有了全新的认识,感谢博主分享,让我学到了很多,支持支持。