现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

话说软件保护的攻与防

2013-08-10 06:00 工业·编程 ⁄ 共 695字 ⁄ 字号 暂无评论

根据领导的要求,最近在研究软件保护技术。

软件保护实际上是多年来都很难解决的一个问题,目前情况下,大多数软件都在发布之后很快出现破解版。这个问题实际上没有终极解决方案,只能说使用某种方法在技术上抵御破解,增加破解的难度和需要的时间。根本原因是,我们开发是用高级语言,而破解者使用的是汇编语言。我们开发主要是业务逻辑,而破解者是在CPU的角度在思考。不过你什么样的软件,最终都要编译为CPU可以理解的指令,而只要逆向研究人员能够对CPU的工作原理了然于胸,那逆向出某个软件的逻辑就只是时间的问题

在软件保护这个方向上,工程师们想出了很多的处理办法,但这些手段都只能在一定层面上实现保护功能。这里罗列一下软件保护的主要研究内容:

1、代码混淆,主要是通过增加大量无用的混乱的指令,给代码的理解造成困难

2、代码校验,通过在代码中插入自我校验的功能,使得进程可以检测到自身是否被修改

3、SMC,主要是对代码进行动态的加解密,使得程序在磁盘上静态存储时与在内存中运行时是两个状态,进程自身对代码序列进行动态解密,这种方法可以抵御静态分析。

4、调试环境检测,通过软件方法检测当前进程是否被调试

5、信息隐藏,主要是通过加密将程序中所用到的字符串等进行加密

6、加壳,还可以分为给PE文件加上压缩壳、加密壳、虚拟机壳等

7、另外还有一些新的软件水印,软件防篡改,软件相似性分析等新的研究方向

目前比较好的保护方法是软件硬件化,也就是将一部分功能开发成硬件;或者软件功能分布化,就是将软件功能分开,使用时必须通过互联网,只有与服务器端正确对接才可以使用。

要做好软件保护首先要学会逆向和破解,不懂如何攻击就无法进行防御。

给我留言

留言无头像?