Android技术知识Android开发Android开发经验谈

使用StringFog对SDK字符串进行加密

2023-04-30  本文已影响0人  奔跑吧李博
Stringfog Github地址

一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具,正如名字所言,给字符串加上一层雾霭,使人难以窥视其真面目。

原理

在编译时,将字节码字符串加密,打到aar、jar中。在运行时,将字符串解密。

混淆

StringFog和混淆完全不冲突,也不需要配置反混淆,实际上StringFog配上混淆效果会更好!

接入步骤
  1. 在项目的根build.gradle设置:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.github.megatronking.stringfog:gradle-plugin:4.0.1'
        classpath 'com.github.megatronking.stringfog:xor:4.0.1'
    }
}

2.在接入stringfog的模块下添加配置:

plugins {
    id 'stringfog'  //引入stringfog插件
}

import com.github.megatronking.stringfog.plugin.kg.RandomKeyGenerator

stringfog {
    enable true
    // 指定加解密的具体实现类,可以用默认实现的xor库或者aes-cbc库,也可以自己定制实现,记得配置dependencies
    implementation 'com.github.megatronking.stringfog.xor.StringFogImpl'
    // 指定需加密的代码包路径,可配置多个,未指定将默认全部加密
    fogPackages = ["com.xxx.networkmonitor"]
    // 可选(3.0版本新增):指定密钥生成器,默认使用长度8的随机密钥(每个字符串均有不同随机密钥),
    // 也可以指定一个固定的密钥:HardCodeKeyGenerator("This is a key")
    kg new RandomKeyGenerator()
    // 可选(4.0版本新增):用于控制字符串加密后在字节码中的存在形式, 默认为base64,
    // 也可以使用text或者bytes
    mode base64
}

dependencies {
    ...
    // 这里要和上面选用的加解密算法库一致,用于运行时解密。
    api 'com.github.megatronking.stringfog:xor:4.0.1'
}

配置好以上,编译后就会自动进行加密,无需在初始化或者调用方法了。

在demo的module中打出aar包,并对aar包进行反编译,进行对比:

原代码:


字符串加密后的代码:



将原有的明文字符串,转为了StringFog.decrypt(xxxx,xxxxxx)

加解密的字符串明文和暗文会自动生成mapping映射文件,位于outputs/mapping/stringfog.txt。
上一篇 下一篇

猜你喜欢

热点阅读