算法难度:⭐⭐
爆破难度:⭐
信息收集
运行情况:
查壳与脱壳:
无壳,汇编程序
调试分析
使用xspy工具可以很方便的查看GUI程序的控件ID:
在窗口过程里,发现保存编辑框内容的部分:根据控件ID判断哪个接收的是哪个值,然后这里会判断NAME需要大于3字节
然后接下来在验证逻辑里:
对于用户名的每个字节,取出来原字节保存在bl,然后保存一个该字符的索引+a的值到bh里
对于序列号,每次取出两个字节到cx
比对bx和cx,如果遍历完用户名全都相同,就是成功
注册机
注册码生成算法:
#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;
}
结果:
总结
依然是很简单的算法分析