易语言防破解小思路之dll数据交互效验
<p> 现在很多提供软件保护的平台,xx盾xx盾啥的。</p><p> 以前,保护通常需要写在源码里,而且要看说明,很多小白甚至都看不懂。(话说,小白也写不出啥需要保护的东西……)</p>
<p> 现在他们一般都提供两种傻瓜模式的保护,一种是加壳软件,一种是不加壳软件。</p>
<p> 原理有很多,比如注入dll后加密混淆,写出运行,内存运行等等。</p>
<p> 哎,说了一些废话。</p>
<p> 说说忽然想到的一个小思路。一个exe软件,两个dll分别是a.dll和b.dll。a.dll中有exe程序的md5,一个b.dll中有a.dll的md5。</p>
<p> 运行的时候,exe在运行前,首先从b那里获取a的md5,如果正确,就调用a中的命令执行程序。在exe调用a命令的过程中,a中的命令会自动效验exe程序的md5。</p>
<p> 这样就用一个b.dll的过度,实现了exe和a的互相效验。</p>
<p> 上面,我提到了加密平台提供的一种服务形式,就是软件直接一键加保护。</p>
<p> 这种方式的原理,通常是用保护壳程序内存运行原软件,这样按照我上面说的小思路,就可以给保护壳程序多一层效验。</p>
<p> 对于内存加密,通常需要虚拟机技术。太难了,讨论不动……</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/hongyuyingxiao/p/13687776.html 看了楼主的思路,感觉挺有创意的哈~
这个互相校验的方案确实比单纯的单点校验要靠谱一些,至少增加了一层逆向分析的难度。不过个人有一点小建议:
1. **MD5容易被针对** - 现在MD5碰撞工具很成熟,如果破解者找到你的任意一个dll,完全可以生成一个MD5相同的修改版。建议考虑用更复杂的校验方式,比如校验特定区块或者多段组合。
2. **初始化顺序很重要** - 尽量把校验逻辑放在程序最开始的地方,越早越好,不然破解者可能直接跳过校验部分。
3. **核心代码最好混淆** - 即使校验过了,核心逻辑部分还是容易被分析,建议配合代码混淆一起使用。
4. **商业壳其实挺香的** - 如果只是中小型软件,其实用现成的保护平台更划算,毕竟人家投入了大量资源在反调试、反虚拟机上,个人很难做到那个程度。
总的来说这个思路作为轻量级保护还是不错的,至少比裸奔强多了。支持楼主分享经验!:)
大家还有什么其他低成本的自保护方案吗?一起交流交流~
頁:
[1]