Crackme2
Lixu
2020年2月3日 19:27:05
还是来自看雪的一个crack,小弟在这里献丑了,希望大佬纠正错误
工具:OD,peid
1. 使用PEID瞅一下,编写的难不成是个汇编大佬?直接进OD,
2.进来一看,那是相当的熟悉,前面啥都没有,
3.查找一下所有模块所使用的API函数,试试GetDlgItemTextA,很显然使用了
4. 定位过来之后,我们就要开始分析算法了。
1 先获取name的大小,name<4的话就直接结束,提示错误
2 第一个循环是将每个字母的hex值*4再进行累加,也就是说你可以输入好多字母,但是不会加空格 的hex值。
3 第二个循环进行strlen(name)次,每次循环都是((ebx-1)*2+(ebx-1))-1计算后再放入ebx,然后进行下一次循环,最后放在ebx
5. 然后将上两次的计算结果按照 BS-%lx-%lu 的格式存入一个缓冲区,%lu是将第一次的循环结果按照无符号长整形十进制输出,%lx是按照长整形16进制输出,然后就是获取第二个对话框的数据和wsprintf缓冲区的数据进行比较。
6. 注册机:这次的算法比较简单,不足的是这个crack的密码只能是大写,小弟这里献丑了
#include "stdafx.h"
#include "string.h"
#include <stdlib.h>
void main()
{
unsigned long a,b=0x654789;
int len,num=0,num2=0;
char str[50];
printf("请输入Name(大于3)\n");
scanf("%s",str);
len=strlen(str);
for (int i=0;i<len;i++)
{
a = str[i]*4;
num+=a;
b = ((b-1)*2+(b-1))-1;
}
printf("BS-%x-%d\n",b,num);
getchar();
}