java - 加密 APK 无混淆 Dexguard

标签 java android encryption dexguard

为了进行评估,我想使用 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 中一样过滤后用 -encryptstrings class ... 添加所有类.pro 文件。
我的问题是 out.apk 中没有任何内容被加密。
我的设置有什么问题?
在此先感谢您的帮助。

更新:
我已经尝试了各种组合来加密 APK 而不混淆,但这是不可能的。 所以我的简历是只有使用 DexGuard 进行混淆才能加密。
我看到在没有混淆的情况下使用 DexGuard 加密的唯一变化是使用混淆加密并使用映射文件来恢复名称。
但是我没试过。

最佳答案

没错,要使字符串加密起作用,您需要启用混淆。

为了防止混淆类/方法/字段,您可以添加以下配置:

-keep class * { *; }

关于java - 加密 APK 无混淆 Dexguard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35984701/

相关文章:

java - Struts2自定义登录拦截器

android - 在 Android 中将符号转换为 HTML 实体代码

java - 在另一个类 TextView 中显示 Spinner 所选项目

encryption - 如何在命令行上解密加密的sqlcipher数据库文件?

Java PBE 加密字符串长度与输入相同

javascript - JS加密-python解密

java - (Azure SDK java)如何使用Java程序启用/禁用每个功能

java - Java流在完成上一个 map 之前开始下一个 map

java - android中字符串的比较

Android:顺序绘图不删除之前绘制的