前言
朋友是个幼师,把幼儿园的教学一体机给弄中毒了,找我帮忙。俗话说得好,重启解决99%的问题,重装解决100%的问题,本着省时省力的原则,我决定远程帮她重装一波系统。然后问题来了,那幼儿园用的一体机是个不怎么知名的牌子,配套的教学UI搜都搜不出来,让她在隔壁班拷贝一份后发现居然还要注册,她害怕被园长批又不敢去要注册码。怪自己贪方便选择重装系统,无奈只能逆向一下了。
分析
看了一下拷贝过来的文件,是个WPF
程序,运行后从里边得到了完整安装包的下载地址,居然是放在百度网盘里的,算了不纠结,毕竟连官网都没有。
把安装包下载下来发现图标有点熟悉,仔细一看,这不是用HofoSetup
打包成的安装包么?,而最让人无语的是路径是写死在D盘的,不给自定义。
由于虚拟机只有一个C盘,故只能修改安装包或修改盘符,对比之下后者更省时间,索性给把盘符改为D。安装完成后把主程序拖进dnSpy
一看,得,代码连混淆都懒的混,开发者是真的懒。
上下滑了两下,看到RegisterWindow
这个类,估计是填注册码的窗口,就点进去看看是什么情况,虽然我对这位开发者的懒已经见怪不怪了,但还是惊讶他的敷衍程度,这是有且仅有的安全措施:
不用想,GetSerialNumber
就是注册码的生成方法。
private static string GetSerialNumber(string hwid)
{
string text = "";
uint num = 0u;
for (int i = 0; i < hwid.Length; i++)
{
num += (uint)hwid[i];
}
int num2 = 0;
do
{
uint num3 = 0u;
for (int j = 0; j < 4; j++)
{
num3 += (uint)hwid[num2 + j];
}
uint num4 = num3 ^ num;
text += ((char)(65u + num4 % 26u)).ToString();
num2 += 4;
}
while (num2 < hwid.Length);
return text;
}
后记
虽然这位开发人员在一些方面是有点懒,软件本身也是各种功能不完善,但好在对基本教学没有影响。其实想想也能理解,那个公司主要是卖一体机的,也不算大公司,配套的教学UI也不可能出现大规模被使用被盗版的情况,故保护措施形同虚设也无可厚非。但不管怎样,未来会是重视各种版权的时代,时刻警醒,未雨绸缪不是坏事。