MegatronKing / StringFog

一款自动对字节码中的字符串进行加密Android插件工具
Apache License 2.0
1.71k stars 342 forks source link

debug包正常,release包static String的变量初始值丢失问题 #141

Open Bewitching-coder opened 1 year ago

Bewitching-coder commented 1 year ago

release包在visitField方法中object值不为空,在返回时变量被置空,在接下来的visitLdcInsn和visitFieldInsn方法中不会执行这个变量的回调,编译出包后变量初始为空

MegatronKing commented 1 year ago

使用的Java版本是多少?

Bewitching-coder commented 1 year ago

jdk 11

Bewitching-coder commented 1 year ago

静态变量当有初始值时,stringfog会在StringFogClassVisitor的visitField中置空,在的visitCode中不会去对mStaticFields中的存储的value不为空的变量赋值,在接下来的visitLdcInsn和visitFieldInsn方法中不会对变量赋值,导致编译出的apk中的静态变量初始值为空

Bewitching-coder commented 1 year ago

目前打印了项目中所以的静态变量,发现有3处出现这个问题,腾讯的OpenSDK中有2处,我的解决方案是在clinit的visitCode中对mStaticFields中的存储的value不为空的变量加密赋值