排行榜 统计
  • 文章总数:1688 篇
  • 评论总数:5 条
  • 分类总数:8 个
  • 最后更新:昨天 21:09

加壳工具最佳实践(快速版) | Virbox LM 产品文档

本文阅读 11 分钟
首页 安全资讯 正文

加壳工具最佳实践(快速版)

为什么写VBP最佳实践(快速版)?

很多开发商都需要对自己的软件进行安全保护,以应对黑客/盗版者的恶意破解行为,维护自身的知识产权和经济利益。但软件保护专业性较强,专业名词和策略较多,初次上手时可能会存在很多疑问,不利于安全方案的快速应用。

对软件保护,我们推出了自己的加壳工具Virbox ProtectorVirbox Protector(LM),并完善了技术原理和使用文档。但新手使用者仍存在很多疑惑,比如:

“哪些函数需要保护?”、“选择什么加密方式?”、“对性能影响大不大?”

对于上述问题,我们整理了这篇文档,期望可以协助您快速、高效的把加壳保护用到现有的项目里。

函数选项的选择

函数选项有四个选项,从安全程度来说 碎片化>虚拟化>代码加密/代码混淆,运行效率正好相反。

代码加密和代码混淆

说明:

代码加密和代码混淆安全等级基本一致,代码加密是在内存层面上的。在运行过程中把代码解密到内存,执行结束又变回加密状态;代码混淆是永久的混淆,可以简单理解为添加很多无意义的指令和跳转,增大分析难度。

建议:

可以根据实际需求加密,代码加密是性价比极高,如果对性能和安全都有要求,可以选择代码加密。在接受的范围内,可以选择全部函数进行代码加密。(全部加密的情况需要考虑实际的性能,如果对性能影响不可接受,可适当减少加密后函数)

代码虚拟化和碎片化

说明:

虚拟化是做了虚拟机保护, 它将代码底层的逻辑转换为虚拟机指令。 破解的难度相当于对整个安全虚拟机进行破解,破解成本极大。

碎片化是授权产品Virbox LM(精锐5、软锁、云锁)独有的策略,我们通过安全中间件Virbox用户工具拿到了系统内核R0级别的权限,以此权限申请安全内存,把函数部分逻辑转移到此内存里,R0级别的权限可以让黑客无法访问我们申请的内存。

建议:

虚拟化和碎片化对性能有影响,如果函数内存在循环语句或对性能要求高,不建议使用。虚拟化和碎片化只建议用于保护关键逻辑,比如功能判断(判断客户有没有购买某个模块)或调用次数较少的关键函数上。

建议选择3到5处函数进行虚拟化加密,1到2处选择碎片化加密。

安全性和【性能/运行效率】平衡

情况说明

安全性和运行效率是成反比两个概念,添加安全策略后,会导致原始逻辑变得更加复杂,从而干扰破解者的破解。在实际情况下,有些性能延迟是可以接受的,比如图形界面,只需要做到用户无感知即可;有些性能延迟是不可接受的,比如之前运行在50毫秒左右,加固后变成200毫秒。但是事无绝对,我们可以通过更换加固策略,改善对性能的影响,从而找到一个对安全和性能都可以接受的平衡点。

操作建议

  1. 经过实际测试混淆会变慢10-100倍;虚拟机代码保护会慢100-1000倍,这些测试结果取决于CPU性能和浮点数运行、整数逻辑计算等。

  2. 使用SDK 混淆/虚拟化保护核心代码,比如VBPXXXBegin 和VBPProtectEND 保护局部函数,而不是大量无关代码。

  3. 避免保护大量循环、递归代码,这类代码加密后运行效率会变得很慢。

  4. 如果保护DLL,注意DLL的函数或者对象的方法实现。函数中如果包括调用WINDOWS-API,请取消IAT表保护,IAT表由于存在VM虚拟机保护,导致依赖WINDOWS-API函数会变慢。

安全性和【兼容性/稳定性】的平衡

情况说明

安全性和稳定性没有直接利害冲突,但因为加壳会改变原始的代码逻辑,可能对稳定性存在影响。

操作建议

  1. 安全性最大:先使用VBP最大保护,然后加壳再做测试,出现问题之后再根据具体问题减少加壳选项;
  2. 兼容性最好:先使用VBP最小保护,任何选项都不选,然后加壳再做测试,逐步加加密选项,看是否能顺利启动。
  3. 使用碎片代码保护关键性执行1-2次代码,主要用来保护软件跟授权最大化关联的位置。在可接受范围内可以多加,如果达到10处以上,黑客就基本放弃到盗版了。
  4. 虚拟机用来保护重要关键代码,可以是授权相关也可以是核心算法,但是效率会降低1万倍数量级别,代码混淆是可以还源代码逻辑效率降低1000倍数量级,两者相互使用最大化保护代码逻辑,防止竞争对手抄袭算法。
  5. 代码加密是性价比最高的代码保护,建议全加,尤其是dotNet代码。

注意几个问题:

  • PE文件结构如果有附加数据会被加密,程序执行时候会解密,但是第三方静态读取数据不会自动解密,所以数据校验可能会失败。
  • 程序加壳之后会被防毒软件当作病毒。这其实不是一件坏事,杀毒软件会自带脱壳器,进行病毒分析,如果脱壳失败,会提示疑似病毒。出现报毒说明现在保护强度,说明杀毒软件自带的脱壳器已经无法识别你的文件原始信息了。对于杀毒软件报毒,如何避免被查杀,请参考外壳文档的免杀部分文档。 主流安全软件免杀指南 | Virbox Protector

相关文档

授权外壳操作手册:

Virbox Protector(LM)操作手册-点击这里

独立外壳使用文档:

Virbox Protector使用文档-点击这里

报毒后提交免杀的步骤:

主流安全软件免杀指南

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://typecho.firshare.cn/archives/2922.html
免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。避免网络欺诈,本站不倡导任何交易行为。如您私自与本站转载自公开互联网中的资讯内容中提及到的个人或平台产生交易,则需自行承担后果。本站在注明来源的前提下推荐原文至此,仅作为优良公众、公开信息分享阅读,不进行商业发布、发表及从事营利性活动。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。
-- 展开阅读全文 --
精锐5加密锁锁有驱转无驱
« 上一篇 02-19
什么是云服务器 ECS
下一篇 » 02-19