新CrackMe160之035 - Dope2112.2
与旧版045相同
-
暴力破解, OD搜索关键字, 没有找到, Delphi反编译工具不能用, messagebox提示框无法停下, 只能把所有常用函数全下断点了, 点check后终于停下了, 看事件是ShowWindow, 原来作者是用窗体来做提示框的, 不是messagebox, 在数据区右侧查看"返回到 ...." 直到附近有出来我们输入的用户与系列号时, 前后行点击右键->反汇编代码中跟踪, 看对应的代码是否有算法类的, 最终找到00421E6B处, 其上面部分的代码有读取输入框内容等代码, 确定这里就是我们需要的位置了, 在方法入口00421DC8处下断点, 重新点check按钮, 果断在此处停下来了, 所以我们在第一个跳00421E10处改为jmp 00421E55直接跳到成功分支, 测试正常, 暴破完成~ 保存搞定, 这个程序的跟踪确实有点小复杂~
-
正常破解, 由上面暴破过程可知算法代码在00421DC8这段程序中, 我们直接断点单步分析,
1). 用户名需要4位以上,
2). 用户名每一位值左移9再相加
3). 相加结果的10进制数与系列号对比
分析完, 算法本身是很简单的, 直接上注册程序: keygen.c
#include <stdio.h>
#include "string.h"
int main(){
while(true){
char user[20] = {0};
printf("请输入用户名: ");
scanf("%s", user);
int len = strlen(user);
if(len < 4) {
printf("用户名最少4位\n");
continue;
}
int ebx = 0x37;
for(int i=0; i<len; i++){
ebx += (user[i] << 9);
}
printf("系列号为: %d\n", ebx);
}
return 0;
}
运行示例:
请输入用户名: Dope2112
系列号为: 302135
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载
下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~


浙公网安备 33010602011771号