SDK-Android(Jar/Aar)加固
功能介绍
JAR/AAR包加固
使用 VMP 方案对 SDK 进行加固,通过后台配置的方式指定保护 SDK 中的方法
函数虚拟化保护
对 SDK 下的指定类中的方法采用 VMP 模式加固,使用自定义虚拟机保护 Java 层核心代码,指令运行于自定义虚拟机中
函数抽取
对 SDK 中代码进行抽离加密隐藏,防止攻击者静态分析
so保护
支持对SDK中的SO文件进行加固保护
防内存 dump
被保护之后的文件无法在内存去dump
防调试
防止集成 SDK 时通过 IDE 调试 SDK 的 Java 代码 / 通过 IDA、GDB 等调试器调试 Native 代码
使用说明
该加固工具为jar包文件,适用于Windows、Linux以及Mac系统,以下均以Windows环境下描述,其他系统环境使用方法类似。下载地址点击下载。
使用方式
注意:加固项由易盾后台进行配置,请联系易盾技术支持人员。
配置待加固文件:提供需要 vmp 保护的类名
加固需要提供如下信息:
- 将待加固的 jar 或 aar 文件
- sdk 混淆后生成的 mapping 文件
如果用户在开发sdk的时候使用了proguard混淆,那么会在build/outputs/mapping/release/mapping.txt 目录下看到名为 mapping.txt的文件,该文件即为 mapping 文件。换而言之如果用户在开发 sdk 时未使用混淆规则则无需该文件
把以上的文件压缩成 zip
命令行模式(注意,第一次使用需要配置config.ini文件)
- 命令行模式参数,以 .aar 结尾的文件,需要打包成.zip进行加固
java -jar NHPProtect.jar -sdk -input E:\\xxx.zip
- 参数说明如下:
参数 | 说明 |
---|---|
-sdk | 必填项,表示保护对象为sdk |
-input | 必填项,参数后面跟待加固的sdk 文件绝对路径,建议压缩成 zip |
-output | 默认加固后的文件输出在原文件同路径,-output参数可以指定加固后文件的输出路径和文件名,示例:java -jar NHPProtect.jar -yunconfig -sdk -output E:\enc\test_enc.zip -input E:\yiduntest\xxxx.zip |
config.ini文件配置说明
默认config.ini必须要跟NHPProtect.jar在同一目录下,如果需要指定config文件,可以执行-config 命令参数来处理:
java -jar NHPProtect.jar -sdk -config E:\Desktop\test\config.ini -input E:\xxx.zip
config的功能主要有以下几点:
设置appkey
用户需要将appkey填写在该配置文件中,格式如下所示。appkey请在官网登录账号后加固服务-服务管理获取。
[appkey]
key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
接入注意事项
加固之后的 sdk,在被 apk 集成时,需要配置加固壳混淆规则和被加固类混淆规则。
加固壳混淆规则:
如果主工程开启了混淆,需要在原工程的 proguard-rules.pro 中增加如下内容
-keep public class com.netease.nis.sdkwrapper.Utils {public <methods>;}
被加固类及其引用类混淆规则: 加固后的 zip 中,会有一个 sdk_auto_proguard.txt 文件,将其中的内容复制 到 proguard-rules.pro 中防止被加固类及其引用类被混淆。