扭曲变换加密 防止软件破解最好方法
来源:pcdog 作者: 出处:综艺读书 2006-11-11一、一般来讲,加密就是加壳
我们经常考虑,一个可执行文件,怎么样加密才能安全呢?
一般用的手段,是加壳。
|
|
|||
简单加壳是不安全的,这大家都知道了。我们一般把上述简单的加壳方式叫“压缩壳”。所以现在的加壳软件都在上述“压缩壳”的基础上,多做了一些工作,比如:
* 防止内存被 dump 。这实际上是不可能做到的。因为Windows操作系统就不是一个安全系统,你怎么可能做到内存不被dump呢?曾有一个壳,我用了多种方法dump都不成功。但最后还是找到了一个方法成功dump了。我这才惊叹dump原来有这么多种方法,真是防不胜防。
* 修改文件入口代码。因为一般软件都是用常用的几种编译器编译生成的。如果加壳软件知道你是用什么编译器编的(这很容易),把入口代码破坏掉,用另外一段功能类似的代码替换它。这样dump下来的代码就比较难找到正确的入口,直接被存为一个EXE的可能性就小多了。但还是会被反汇编的。
* 还有一些加壳软件,支持对一个或几个重点函数加密。甚至使用了虚拟机。但他们都只能重点加密少数几个函数,不可能把所有函数都加密。而且对这个函数还有很多要求。这可以想象。如果用汇编写一个函数,不加ret它可能连函数结束地址都找不到,怎么可能加密呢?
尽管加壳软件可以使用以上多种技术防止被跟踪,分析,还原,但我认为,它们仍然没没摆脱“壳”的这个中心思想。以上的这些技术不过是在“壳”的大前提下所做的一些小的插曲。它仍然是不安全的
二、扭曲编译的思想
做个比喻。加壳保护就好比是你桌上有宝贝,为了保护它,你在屋外围了一圈铁丝网。只要有人突破了这道铁丝网,进入你的屋子,一眼就看到了桌上的宝贝。这当然不安全。
重点函数加密的思想,就好比是,我屋外围了一圈铁丝网,我还把宝贝放进了保险箱里。如果有人突破了铁丝网,进入屋子,一眼就看到了保险箱。虽然保险箱不会被轻易打开,但他如果把保险箱搬走,慢慢分析呢?这也不够安全。
最安全的,就是进了屋子,却什么也找不着。没有目标,这才是最让人头疼的。
现在的编译器,都是追求生成高效率的运行代码。这些代码的模式基本一成不变。有经验的程序员看反汇编代码简单跟看源码一样,毫无秘密可言。如果我们有一个编译器,它的编译目标不是为了高效,而是为了防止被读懂,那该多好啊!我有C++源码,我能看懂。一旦编译,谁也别想通过反汇编看懂我想做什么,或者很难。遗憾的是,这样的编译器还没有。
如果我们自己编一个这样的编译器呢?不现实。工作量太大了。即使是找一个开源的C++编译器来改工作量也不得了。
直接做一个会加密的编译器行不通。而一旦编译连接生成EXE后,就只能加壳了。难道就没有办法了吗?我想出一个主意,就是加密编译的中间文件OBJ,输出ASM文件,用ML编译成OBJ,然后再link连接!
这个方法有几个好处:
* OBJ文件格式相对简单。不象处理C++源文件那么工作量大。
* OBJ文件中保留了很多源文件的信息,比如符号名,代码与数据,标号等等。方便加密。这些信息很多在LINK的过程中被丢掉了。所以LINK为EXE后再处理就极不方便了。
* 这是一个全新的思想!对代码的加密已经不限于加壳,而是加密每一个函数,每一条指令。再也没有一目了然的汇编了。
* 可以很容易设定加密的强度。可以根据需要,对一部分代码轻量级加密,而对另一部分代码重点加密。
* 可以嵌套加密。重复使用几种加密变换,无限制地使代码膨胀。
* 因为是加密OBJ文件,所以不管DLL还是EXE都可顺利加密,驱动程序也可以基于这个思想,我们的加密软件就要出台了!我们暂时叫它扭曲变换器 1.0
·openssl的man中文文档 (5315次浏览)
·深入掌握网络加密及解密方法 (4914次浏览)
·数据加密技术 (4284次浏览)
·找回失落的加密文件!数据恢复软件有奇效 (1858次浏览)
·HASH函数,信息摘要(Message Digest)和MD2 (996次浏览)
·软件狗[Dongles]的加密技术(1) (993次浏览)
·什么是电子商务加密技术? (977次浏览)
·教你强力破解E-mail密码的三种方法 (961次浏览)
·计算机密码的安全设定技巧 (949次浏览)
·openssl的man中文文档 (5315次浏览)
·深入掌握网络加密及解密方法 (4914次浏览)
·数据加密技术 (4284次浏览)
·找回失落的加密文件!数据恢复软件有奇效 (1858次浏览)
·HASH函数,信息摘要(Message Digest)和MD2 (996次浏览)
·软件狗[Dongles]的加密技术(1) (993次浏览)
·什么是电子商务加密技术? (977次浏览)
·教你强力破解E-mail密码的三种方法 (961次浏览)
·计算机密码的安全设定技巧 (949次浏览)
·openssl的man中文文档 (5315次浏览)
·深入掌握网络加密及解密方法 (4914次浏览)
·数据加密技术 (4284次浏览)
·找回失落的加密文件!数据恢复软件有奇效 (1858次浏览)
·HASH函数,信息摘要(Message Digest)和MD2 (996次浏览)
·软件狗[Dongles]的加密技术(1) (993次浏览)
·什么是电子商务加密技术? (977次浏览)
·教你强力破解E-mail密码的三种方法 (961次浏览)
·计算机密码的安全设定技巧 (949次浏览)
·对称、非对称和HASH加密的应用 07-20
·计算机密码的安全设定技巧 07-19
·教你强力破解E-mail密码的三种方法 07-19
·HASH函数,信息摘要(Message Digest)和MD2,MD4 07-19
·什么是电子商务加密技术? 07-19
·软件狗[Dongles]的加密技术(1) 07-19
·找回失落的加密文件!数据恢复软件有奇效 07-18
·深入掌握网络加密及解密方法 07-17
·数据加密技术 07-17




