endif endm ; ;-----------------------------------------[+] ;检查程序执行时间,超过5秒则主机被挂起 ;-----------------------------------------[+] TimeTest macro ifndef debug_Time push es push ax push cs:{_const_word_0_] pop es ;es=0000H mov ax,es:[46ch] ;得到新的时间记数值 sub ax,cs:start_time; cmp ax,18*5 ;执行时间超过5秒吗? ja $+4 ;是,则主机被挂起 pop ax pop es endif endm ; ;..................MACRO................... ;. 键盘反跟踪 . ;.......................................... ; ;-----------------------------------------[+] ;禁止键盘中断 ;-----------------------------------------[+] KbdOff macro ifndef debug-Kbd mov cs:_tmpB_,al ;保存al mov al,02h ;禁止键盘中断 out 21h,al mov al,cs:_tmpB_ ;恢复al endif endm ; ;-----------------------------------------[+] ; ;检查键盘中断,若被开放则主机被挂起 ;-----------------------------------------[+] KbdTest_jmp macro ifndef debug_Kbd push ax in al,21h test al,02h ;键盘中断被开放? jz $+3 ;是是,则挂起 pop ax endif endm ; ...... ...... ...... ...... 另外,如果我们把关键部分的程序加以编码,运行时再译码出来,这也增加了解密的难度,因为解密者必须懂得编码、译码规则才能修改可执行文件,而这些规则加密者一般是不会泄露的。 多种软件加密方法的综合,以及几种加密技术交叉使用,足以让许多解密者知难而退。因为必须了解所有的加密技术原理才有可能解密,这就增加了难度,毕竟能够精通各种加密方法的人不多。例如有就把软件狗加密技术和磁盘加密技术结合起来做。
二、硬件加密 软件狗的电路不要做的太直接,否则不利于加密。这里我们就来讲讲如何增进软件狗的复杂性,加强硬件电路的机密功能。 在讲第二代软件狗时,我们说它其实就是几个简单的与或逻辑门,目前已经被淘汰。现在我们将要把它跟EEPROM结合起来,经过变化,组成比较复杂的第三代软件狗,从而增加解密难度。 CAL芯片由于本身就有加密功能,所以也常被用来与EEPROM结合做成复杂的软件狗,更由于其内部逻辑配置的灵活性,使得解密的难度上涨了很多倍。 解密者要仿制加密盒,首先必须搞到同型号的EEPROM,所以,我们尽量采用市场上一般购买不到的EEPROM型号,这样也能起到保密的作用。另外,如果采用特殊的93CX6系列,就可以利用不同厂商出品的特殊93CX6,其特性不同这一点来加强硬件的 加密功能。 下面我们给出两个具体例子来说明(以93C46型为例) 例1 在电路中加入一个非们,以改变93C46某一管脚的极性,电路中要尽量采用低功耗的芯片,所以这里用了CMOS型的74HC04非门来实现。 这是在前面例子的基础上把CS信号反了相,读者还可以适当加入一些无用的电阻,电容等器件,以迷惑解密者。同时,我们还需要把相应的程序修改一下,把原来对CS信号的控制也反相才行。 ...... ...... ...... ...... ;---------------------------------------------[+] ;设置EEPROM的片选CS为高电平,即选中EEPROM(-AUTO FEED线反相 ;后接CS) ;硬件电路变化时,本部分程序应作相应改动 ;---------------------------------------------[+] SetCS macro push ax CtrlPort ;选择控制口 in al,dx ; and al,not,02h ;令-AUTO FEED线输出 ;为高电平 or al,02h ;令-AUTO FEED线输出 ;为低电平 KbdTest_Add_AL ;检查键盘中断,若被开
上一篇:端口截听实现端口隐藏嗅探与攻击
下一篇:微软:盗版Win XP很快也需要激活
|