selph
selph
发布于 2022-08-10 / 232 阅读
0
0

新160个CrackMe练习:035-Dope21122

算法难度:⭐⭐

爆破难度:⭐⭐⭐⭐(入口点难找)

信息收集

运行情况:

image

查壳与脱壳:

无壳

image

调试分析

这是个delphi程序,但是用DD和IDR都不能分析出来内容,然后看视频得知使用PE.Explorer程序可以辅助分析,吾爱爱盘可以下载到

首先查看RC资源:发现这个按钮标题和事件

image

接下来点击反汇编查看VCL方法,找到这个事件:

image

分析这个地址:0x421DC8,由于这是个Delphi程序,里面会存在各种乱七八糟的函数调用,固本次分析采用动态静态结合的方式进行,这里关于出现的call的功能是通过x86dbg运行得知的,为了方便展示,这里依然是使用IDA的截图:

刚开始是获取输入的Name和Serial,Name长度需要大于等于4

image

接下来是对Name的处理:

遍历字符串每次取一个字节,左移9位,然后累加到ebx里

image

验证环节依然是对比:

将刚刚计算的累加值变成字符串,然后对比输入的序列号,对比不相同则弹窗失败

image

注册机

注册码生成算法:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

int main()
{
	char name[100] = { 0 };
	char serial[100] = { 0 };
	int len = 0;
	int check = 0x37;

	std::cin >> name;
	len = strlen(name);
	for (int i = 0; name[i]; i++)
		check += (name[i] << 9);
	_itoa(check, serial, 10);
	std::cout << serial << std::endl;
}

效果:

image

参考资料


评论