Skip to main content

Android SO保护流程

简介#

Android应用下的so文件通常是通过使用 C/C++ 编译器进行编译生成的,一般用于性能敏感等重要的功能,所以so安全性变得尤为关键。

由于用户对Android so库的安全性的需求不同,有些用户注重so库的代码逻辑有些用户注重其他文件的保护,故我们提供了不同的保护方案,可根据自己的需求选择加密方案。

方案对比#

so库分别有保护Android apk/aab应用时选择so库进行保护单独对so库进行保护两种保护方式;

安全性

单独对so库进行保护方式的安全性高;

保护Android apk/aab应用时选择so库进行保护方式的安全性低;

操作性

保护Android apk/aab应用时选择so库进行保护单独对so库进行保护加固时操作便捷;

单独对so库进行保护方式需要先将so库单独加固然后放回到Android apk/aab中,然后对Android应用重新签名才可安装运行。

功能性

单独对so库进行保护方式,so库对函数的代码逻辑进行保护(包括代码虚拟化、混淆和加密),也包括导入表保护、压缩、内存校验、移除调试信息等功能。

保护Android apk/aab应用时选择so库进行保护方式默认so库只有加密压缩功能;

方案1#

通过保护Android apk/aab应用时选择so库进行保护;

操作流程概述#

  • 将Android apk/aab文件拖入Virbox Protector中;
  • 配置函数选项,设计个性化的保护方案(可选);
  • 配置加密选项(可选);
  • 选择so库保护;
  • 保护选中项目。
  • 保护后的Android apk/aab直接安装运行即可。

方案2#

从Android apk/aab应用lib目录下获取so库文件,对单个或多个so库进行保护,具体的功能介绍参考Native保护指引;

操作流程概述#

  • 将需要保护的SO文件导入Virbox Protector中;
  • 配置函数选项,设计个性化的保护方案;
  • 配置加密选项;
  • 保护选中项目;
  • 将保护后的so库放到Android apk/aab文件中。

导入文件#

可直接将so文件拖入到Virbox Protector

配置函数选项#

点击添加函数,选择函数及保护方式(代码混淆、代码虚拟化、代码加密)。

image-20220524173151708

配置加密选项#

可设置压缩、内存校验、反调试

执行保护#

点击保护选中项目即可保护成功

image-20220524173441279

运行#

以上述so库为例:

1.加壳后的程序会在同目录下生成protected/libtnpn.so(请备份好未保护的libtnpn.so);

2.将protected/libtnpn.so替换到Android apk/aab中;

3.对Android应用进行重新签名,然后安装运行即可。

注:在原程序同目录下生成***.ssp(比如libtnpn.so.ssp)的文件为加壳时的配置文件,不需要放到Android apk/aab中。

问题#

1.可以对so库单独保护后再对Android apk/aab进行加固吗?

答:可以

流程:先将so库单独保护,将保护后的so库放到Android应用中,在将Android应用直接拖入到加壳工具,进行保护。

2.已经对so库单独保护了再对Android apk/aab加固时还能选择so文件吗?

答:不需要,单独对so库保护的安全性已经很高了,再加一层保护会影响应用性能。

3.直接保护so库的功能和保护Android应用的功能有冲突么?

答:没有