扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:赛迪网 来源:赛迪网安全社区 2007年10月6日
关键字:
在本页阅读全文(共2页)
很多加密公司说他们的产品如何好,说的你不由得不信。我想那大多是理论上的事情。看看用他们的加密锁加密的软件是如何被破解的,就知道实际上的情况是如何的了。好像还没有听说一直没被破解的软件,如果有的话,加密公司一定早作宣传了。还有一个特别容易产生误区的地方,就是用加密锁加密的话,似乎就加密的好了。个人经验,这是大错特错的认识,也是绝大多说开发经理、产品经理的认识。这和加密公司的宣传有一定的关系,因为他们要卖加密锁。事实上针对机器特征的License加密法一点也不比加密锁差。只是针对用户机器的License会给用户造成一定的不方便。你想一想,解密者修改你的读取加密锁的代码和修改你的读取机器特征的代码有什么不同吗?请注意,绝大多数解密者是软解密,修改代码而已。所以,加密的好不好,取决于你如何调用加密模块,如何把加密模块和你的程序有效地融合在一起。恐怕没有几个解密者会分析加密库的内部情况,他只要了解接口就行了。
由于芯片价格的下降,目前的加密锁采用了用于智能卡的芯片。从理论上来说,这种加密锁可以搞得不可解密。但这是从理论上说,实际上没有什么人可以把加密锁用到这种地步。还是上面的问题,你必须把接口混淆到解密者无法理解的程度才行。你总需要判断接口调用返回的数据吧!想一想,像ACDSee这样难做的注册机都有人不辞辛苦地分析出来,一般人做的加密锁判别,解密者手中,用IDA分析后,几乎是一目了然了。不清楚的地方再用OD动态跟踪一下就基本上搞定了。特别是,加密锁公司的模块,多半没有什么反跟踪功能,即使用他们的exepack压缩一下,也是很容易脱壳的,几乎无法防止IDA分析和OD跟踪。
说了半天,结论在几千年前就有了。就是大家都知道的普遍真理,矛盾是普遍存在的,需要努力斗争才能克服矛盾。也就是说,克服被解密的矛盾需要你花大功夫。没有什么好的办法让你轻松地解决这个问题,请大家牢记这个真理。
我只能给大家两条建议:
1.自己好好研究一下解密,自学成才成为加密高手。
2.请教加密高手,让他们帮你加密。
至于具体加密的时候有什么技巧呢,下面几条比较重要。
1.像VB、VF、PB这样的Script语言比较难解密,可能的话采用一下。
2.对于编译型语言,一定要把判据弄得多一些,分散一些,代码乱一些。这和软件工程的思想正好相反。乱到你自己都看不懂了,别人反编译以后就更难看懂了。
3.如果用C、C++的话,用局部的函数指针来调用加密函数。多用全局变量,最好用结构里的某一位作判据,而不是单一的int。
4.加一些垃圾代码混淆视听。
5.让你的加密算法在不同的机器上有不同的表现,这样在某一机器上解密的东西,就很难在其他机器上使用。比如根据机器的特征生成一些数据,然后再使用这些数据。
6.给自己的程序加一个壳。建议使用ASPR2.0,使用里面的SDK和壳通信,采用所有的选项加密。
7.十分渴望不被解密而又不怕兼容性不好的话,采用Xprotect。
技巧很多,也不容易很条理地说全。我想即使说全了,大家没有实际体会也不容易弄明白。而且,说得容易做起来难。最后再重复一下,没有什么好的办法让你轻松地解决这个问题。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。