新CrackMe160之023 - TraceMe
OD载入程序,搜索错误关键词“序列号错误...”定位到0040110F, 调试发现是在timer里的, 我们上下翻看下代码,上面一点就到顶了,没有关键代码
往下,在0040138F处发现了字符串对比,我们下个断点,测试,发现能停下来,且看到了序列号,那上面就是算法了,
从用户名第4位开始每一位乘以固定串“0C 0A 13 09 0C 0B 0A 08”, 注册机代码如下:
#include <stdio.h>
#include <string.h>
int main() {
char user[21] = {0};
int code = 0;
char str[9] = {0x0C,0x0A,0x13,0x09,0x0C,0x0B,0x0A,0x08,0};
printf("用户名: ");
fgets(user, sizeof(user), stdin);
int i, len = strlen(user) - 1; //最后一个\n
if(len < 5) { printf("用户名需要5位以上"); return 0; }
for(i=3; i<len; i++){
code += user[i] * str[(i - 3) % 8];
}
printf("系列号: %d\n", code);
getchar();
return 0;
}
运行示例:
用户名: abcde
系列号: 2210
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号