算法难度:⭐⭐⭐
爆破难度:⭐
信息收集
运行情况:
弹窗提示说这里应该有个Reg.dat文件
创建这个文件之后就能打开页面了:
查壳与脱壳:
UPX壳,ESP定律即可脱壳
调试分析
OK按钮按下的时候:直接弹窗Success
但是这个OK按钮按不下去,应该是验证在别的地方
这里还有一个事件就是Serial的四个框发生值改变的时候:
会调用同一个函数,这个函数应是校验了,参数是第几个框的标识
这个函数一进去就是一个switch分支,分别对应四个框处理
四个框的处理相同:都是把值保存在一个数组里,然后调用同一个函数
这个调用的函数才是真正验证的部分:
首先获取Name部分,Name长度需要大于等于5,这里分别取1345四个字符除以10保存到一个数组里
然后接下来就是一个循环:这个循环的作用是刚刚那个数组里保存的值是否为个位数,如果不是,就再次除以10,得到一个个位数的值
最后,又是一个循环,依次比对刚刚保存的四个值,和上一层函数从四个框里保存的四个值是否相同,如果都相同就启用OK按钮,否则就不启用
注册机
注册码生成算法:(CSharp)
string Name = Console.ReadLine();
if (Name == null) return;
for (int i = 0; i < Name.Length; i++)
if(i is 0 or 2 or 3 or 4)
{
int tmp = (int)Name[i];
if (tmp >= 100) tmp /= 100;
else if (tmp >= 10) tmp /= 10;
Console.Write(tmp+" ");
}
效果:
总结
编辑框更变事件里验证,首先把编辑框4个值保存起来,然后用Name计算4个值,然后进行比对,4个值都比对成功,就成功
比之前遇到的那些还算有了点新意