StringFuck

Yet Another String Obfuscator for Android

MavenCentral

一个字符串混淆器,旨在防止被jadx、MT等工具一键解密

目前还很简陋,只能简单骗过反编译器(毕竟纯 Java)

可能存在不少 bug,只是个玩具,不适用于生产环境

Features

  • 只支持 AGP 7+
  • 支持 API 24-32
  • 防一键解密(目前很简陋,人工还是容易找到解密类)

使用方法

Root project

buildscript {
    val stringFuckVersion by extra("0.1.1")
    dependencies {
        classpath("icu.nullptr.stringfuck:gradle-plugin:$stringFuckVersion")
    }
}
App

val stringFuckVersion: String by rootProject.extra

plugins {
    id("icu.nullptr.stringfuck")
}

dependencies {
    implementation("icu.nullptr.stringfuck:library:$stringFuckVersion")
}

stringFuck {
    // 解密密钥,ByteArray 类型
    key = xxx
    // 或使用 setKey(String)
    
    // 编译时是否输出调试信息
    isPrintDebugInfo = false
    
    // 是否在 debug buildType 中使用
    isWorkOnDebug = false
    
    // 是否使用白名单模式
    // 若不启用,StringFuck 只会混淆以列表中开头的类
    // 若启用,StringFuck 会混淆以列表中开头以外的所有类
    isWhiteList = false
    
    // 混淆列表
    obfuscationList = setOf("icu.nullptr")
    
    // 自定义加密方法,类型 ((String) -> ByteArray)?,设置为空则使用默认 Xor 方案
    encryptMethod = null
    
    // 自定义解密类完整类名,设置为空则使用默认 Xor 方案
    decryptMethodClassPath = null
}
初始化
StringFuck.init();

GitHub

View Github