网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | 防火墙 | IDS/IPS | VPN | PKI | Honeypot | Hacker/Intruder | 黑客技术 | 破解技术 | 加密技术 | 病毒防护 | 木马 | 反垃圾邮件 | 反流氓软件 | 漏洞 | 无线安全 | UNIX | Windows | 安全编程 | 安全软件 | TPM/TCG | 数据恢复 | 企业信息安全 | 个人信息安全
 当前位置: Home > 破解技术 > 加密狗 > 文章  
软件狗[Dongles]的加密与解密技术
文章来源: 清风网络学院 文章作者: 清风网络学院 发布时间: 2006-08-11   字体: [ ]
 

  虽然加密方法那么多,但是道高一尺,魔高一丈,随着加密技术的发展,解密技术也进一步蓬勃发展起来,目前可用于解密的工具有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
  ;
  ......  ......
  ......  ......

 
推荐文章
 

 
共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] 9 [10] [11] [12] [13] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
热点文章
·USB软件狗的设计及反破
相关分类
相关文章
·USB软件狗的设计及反破
·破解QQ密码保护的方法
·我要看代码 破解加密网
·破解高手常用的破解工具
·愚公移山 文档密码全面
·毫不费力:破解加密PDF
·用Linux的dd命令简单破
·解密宝典——十招教你学
更多...
 
 

Copyright(c) 2001-2008 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统
$Id: article_article.html,v 1.3 2007/02/10 12:00:37 yjs Exp $