某商UI逆向

前言

  朋友是个幼师,把幼儿园的教学一体机给弄中毒了,找博主帮忙。俗话说得好,重启解决99%的问题,重装解决100%的问题,本着省时省力的原则,博主决定远程帮她重装一波系统。然后问题来了,那幼儿园用的一体机是个不怎么知名的牌子,配套的教学UI搜都搜不出来,让她在隔壁班拷贝一份后发现居然还要注册,她害怕被园长批又不敢去要注册码。怪自己贪方便选择重装系统,无奈只能逆向一下了。让人又好气又好笑的是,这个开发人员不是一般的懒,而且懒的还非常可爱,本文就记录一下他的可爱以及逆向过程,顺便提醒一下自己和大家,不管做什么事,都要注意安全措施哟。

分析

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

  把安装包下下来发现图标有点熟悉,仔细一看,这不是用HofoSetup打包成的安装包么?到这里开始觉得这位开发小哥哥有点懒了,啥都是用第三方的。可当博主打开安装包的后就对他彻底改观了,不是有点懒,是非常懒!路径居然是写死在D盘的,不给自定义。

1.png

  由于虚拟机只有一个C盘,故只能修改安装包或分区,对比之下后者更省时间,索性给虚拟机分个D盘出来。安装完成后把主程序拖进dnSpy一看,得,混淆都懒的混,是个狠人。

2.png

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

3.png

  不用想,GetSerialNumber就是注册码的生成方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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也不可能出现大规模被使用被盗版的情况,故保护措施形同虚设也无可厚非。但不管怎样,未来会是重视各种版权的时代,时刻警醒,未雨绸缪不是坏事。

-------------本文结束❤感谢阅读-------------

本文标题:某商UI逆向

文章作者:三水非冰

发布时间:2019年09月20日

最后更新:2019年09月20日

原始链接:https://www.sanshuifeibing.cn/posts/c0105667.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

如果觉得我的文章对您有用,请随意打赏,您的支持将鼓励我继续创作。