【问题标题】:How to read compiled XML files such as the Android manifest如何读取已编译的 XML 文件,例如 Android 清单
【发布时间】:2018-09-10 01:57:45
【问题描述】:

谁能告诉我如何读取已编译的 xml 文件的内容,即从 .apk 文件中提取后。

xml 文件来自其他应用程序。

【问题讨论】:

    标签: android


    【解决方案1】:

    试试ApkTool

    一种用于逆向工程第 3 方、封闭、二进制 Android 应用程序的工具。它可以将资源解码为几乎原始的形式,并在进行一些修改后重建它们;它使逐步调试 smali 代码成为可能。此外,由于类似项目的文件结构和一些重复性任务(如构建 apk 等)的自动化,它还使使用应用程序变得更容易。

    【讨论】:

      【解决方案2】:

      你可以使用apktool,但是如果你只是想查看内容,有一个更快的方法。只需运行“aapt dump xmltree apkfile path”。 aapt 可从 Android SDK 获得。 path 是 XML 文件的 APK 内的相对路径。您可以使用解压缩或运行“aapt l apkfile”查看 APK 中的所有文件。

      结果的格式不是 XML,但应该给你原始 XML 的结构。 E:表示元素,A:表示属性,C:表示内容等

      沙查尔

      编辑添加:您还可以通过缩进 aapt 看到元素的嵌套。

      【讨论】:

        【解决方案3】:
            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

        【讨论】:

          【解决方案4】:

          据我所知,除非您拥有编译/加密应用程序时使用的“密钥”,否则这是不可能的。

          为了保护源代码。

          【讨论】:

          • Android 上没有代码加密(自定义方案除外),只有代码签名。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-20
          • 2019-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多