我正在使用Xamarin,我将所有API密钥存储在我的PCL中,名为appconfig.json
生成APK时,我的API密钥存储在哪里?
有人可以使用此APK并反编译以获取此文件的内容吗?
我知道这是可能的,但我在Mac上,因此无法访问Windows工具。
一旦编译完成,有人可以通过这些步骤来阅读appconfig.json的内容吗?这只是为了让我能证明它可以做到 - 我知道它可以,它只是花了我太久。谢谢!
答案 0 :(得分:2)
因此,假设我在我的应用程序的一个程序集中调用了这个json文件EmbeddedResource
(调用SomeLibrary
):
{
"Password": "SushiHangover",
"Logging": {
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}
我存档&发布.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
来获取详细信息。
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
~~~~
答案 1 :(得分:0)
对于Android应用,您可以在APK中包含Assets
中的任意文件string config;
AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("appconfig.json")))
{
config = sr.ReadToEnd ();
}