当前位置: 首页 > 知识库问答 >
问题:

在不混淆的情况下加密APK

吴刚毅
2023-03-14

对于评估,我希望使用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
#...

我已经使用了工具jartf获取所有类名,然后使用-encryptstrings类添加所有类 在像conf.pro文件中一样过滤后
我的问题是,输出中没有加密内容。apk
我的设置有什么问题<提前感谢您的帮助。

更新:
我尝试了各种组合来加密APK而不混淆,但这是不可能的。所以我的简历是,只有使用DexGuard进行模糊处理,才能进行加密
我看到的使用DexGuard加密而不进行模糊处理的唯一更改是使用模糊处理进行加密,并使用映射文件恢复名称<但是我还没有试过。


共有1个答案

余信然
2023-03-14

这是正确的,要使字符串加密工作,您需要启用模糊处理。

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

-keep class * { *; }
 类似资料:
  • 我正在尝试通过PingFederate Idp进行身份验证。我正在使用asp。net mvc4,它通过身份和访问工具提供wsfed。看来我很好地恢复了saml断言。Idp确实要求SP上存在并确认证书。我从Idp获得了证书,并将其安装在受信任的根目录中。我在网上用这句话。将其配置为在受信任的根中查找。 这是我从asp.net得到的确切错误: 在此上下文中不支持加密算法http://www.w3.or

  • 问题内容: 我正在做一个登录页面。我有UITextField作为密码。 显然,我不希望看到密码。相反,我希望键入时显示圆圈。您如何设置发生这种情况的领域? 问题答案: 请将您的UItextField属性设置为安全。 试试这个.. textFieldSecure是您的UITextField …

  • 问题内容: 我对php和编码一般还是比较陌生的。 我有一系列条件需要测试是否已设置。它们是$ option1,$ option2,$ option3 因此,这里的问题是我需要根据条件是否设置来对mysql进行唯一查询。但是它们彼此之间有很多联系,实际上我有7种选择,因此分支绝对庞大!我几乎迷惑了自己之后才三点钟停下来。 必须有一种非常出色的书写方式-有人可以帮助我更好地理解吗? 问题答案: 无需动

  • 问题内容: 服务器上出现了一些垃圾邮件问题,在找出并删除了一些Perl和PHP脚本后,我决定检查它们的实际作用,尽管我是高级PHP程序员,但对Perl经验很少,有人可以给我一个建议吗?在这里手写脚本: http://pastebin.com/MKiN8ifp (这是一长行代码,脚本称为list.pl) 脚本的开始是: 它以很少的非标点字符继续,直到最后: 问题答案: 更换用得到这个。再次用有效负载

  • 我想在我的一个开源rails应用程序(3.2.12版)上安装New Relic。我不想在回购中使用许可证密钥。我想用ENV之类的东西来加载它。 默认情况下,它加载在newrelic中。yml文件。 YAML文件加载到哪里?我想我可以手动将其与从ENV哈希加载许可证的哈希合并。 有什么关于如何做到这一点的提示吗?

  • 我最近遇到了严格的别名规则,但我很难理解如何使用 在不违反规则的情况下执行类型双关。 我知道这违反了规定: 我知道我可以安全地使用C99中的联合进行打字双关语: 但是,我如何使用 在 C99 中安全地执行类型双关语?以下是否正确: 我怀疑代码仍然会违反严格的别名规则,因为变量< code>x地址处的内存可以被< code>x和一个解引用的< code>y修改。 如果通过< code>void *没