通常,VMP保护能力和性能两者很难兼得,不断地提高APP安全保护水平,势必会对性能造成一定影响。面对性能问题,开发者的安全诉求不得不与性能做妥协。 全VMP保护虽然可以对APP安全做到超强保护,但其性能问题也使开发者望而却步。 不能对APP所有代码做VMP保护,以往的经验都是随机挑选,但这种方案不是对每个APP的最优解。
01
加固保允许开发者自定义需要做VMP保护的函数和类,兼顾性能与安全
➤ VMP保护可以以更高强度保护函数和类
在APP运行过程中,将被保护后的代码使用360加固保自定义的解释引擎来运行,由于DEX中的核心方法和类已被转换成360加固保自定义指令,做到高强度保护。即使破解者绕过重重防守最终拿到DEX文件,也无法获取到DEX文件中的核心数据和代码,从而使得DEX保护达到指数级别的提升。
➤ 自定义VMP保护的函数和类,兼顾性能,增加保护灵活性
为平衡安全带来的性能问题,360加固保为开发者提供了可定制化的VMP保护方案,开发者可以针对关键函数或类做VMP保护。在加固过程中360加固保就可对开发者所关心的类和方法实行VMP保护。
02 如何自定义函数和类进行VMP保护?
➤ 概述: 开发者选择关键函数或类,做VMP保护
➤ 说明: 目前只支持对函数或类做VMP保护,不支持接口、类结构声明;用户如果想对接口做VMP保护,可以标注实现该接口的函数或类
➤ 具体步骤: 1 定义一个名为QVMProtect的Annotation,规则如下:
2 标记类做VMP保护,可对类中除了<clinit>和<init>之外的其他全部函数做VMP保护,操作:需在被保护的类前增加@QVMProtest作为标识,如:
3 标记函数做VMP保护,操作:需在被保护的函数前增加@QVMProtest作为标识,如:
4 编译项目 5 对APK进行加固操作 ➤ 标记类做VMP保护 可以看到,标志之后,TestClass1中的所有函数变为Native,无法还原获取原始代码逻辑 (加固前)
(加固后)
➤ 标记函数做VMP保护 可以看到,标志之后,TestClass1中的函数 test2变为Native,无法还原获取原始代码逻辑 (加固前)
(加固后)
➤ 性能说明 开发者根据实际开发需求,指定关心的类或函数做VMP保护。在APP实际运行阶段,VMP保护对APP性能的影响程度,会根据被保护函数的调用顺序,及调用次数等因素不同而不同。开发者在兼顾性能和安全时,需要开发者有针对性的对APP进行性能和兼容性的测试。
来源 360加固保
|
评论
直达楼层