【发布时间】:2018-09-10 01:57:45
【问题描述】:
谁能告诉我如何读取已编译的 xml 文件的内容,即从 .apk 文件中提取后。
xml 文件来自其他应用程序。
【问题讨论】:
标签: android
谁能告诉我如何读取已编译的 xml 文件的内容,即从 .apk 文件中提取后。
xml 文件来自其他应用程序。
【问题讨论】:
标签: android
试试ApkTool
一种用于逆向工程第 3 方、封闭、二进制 Android 应用程序的工具。它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们;它使逐步调试 smali 代码成为可能。此外,由于类似项目的文件结构和一些重复性任务(如构建 apk 等)的自动化,它还使使用应用程序变得更容易。
【讨论】:
你可以使用apktool,但是如果你只是想查看内容,有一个更快的方法。只需运行“aapt dump xmltree apkfile path”。 aapt 可从 Android SDK 获得。 path 是 XML 文件的 APK 内的相对路径。您可以使用解压缩或运行“aapt l apkfile”查看 APK 中的所有文件。
结果的格式不是 XML,但应该给你原始 XML 的结构。 E:表示元素,A:表示属性,C:表示内容等
沙查尔
编辑添加:您还可以通过缩进 aapt 看到元素的嵌套。
【讨论】:
Use appt for android-sdk (ex:- /build-tools/27.0.3/aapt )
./aapt d xmltree ./debug.apk AndroidManifest.xml
N: android=http://schemas.android.com/apk/res/android
E: manifest (line=1)
A: android:versionCode(0x0101021b)=(type 0x10)0x1
A: android:versionName(0x0101021c)="1.0" (Raw: "1.0")
A: package="com.example.activity" (Raw: "com.example.activity")
E: uses-sdk (line=6)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x8
A: android:targetSdkVersion(0x01010270)=(type 0x10)0xf
E: application (line=8)
A: android:label(0x01010001)=@0x7f030000
A: android:icon(0x01010002)=@0x7f020000
E: activity (line=10)
A: android:label(0x01010001)=@0x7f030000
A: android:name(0x01010003)=".SampleActivity" (Raw: ".SampleActivity")
E: intent-filter (line=12)
E: action (line=13)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=14)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
这个链接可能对http://elinux.org/Android_aapt有帮助
另一种工具“AXMLPrinter”google源码链接https://code.google.com/archive/p/android4me/downloads
java -jar ./AXMLPrinter2.jar ./debug.apk_FILES/AndroidManifest.xml
【讨论】:
据我所知,除非您拥有编译/加密应用程序时使用的“密钥”,否则这是不可能的。
为了保护源代码。
【讨论】: