selph
selph
发布于 2022-07-21 / 212 阅读
0
0

新160个CrackMe练习:021-DIS-Serialme

算法难度:⭐⭐

爆破难度:⭐

信息收集

运行情况:

image

查壳与脱壳:

无壳,汇编程序

image

调试分析

使用xspy工具可以很方便的查看GUI程序的控件ID:

image

在窗口过程里,发现保存编辑框内容的部分:根据控件ID判断哪个接收的是哪个值,然后这里会判断NAME需要大于3字节

image

然后接下来在验证逻辑里:

对于用户名的每个字节,取出来原字节保存在bl,然后保存一个该字符的索引+a的值到bh里

对于序列号,每次取出两个字节到cx

比对bx和cx,如果遍历完用户名全都相同,就是成功

image

注册机

注册码生成算法:

#include <iostream>
int main()
{
	char name[20] = "selph";
	char serial[20] = { 0 };
	int Len = strlen(name);

	for (int i = 0, j = 0; i < Len; i++, j+=2)
	{
		char bl=0, bh=0;
		bl = name[i];
		bh = i + 'a';
		serial[j] = bl;
		serial[j + 1] = bh;
	}
	std::cout << serial;
}

结果:

image

总结

依然是很简单的算法分析


评论