对于评估,我想使用DexGuard加密APK文件中的所有字符串,但不使用混淆,收缩或优化选项。
这是可能的还是我被迫混淆APK加密?
我使用以下命令行来加密所有类:
java -jar dexguard.jar @conf.pro -dontwarn -dontobfuscate -dontshrink -dontoptimize -injar in.jar -libraryjars android.jar -outjars out.apk
conf.pro看起来像这样:
-dontpreverify
-repackageclasses ''
-allowaccessmodification
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
#...
-encryptstrings class uk.co.senab.actionbarpulltorefresh.library.BuildConfig
-encryptstrings class uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher$ViewDelegate
-encryptstrings class uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher$Options
#...
我已使用工具jar tf ...
获取所有类名,然后在conf.pro文件中过滤后添加所有带-encryptstrings class ...
的类。
我的问题是在out.apk中没有加密。
我的设置有什么问题?
提前感谢您的帮助。
更新
我已经尝试了各种组合来加密APK而不进行混淆,但这是不可能的。 所以我的简历是加密只能通过与DexGuard的混淆来实现。
我看到用DexGuard加密而没有混淆的唯一变化是用模糊加密并使用映射文件来恢复名称。
但我还没试过。
答案 0 :(得分:2)
这是正确的,要使字符串加密起作用,您需要启用模糊处理。
为了防止对类/方法/字段进行任何混淆,您可以添加以下配置:
-keep class * { *; }