【问题标题】:How do I decompile my appconfig.json如何反编译我的 appconfig.json
【发布时间】:2017-12-11 20:03:58
【问题描述】:

我正在使用 Xamarin,我的所有 API 密钥都存储在我的 PCL 中的一个名为 appconfig.json 的文件中

生成 APK 后,我的 API 密钥存储在哪里?

有人可以拿这个 APK 并反编译得到这个文件的内容吗?

我知道有可能,但我使用的是 Mac,因此无法访问 Windows 工具。

有人可以引导我完成这些步骤以在 appconfig.json 编译后阅读其内容吗?这只是为了让我可以证明它可以做到——我知道它可以做到,只是花了我太长时间。谢谢!

【问题讨论】:

  • 实际上我不太确定,我们是 MVVM iOC 容器并在 OnCreate() 期间在本机层初始化它,但 appconfig.json 来自 PCL。当我打开 APK 的 Zip 时,我可以转到程序集 -> dll.config,但我认为这不是我要找的
  • 我们只是在运行时读取 JSON 文件的内容
  • 啊,我在这里看到我们将它作为程序集资源嵌入并像这样读取它 -> 'var resourceNames = assembly.GetManifestResourceNames();'
  • 建议在Reverse Engineering Stack Exchange咨询逆向工程方面的问题。

标签: xamarin apk app-config reverse-engineering api-key


【解决方案1】:

假设我在我的应用程序的一个程序集中(调用 SomeLibrary)将此 json 文件标记为 EmbeddedResource

{
    "Password": "SushiHangover",
    "Logging": {
        "Debug": {
            "LogLevel": {
                "Default": "Warning"
            }
        },
        "Console": {
            "LogLevel": {
                "Default": "Warning"
            }
        }
    }
}

我存档并发布.apk

提取apk内容

unzip com.sushihangover.SomeApp.apk -d foobar

搜索所有嵌入资源:

使用ikdasm搜索嵌入式资源:

find . -name "*.dll" -print0 | xargs -n 1 -0 -J % ikdasm % | grep .mresource

.mresource public charinfo.nlp
.mresource public collation.core.bin
.mresource public collation.tailoring.bin
.mresource public mscorlib.xml
.mresource public SomeLibrary.appconfig.json

找到appconfig.json资源,我们可以再次使用ikdasm来获取详细信息。

SomeLibrary.appconfig.json 详细信息:

ikdasm assemblies/SomeLibrary.dll

结果:

~~~~
69 62 72 61 72 79 00 00 ) // ...SomeLibrary..
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}
.mresource public SomeLibrary.appconfig.json
{
  // Offset: 0x00000000 Length: 0x00000116
  // WARNING: managed resource file SomeLibrary.appconfig.json created
}
.module SomeLibrary.dll
// MVID: {3100E9F8-3BB0-4E49-ADC7-33B284FCCFAE}
.imagebase 0x00400000
~~~~

string获取详细信息的程序集:

cd foobar
find . -name "*.dll" -print0 | xargs -n 1 -0 -J % strings %

~~~
mscoree.dll
!This program cannot be run in DOS mode.
.text
`.rsrc
@.reloc
    "Password": "SushiHangover",
    "Logging": {
        "Debug": {
            "LogLevel": {
                "Default": "Warning"
            }
        },
        "Console": {
            "LogLevel": {
                "Default": "Warning"
            }
        }
    }
BSJB
v4.0.30319
~~~~

【讨论】:

  • 哇,@SushiHangver,你是寿司忍者。这正是我一直在寻找的,这太棒了。谢谢!!
  • @stepheaw 没问题...?
【解决方案2】:

对于 Android 应用,您可以在 APK 中包含任意文件为 Assets

string config;

AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("appconfig.json")))
{
    config = sr.ReadToEnd ();
}

【讨论】:

  • 我不认为这是我要问的。我在问我的应用程序中是否有一个名为 appconfig.json 的文件,在编译时内容会保存到哪里?你是说这个文件会保存在 Assets 下?
  • 您在询问如何在构建时在 APK 中包含任意文件。答案是使用 Android 资产
  • 我在问是否有人可以反编译 APK 以查看我的 PCL 中包含的 JSON 文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
相关资源
最近更新 更多