用户登录  |  傲看软件园 用户注册
文章中心广告代码ASP源码PHP源码JSP源码.NET源码源码相关傲看留言板繁體中文
当前位置:傲看软件园文章中心电脑安全安防业界

软件狗[Dongles]的加密与解密技术(6)

减小字体 增大字体 作者:郁郁小蝎  来源:中国站长学院  发布时间:2008-10-20 20:23:33

  虽然加密方法那么多,但是道高一尺,魔高一丈,随着加密技术的发展,解密技术也进一步蓬勃发展起来,目前可用于解密的工具有SOURCE、DEBUG、SYMDEB、TURBO DEBUG、SOFT-ICE、TRW2000等等。这些工具的功能一个比一个强,更何况还有那么多“专业”解密高手,似乎任何加密技术到了他们手里都会迎刃而解。说来说去,您可能会想,你仍然没有最终解决软件的加密问题吗。是的,本来吗,加密和解密就是一对矛盾的统一体,某一阶段的优  只能看是哪一方先亮出了新招,谁都不敢说他的加密方法别人破译不了,或者说他能破译任何加密方法。如此看来,我们所做的工作只在于尽量减少被解密的可能性,以赢得时间进行下一步的开发。

  软件解密就是要想办法把加密代码攻破,具体到软件狗上,即是找到检查程序,然后干掉它。因此,如果我们在应用程序的不同地方多做几次检查,就可以让解密者浪费更多的时间。这对I/O速率很快的软件狗来说是很方便的,不像软盘加密那样检查起来既费时又不方便。

  一个好的程序员会把程序设计得简单易懂,具有结构化,但这也给解密者带来了方便,所以程序不要写得太规则,另外还要加上一些“废话”,以干扰解密者。

  另外一种不破坏程序结构化,也不需要写“废话”就可以有效干扰解密者,提高解密难度和复杂性的方法是,把子程序全部用宏改写。这样汇编出的程序是一串串很难看出结构的指令,进出堆栈的数据和各种传递的参数以及积存器暂存数的存取相距很远,嵌套很深,分析起来很伤脑筋。第三代软件狗的存取程序就是全部用这种方法写的。

  很多软件加密技术的研制者对Soft-ICE很头疼,因为它的解密功能太强了,但是您只要在程序中调用一下INT 7,就能防止它的跟踪,您不妨试试看。

  在用解密工具跟踪程序时,执行时间显然要比平常的长,另外一般都用键盘来操作,用显示器或打印机作输出,所以采用执行时间检查或者在关键程序部分禁止键盘中断,以及禁止显示器或打印机输出(修改INT 10H 或INT 17H 中断)等都是较好的方法。例如在第三代软件狗编程中用到的方法:


          ......    ......
          ......    ......
;................MACRO.....................
;.            计时反跟踪                  .
;..........................................
;-----------------------------------------[+]
;保存时间
;-----------------------------------------[+]
TimeSave    macro
ifndef debug-Time
               push ds
               push cs:[_const_word_0_]
               pop  ds              ;ds=0000H
               push ds:[046ch]      ;把时钟记数值
               pop  cs:start_time   ;保存到start_time
               pop  ds
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

               ......    ......
               ......    ......

  另外,如果我们把关键部分的程序加以编码,运行时再译码出来,这也增加了解密的难度,因为解密者必须懂得编码、译码规则才能修改可执行文件,而这些规则加密者一般是不会泄露的。
  
  多种软件加密方法的综合,以及几种加密技术交叉使用,足以让许多解密者知难而退。因为必须了解所有的加密技术原理才有可能解密,这就增加了难度,毕竟能够精通各种加密方法的人不多。例如有就把软件狗加密技术和磁盘加密技术结合起来做。


Tags:

作者:郁郁小蝎

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

精品栏目导航

关于本站 | 网站帮助 | 广告合作 | 下载声明 | 友情连接 | 网站地图
冀ICP备08004437号 | 客服Q:354766721 | 交流群83228313
傲看软件园 - 绿色软件,破解软件下载站! 源码网 源码之家 绿软之家
Copyright © 2003-2010 OkHan.Net. All Rights Reserved .
页面执行时间:14,343.75000 毫秒
Powered by:OkHan CMS Version 4.0.0 SP2