新CrackMe160之120 - bxm_crackme1
OD载入程序, 搜索界面定位到成功关键词004024F2,上面就是算法, 在0040241C下一个断点开始分析算法:
0040242B ~ 0040244C 用户名循环累加 sum += user[i]
0040244E ~ 0040245C sumU = -1 * sum * (sum + len(user))
00402492 ~ 004024C1 注册码转数字 sum1 = str2int(code)
004024C3 ~ 004024E3 sum += sum1 * sum1, sumC = -1 * sum1 * len(code)
接着判断 sumU + sumC ?== 0
sumU = -1 * sum1 * len(code) - sum1 * sum1 = -1 * sum1 * (sum1 + len(code)) = -1 * sum * (sum + len(user))
所以sum = -sum1
注册机如下:
#include <stdio.h>
#include <string.h>
int main() {
char user[51] = {0};
printf("用户名: ");
scanf("%s", user); getchar(); //消耗掉多输入的\n
int i,len = strlen(user);
unsigned int sum = 0;
for(i=0; i<len; i++){
sum += user[i];
}
sum *= -1;
printf("注册码: %lu\n", sum);
getchar(); return 0;
}
运行示例:
用户名: Bxm_CrackMe1
注册码: 4294966195
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号