因为我估摸着我这涉及的东西也没几个人用得上 还是别猜这玩意是啥了 所以大家就看个乐就好 禁止模仿 所产生的后果也与本人无关
0.背景+一些废话
大家应该听过买了车加热座椅还需付费订阅的事情吧,对,这种事其实很常见,在消费电子领域之外的其他地方行之有年。基本上就是你花了很高的价格买了几乎是全功能版本的硬件,可是由于你的小钱钱出的不够,买的是乞丐版,你只能使用很少很少的一部分硬件功能,剩下的部分呢,你可能需要再出数十万来解锁。为了压缩成本,所以厂商给搞了个升级措施,美名其曰免返厂的配置升级,其实就是你花数十万去买一组KEY
来把他们阉割掉的功能还回来。
当然,这种做法其实有一定的积极意义,毕竟这些东西都是死贵死贵的,基本上都要走固定资产采购流程的,这么做可以把一大笔钱拆成好几部分,对厂商方便也对出钱的机构方便,但是就是对没钱的人不是很友好,尤其是听到要花那么多钱买几十个字母的字符串,虽然知道是知识产权的费用,但是心里多少还是有点接受不了。
不说这些题外话,大家就当个故事听听好了,今天的主角是某国外知名厂商的丐中丐版本的信号源。主要工作原理是用一个windows电脑作为上位机,对下面FPGA板
、时钟板
、功放板
组成的系统进行控制,完成信号源的各种功能(不得不说人家的维护手册是写的真的好,和某些厂商相比真是包罗万象,不过人家也很贵就是了)。
之所以要称为丐中丐版本,那是因为这个东西没有买任何一个升级选项,并且厂商的刀法和老黄比起来真是有过之而无不及。现有主要功能有且仅有单通道信号输出,信号存储个数1个,从这点上看还不如旁边几个达不溜的信号源,唯一的好处就是人家上限高啊(各种意义上的)。
但是这东西硬件支持什么呢?不用看说明书从前面板我就能看的出来,这明显是四通道嘛,存储信号个数怎么只能用一个捏?嗯,我当时阅读了手册之后还是没搞懂,于是虚心的咨询工程师之后,嗯,原来是我的马内没花够造成的,那没事了。充钱能使你变得更强,没钱咋办,凉拌咯。
一看升级选项,什么4通道,快速切换,序列器,更大的波形存储,别管用不用得到,名字就很诱人,唯一不美丽的就是那根本就不用问就知道压根不可能美丽的价格。
1.对授权实现机制的一些猜测
首先观察上位机,一看界面风格,目录下一堆clr
的dll
,不用想,这肯定是.Net
的杰作。
观察启动信息,上面一堆
初始化固件...
初始化FPGA...
初始化License ...
的提示,打开任务管理器
-服务
,果不其然,XXX Licensing Service
,右键停止服务,再次打开软件,果然启动不起来了。
本着对大厂商的保护措施的敬畏,我发现初始化license在初始化FPGA
和Firmware
后面,心里已经感觉大大的不妙,这不会是把一些必要信息和FPGA
和单片机
里的程序还通信了吧,单片机
还好说,FPGA
要逆向逻辑可就老费劲了啊,一看目录下还有好几个FPGA
相关的BIN,已经想敲响退堂鼓准备撤退了。
不过在撤退之前,我还分析了激活许可证的方式进行了下简单研究,发现似乎只和XXX Licensing Service
交互了一下,不过许可证的格式也太复杂了,实在搞不定,于是放弃。不过这也并非完全没有意义,这充分说明所有的关键点都在那个C#
的上位机软件上。
为了防止软件里存在什么暗桩之类的,我并不打算对上位机本体进行修改,还是采用hook的方式好了,简单快捷。
2.对上位机软件的探索
首先打开Detect It Easy
查了下 很好没有加壳 (多少有点疑惑了,这种大厂应该不缺钱买个DNGuard
什么的)。
然后打开dnspy
,额,竟然只有简单的混淆和控制流扁平化?我说你那没有用,虽然这样子凑合着也能读,不过我还是啪的一下打开了de4dot
反混淆了一下,很快啊,嗯,看起来舒服多了。
2.1 初探
接下来自然是先是一个左正蹬,一下子给他入口点找到了,看了看没啥东西,转进一看没啥东西
又一个右鞭腿,他说婷婷,我说传统功夫以点到为止,一下子给他授权初始化的地方给找到了
点进去一看,一层套一层,
挨个点进去读完,终于找到了重要的地方
private u SetupLicensing()
{
u