SmartLock系统使用了状态线作为单片机向微机发送“串行”数据时的数据线。同时,通过使用独特的脉宽调制数据传送方式,实现了单端口线的数据传输。这是由于:
(1)微机并行口的用途是由微机向外设进行单向的数据传输,同时没有多余的备用端口线;
(2)并口中只有状态线才能向微机传送信息,其中状态线一般不用。
软件狗向微机发送数据的时序比较特殊,如图3所示。具体步骤是:
(1)微机中的加密程序将控制帧发送完毕后开始等待软件狗的返回数据。
(2)软件狗计算出返回数据后,首先发送一个固定长度的标准负脉冲,然后再依据数据值发送一个数据脉冲,两个脉冲代表一个数据值;直到所有数据发送完毕为止。
(3)加密程序通过计算数据脉冲与标准脉冲的宽度比得到数据值。
以上说明的是微机与软件狗之间数据通信的底层协议。双方通信时数据帧的具体格式则可以由用户根据需要自行定义。
3 加密软件系统
软件部分目前只采用内含式加密法。分为以下五个模块:底层I/O操作模块、用户接口模块、反跟踪模块、异常处理模块和全自动操作模块。它们之间的结构层次关系见图4。
3.1 底层I/O模块
底层I/O模块是最底层的功能函数,也是整个加密软件系统的核心。主要用于与软件狗进行数据通信,向软件狗发送数据,接收软件狗的返回值(包括对返回值的数字化转换和求精)及向上层模块报告通信过程中出现的错误。实际上是前面密钥模块在微机内运行的接口部分。另外,各种反跟踪技术主要也融入到此模块中。
3.2 用户接口模块
用户接口模块有多个,分别与软件狗的各个功能一一对应,用于对通信中数据格式的转换及对通信过程的管理。它们将上层软件传来的指令翻译为软件狗能识别的格式后再传给底层模块,然后将底层模块的返回值整理后上传。
用户接口函数可由待加密软件直接调用。它们自行检测并处理软件被跟踪调试时的情况,同时显式或是隐式地向用户软件提供软件狗是否合法的信息,用户软件可依据该信息来自行定义对软件系统处于非法运行状态时的处理措施(本软件系统提供了与各种反击方法对应的函数)。这种使用模式十分有利于加密模块与软件系统的融合,能大大提高软件系统的抗解密性能。
3.3 全自动操作模块
若用户要求软件加密系统自动完成对软件狗的检测及对检测结果的处理,则可使用该函数。它自行使用随机命令调用用户接口模块以检测软件狗的合法性,然后自动对检测结果进行判断并处理。当然,集成度高必然导致抗解密性能下降。
3.4 反跟踪模块
各类反跟踪措施(函数或程序段)用于检测软件系统目前是否处于被跟踪的状态,或人为地制造一些障碍,阻止解密者对本加密软件的分析。它们融合于底层I/O模块、用户接口函数及自动操作模块中,隐蔽地检测软件系统是否运行于调试环境下并自动作出相应处理。
3.5 异常情况处理模块
当加密软件检测到软件系统运行在调试环境下或软件狗非法时,就调用这一模块正常或非正常地中止程序的运行。一般情况下由于程序已处于被调试的状态,中止程序运行的标准方法通常会被解密者觉察出来而达不到目的。因此,只有那些违反常规的操作代码才能有效地中止程序的运行。