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

作者: 奔跑吧李博 | 来源:发表于2023-04-30 22:59 被阅读0次
    Stringfog Github地址

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

    • 支持app打包生成的apk加密。
    • 支持aar和jar等库文件加密。
    • 支持加解密算法的自主扩展。
    • 支持配置可选代码加密。
    • 完全Gradle自动化集成。
    • 不支持InstantRun。
    原理

    在编译时,将字节码字符串加密,打到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。

    相关文章

      网友评论

        本文标题:使用StringFog对SDK字符串进行加密

        本文链接:https://www.haomeiwen.com/subject/twrkjdtx.html