【问题标题】:Does Proguard de-obfuscate obfuscated Strings when optimizing the code?Proguard 在优化代码时是否对混淆的字符串进行去混淆处理?
【发布时间】:2013-07-30 14:10:50
【问题描述】:

有时我们需要在代码中存储一些我们想要保护的字符串,例如 Google Play 中的 App Id、第三方 API 密钥、用于创建哈希的秘密种子等。

为了保护这些字符串,开发人员有时会使用 XOR 操作或其他技术对其进行混淆(即:XOR operation with two strings in java)。

如果我们在发布代码之前运行 Proguard,因为它对代码执行了相当复杂的优化,我猜它可以解析最终的字符串,最终在发布的 apk 中发送未混淆的字符串......这是真的吗?

这很有趣,而不是混淆代码 Proguard 会去混淆手动混淆的数据...

你们如何定位这个?是否排除 proguard.cfg 中带有混淆字符串的类?

【问题讨论】:

  • 无论你对代码中的字符串做什么,它最终不会在内存中转换为明文并以明文形式发送到任何需要它的函数吗?任何检查您的应用程序内存的人都可以查看此内容。只是一个想法。

标签: android security obfuscation proguard deobfuscation


【解决方案1】:

我曾使用 Base64 或 XOR 等简单技术对字符串进行混淆处理。根据我的经验,即使启用了优化,Proguard 也无法对手动混淆的数据进行去混淆处理。

在导出项目并启用 Proguard 后,您可以尝试使用APKtoolDex2jar 等工具反编译您自己的源代码。然后您应该查看字符串是否经过去混淆处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多