|
| |
精品推荐 |
 |
|
| |
|
|
|
|
软件狗[Dongles]的加密与解密技术
|
日期:2007年5月21日 作者: 查看:[大字体
中字体 小字体]
|
再用DEBUG来看一下加密后的TEST.COM: C:\DEBUT TEST.COM -R AX=0000 BX=0000 CX=4CBC DX=0000 SP=00C0 BP=0000 SI=0000 DI=0000 DS=877C ES=877C SS=878C CS=878C IP=021C NV UP EI PL NZ NA PO NC 878C:021C FA CLI -U 878C:021C FA CLI 878C:021D 8CCC MOV SP,CS 878C:021F 8ED4 MOV SS,SP 878C:0221 BC4D25 MOV SP,254D 878C:0224 9C PUSHF 878C:0225 51 PUSH CX 878C:0226 52 PUSH DX
878C:0227 56 PUSH SI 878C:0228 57 PUSH DI 878C:0229 55 PUSH BP 878C:022A 0E PUSH CS 878C:022B 1F POP DS 878C:022C 2E CS: 878C:022D 8C061000 MOV[0010],ES 878C:0231 2E CS: 878C:0232 C606480080 MOV BYTE PTR [0048],80 878C:0237 0E PUSH CS 878C:0238 07 POP ES 878C:0239 BEAD24 MOV SI,24AD -U
...... ......
-Q 可以看到经加密后TEST.COM文件变长了很多,这是因为在程序外面加了一层外壳。同时,您也发现了加密后的程序没法反编译;如果您再跟踪一下,您又会发现加密后的程序已经无法跟踪了。如果您手头有Turbo Debugger或Soft-ICE等等,它们也是无效的。 看起来,这是一个比较好的加密工具,尤其是它提供的函数可以嵌入源代码中,跟软件狗配合起来,达到内外结合的加密效果,大家不妨一试。 ================================================== 虽然加密方法那么多,但是道高一尺,魔高一丈,随着加密技术的发展,解密技术也进一步蓬勃发展起来,目前可用于解密的工具有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
上一篇:端口截听实现端口隐藏嗅探与攻击
下一篇:微软:盗版Win XP很快也需要激活
|
| 软件狗[Dongles]的加密与解密技术 相关文章: |
|
|
|
| 软件狗[Dongles]的加密与解密技术 相关软件: |
|
|
|
|