下面是网上的160个CrackMe的部分逆向笔记,包括逆向思路、注册机实现和逆向中常用的知识整理
注意:逆向前一定要先操作一下软件,熟悉软件的运行现象;逆向一定要自己操作一遍,看是很难看会的(高手除外)
用PEiD查看这3个连续程序(27、28、29),都是用VC6.0编写,没有壳
1.程序基本信息
需要正确的用户名和序列号
2.逆向分析程序
通过错误提示框字符串找到CHECK的响应函数,不熟悉可以看CrackMe001的分析
通过OD和IDA同时单步调试进行分析,直接给出IDA的分析结果(sub_4014B0是处理函数):
想要注册成功,简要流程如下:
- 1.用户名和序列号长度都要大于5,且对用户名和序列号都进行了一波操作(详细看IDA分析截图)
- 2.操作完的用户名和序列号每一位进行比较,要一直相等,直到用户名比完为止
3.注册机
#include "StdAfx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char user_name[100] = {0};
char serial[100] = {0};
printf("请输入用户名(长度>5):");
scanf_s("%s", user_name, 100);
//用户名处理
char res[100] = {0};
int k = 1;
for (int i = 0; i < strlen(user_name); i++) {
user_name[i] ^= k++;
res[i] = user_name[i];
}
//根据用户名逆推序列号,使用a=b^c => b=a^c进行推到
int j = 10;
for (int i = 0; i < strlen(user_name); i++) { //只要处理用户名长度就可以了
res[i] ^= j++;
serial[i] = res[i];
}
printf("计算的序列号:%s\n", serial);
system("pause");
return 0;
}
验证结果:
4.参考
- 1.常用软件可以在这里下载:爱盘 - 最新的在线破解工具包 (52pojie.cn)
- 2.【反汇编练习】160个CrackME索引目录1~160建议收藏备用
- 3.160个Crackme_鬼手56的博客-CSDN博客
- 4.《使用OllyDbg从零开始Cracking》系列的文章也不错