【问题标题】:Encrypt assets (JSON) using DexGuard使用 DexGuard 加密资产 (JSON)
【发布时间】:2017-09-25 06:51:39
【问题描述】:

我正在使用 DexGuard v7.3.18,我想加密存储在 assets/json 中的 JSON 文件,我可以在我的类中访问这些文件,如下所示:

inputstream = context.getAssets().open("json/" + jsonFileName)

我为dexguard-project.pro 配置了各种选项,例如:

  1. -encryptassetfiles assets/json/**.json
  2. -encryptassetfiles assets/json/**

但两者都没有帮助加密 JSON 文件。根据 DexGuard 文档:

-encryptassetfiles [file_filter] 指定应加密的 Android 资产文件。资产文件存储在资产目录中,可以包含任何数据。混淆步骤可以自动加密它们并确保它们在运行时动态解密。为了使其工作,资产文件必须进行流式传输,并且它们的名称必须指定为字符串常量。这意味着您的代码必须调用 AsssetManager,如下所示: open("MyAssetFile") 然后,您的配置可以指定“-encryptassetfiles assets/MyAssetFile”。仅适用于混淆 Android 代码。

我使用 Apktool 验证了配置的 APK。我错过了什么?

【问题讨论】:

  • 您使用电脑上的程序加密apk文件中的资产文件?
  • 不,加密由 DexGuard 处理。
  • 完全不清楚你想要发生什么。
  • 我不确定哪个部分不清楚。我的问题很简单 - DexGuard 提供资产加密,我想知道应该如何设置选项以启用资产加密,并且我指定了我尝试过的选项没有按预期工作。
  • 如果您没有使用电脑上的程序来加密 apk 文件的资产中的文件,那么您在做什么?怎么了?什么时候?在哪里?完全不清楚。

标签: android android-assets dexguard


【解决方案1】:

您需要以这种方式专门加载资产文件,以便 Dexguard 加密您的介子文件:

AssetManager assetManager = getAssets();  
InputStream is = assetManager.open("json/file1.json");
InputStream is2 = assetManager.open("json/file2.json");
.......(individually load each file)

换句话说,文件名必须以常量字符串的形式明确出现在每个打开方法中。

否则,Dexguard 将不会加密文件或加密文件将无法正确解密。

希望这会有所帮助。
大卫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-26
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多