新CrackMe160之091 - DOSKEY - CRACKME2

  1. 脱壳
    OD载入程序,使用ESP定律可轻松脱壳成功

  2. 破解
    搜索界面很容易看到失败成功关键词,一下就可以定位到按钮事件入口004015E0, 及三个固定串
    "biq2jrxc-ape3dsynhz8gt5o7f0uml4v19w6+/k",
    "-apeoiq2jrml4xcsw6ynh7f0uv19+3/k
    dbz8gt5",
    "h7f0uv19+3/kjrml4xcsw6yn*dbz8gt5-apeoiq2"
    算法分析:
    1). 循环用户 code[i] = str1[user[i] * 41 % 0x28]
    2). 循环用户 code[len+i] = str2[((user[i] << 5) - user[i]) % 0x28]
    3). 循环code code[i] = str3[(code[i] * 11 % 0x28]
    注册机:

#include <stdio.h>
#include <string.h>

int main() {
	char user[21] = {0};
	char code[21] = {0};
	char *str1 = "biq2jrxc-ape3*dsynhz8gt5o7f0uml4v19w6+/k";
	char *str2 = "-apeoiq2jrml4xcsw6ynh7f0uv19+3/k*dbz8gt5";
	char *str3 = "h7f0uv19+3/kjrml4xcsw6yn*dbz8gt5-apeoiq2";
	printf("用户名: ");
	fgets(user, sizeof(user), stdin);
	int i, len = strlen(user) - 1, sum = 0;
	if(len < 4) { printf("用户名4位以上"); return 0; } 
	user[len] = 0;
	for(i=0; i<len; i++){ code[i] = str1[user[i] * 41 % 0x28]; }
	for(i=0; i<len; i++){ code[len+i] = str2[((user[i] << 5) - user[i]) % 0x28]; }
	for(i=0; i<2*len; i++){ code[i] = str3[code[i] * 11 % 0x28]; }
	printf("注册码: %s", code);
	getchar();
	return 0;
}

运行示例:
用户名: abcd
注册码: /y4to7

 
 
本节高手录制的视频,点击前往查看

 
 
 
使用的工具连接(工具有点多有点大,可以先下OD,其它的后面慢慢下) 点击前往下载

下面是我的OD的界面布局,我觉得这4个是最常用的界面,其它的我基本上没用到~
OD界面布局

posted @ 2024-12-30 14:31  hankerstudio  阅读(17)  评论(0)    收藏  举报