查看原文:http://blog.unnoo.com/?p=1387 防泄密软件究竟能否真正做到对程序源代码进行加密?

我们认为,在目前的技术实现中: 1、试图用常规的“透明加解密软件”对付有经验的程序员,是“不可能完成的任务”; 2、使用桌面虚拟化技术,代码全在远程,才有可能做到对程序源码的“完美加密”。

为什么说常规的透明加解密软件无法对程序源代码完美加密呢?原因简述如下:

因为应用程序最终需要被编译为exe/dll并发布,而exe/dll与doc的区别在于,exe/dll需要被运行和调试。

如果允许exe以明文状态存在,那么程序员就能把源代码作为资源,嵌入编译后的exe里,然后导出成明文。

如果exe在正式发布前以密文形式存在,那么一般的透明加解密产品恐怕没法通过配置策略满足这个需求。因为这些产品都是以访问文件的进程类型来判断是否解密的。访问exe的是它的父进程和它自己,访问dll的是加载它的进程。这些进程的类型是多变的,很难用规则准确匹配。

退一步说,如果通过改进产品满足了上述匹配,对进程本身来说,自己就是明文可读的。于是就无法防止exe运行时把程序员隐藏在资源中的源代码通过网络传递出去,尤其是当前开发的正是一个网络程序(比如QQ)的时候。