【问题标题】:Modifying installed APKs on an android device修改安卓设备上已安装的 APK
【发布时间】:2012-03-13 05:22:10
【问题描述】:

我正在使用 Android 进行试验,我想知道以下是否可行:我可以使用另一个 APP 修改/修补已安装的 APP 吗?

我知道可以通过 root 访问,但我想知道非 root 手机。 想到的唯一解决方案如下:

-从 data/app/ 文件夹创建原始 APK 的副本 - 修补/重建它 - 启动补丁APK的安装

用户需要确认安装,但理论上它可以正常工作吗?还有其他我没有想到的技术吗?

如果您想知道,我有兴趣将不同的字符串和其他资源注入现有应用程序以提供翻译或其他修改(例如:游戏中的作弊),而不更改原始应用程序的来源。

【问题讨论】:

    标签: android apk


    【解决方案1】:

    您是对的,您可以在设备上执行此操作。 Smali/Baksmali可以在Android上使用,apktool也应该是可调用的(我只试过smali)。

    大约一年前,我尝试在设备上使用 smali 并自动修补源输出。网上有一些信息(我目前无法找到,抱歉)但非常有限,至少有人展示了如何正确使用 smali/baksmali。我已经放弃了这种方法,因为我不太擅长 java,而且手机上的资源相当有限。

    我想到的另一种方法是将实际工作卸载到网络中的某个服务器。但这有其自身的问题,因为您需要传输文件,您可能需要 framework.apks,等等。

    这是有趣但很难的东西,您需要解码/解析/修补/重建 apk,这必须是可靠的。当你失败时,最糟糕的是用户的手机坏了(我想修改关键的系统 apk,坏主意;))。

    【讨论】:

    • 谢谢,我会研究 smali/baksmali。顺便说一句:我不想修改系统 apk(听起来很危险,正如您正确指出的那样;))
    【解决方案2】:

    如果重新安装是无缝的并且您需要:INSTALL_PACKAGES 权限,则更好。

    现在,INSTALL_PACKAGES android:protectionLevel 是“signatureOrSystem”,这意味着应用需要使用与系统映像签名相同的证书进行签名。

    现在,使用与用于签署系统映像的证书相同的证书对自己的应用进行签名似乎是一项艰巨的任务,即使不是不可能的任务,因为供应商可能不愿意让其他人使用他们的证书。再说一次,有些人可能希望您的应用程序包含在他们的系统映像中。无论如何,这并不重要,因为它是 Android 并且 Android 有一个 ROM 市场。

    Android ROM 越来越成为 Android 的一般“工作”或“功能”的代名词。这是 Android 用户所期待的。 Android 市场上有可用的 ROM 管理器应用程序,可以列出和安装 ROM 等。

    因此,对于获得 INSTALL_PACKAGES 权限的应用来说,本质上可以制作自己的 ROM,或者,与制作 ROM 的人合作,要么将应用包含在 ROM 中,要么使用用于签署 ROM 系统映像的证书签署应用程序。

    同样,供应商完全有可能将应用程序包含在他们的“固件”(系统映像)中。你必须接近他们。

    :)

    【讨论】:

      【解决方案3】:

      如果两者都是您的应用,请使用 .content provider 在应用之间共享数据。如果其他应用来自其他开发者,那么您根本无法修改该应用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-21
        相关资源
        最近更新 更多