算法难度:⭐⭐
爆破难度:⭐
信息收集
运行情况:
查壳与脱壳:
无壳:
调试分析
直接拖IDA:
一开始就看到创建窗口的函数
接下来直接跟进DialogFunc找nMsg=0x111,arg_8=3eb的分支:
获取用户输入的两个值,调用了一个call,然后根据返回结果是否为1进行弹框
跟进这个call看看:
由于库函数的内联汇编看得头疼,直接F5看吧:
注册机
注册码生成算法:(CSharp)
string? name = Console.ReadLine();
int sum = 0;
for (int i = 0; i < name.Length; i++) sum += name[i];
sum += 0x6064;
string? Buffer = string.Format("{0:D}", sum);
char[] code = new char[1024];
code[0] = name[0];
code[1] = '-';
code[2] = char.ToUpper(name[name.Length - 1]);
var code_s = new string(code);
code_s += Buffer;
code_s += '-';
code_s += string.Format("{0:D}", sum += 0x6064);
Console.WriteLine(code_s);
效果: