前言

  朋友是个幼师,把幼儿园的教学一体机给弄中毒了,找我帮忙。俗话说得好,重启解决99%的问题,重装解决100%的问题,本着省时省力的原则,我决定远程帮她重装一波系统。然后问题来了,那幼儿园用的一体机是个不怎么知名的牌子,配套的教学UI搜都搜不出来,让她在隔壁班拷贝一份后发现居然还要注册,她害怕被园长批又不敢去要注册码。怪自己贪方便选择重装系统,无奈只能逆向一下了。

分析

  看了一下拷贝过来的文件,是个WPF程序,运行后从里边得到了完整安装包的下载地址,居然是放在百度网盘里的,算了不纠结,毕竟连官网都没有。

  把安装包下载下来发现图标有点熟悉,仔细一看,这不是用HofoSetup打包成的安装包么?,而最让人无语的是路径是写死在D盘的,不给自定义。

1.png

  由于虚拟机只有一个C盘,故只能修改安装包或修改盘符,对比之下后者更省时间,索性给把盘符改为D。安装完成后把主程序拖进dnSpy一看,得,代码连混淆都懒的混,开发者是真的懒。

2.png

  上下滑了两下,看到RegisterWindow这个类,估计是填注册码的窗口,就点进去看看是什么情况,虽然我对这位开发者的懒已经见怪不怪了,但还是惊讶他的敷衍程度,这是有且仅有的安全措施:

3.png

  不用想,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也不可能出现大规模被使用被盗版的情况,故保护措施形同虚设也无可厚非。但不管怎样,未来会是重视各种版权的时代,时刻警醒,未雨绸缪不是坏事。

如果觉得我的文章对你有用,请我喝一杯咖啡吧~