0

我最近挂钩了一个应用程序,并且我发现了一些可以在其中调用它们的方法,例如我在主活动中挂钩了之前的 onCreate 方法,然后我也可以调用一些方法。那很完美。

但是我想直接通过我的应用程序调用它们,我可以通过BroadCast来实现,但是广播不能运行超过10秒,运行一些大任务非常糟糕,有时我更喜欢可以返回结果。

所以我可以在远程应用程序中添加我的服务并启动它似乎很棒,但问题是它不在AndroidManifest.xml.

顺便说一句,我怎样才能从远程应用程序中获取 ClassLoader,如果我得到了 ClassLoader,我不确定它是否会工作。

欢迎指正!谢谢你们。等待您的意见。请随时通过电子邮件shiqwang@gmail.com或微信(id:imwangshiqi)与我联系

4

1 回答 1

0

如何将我的服务添加到远程应用程序中并启动我通过 Xposed 注入的服务?

简短的回答:如果没有在 3rd 方应用清单中注册服务,您将无法启动它。虽然使用 Xposed 您可能会修改此行为,但这可能是个坏主意,不仅因为您会弄乱 Android 内部,还因为有更简单的替代方法来执行“远程调用”。

长答案:如果我理解正确,您想构建自己的应用程序,该应用程序能够控制通过 Xposed 挂钩的其他 Android 应用程序。

如果是这种情况,请了解两个应用程序将完全隔离(不同的 VM),您不能简单地将对象从 3rd 方应用程序(即挂钩应用程序)传递到您的应用程序,并期望对该对象执行任何调用第 3 方应用程序。您应该检查远程方法调用 (RMI)以了解这些概念。这回答了您关于类加载器的问题。

尽管如此,如果您只想在该应用程序上远程调用您的一种方法,那么您肯定可以做到这一点。正如您所提到的,如果未在其清单中指定,您将无法在 3rd 方应用程序中启动服务(至少在没有重大黑客攻击的情况下并非如此)。但是,如果您在您的应用程序中启动该服务,您可以强制第 3 方应用程序绑定到它,并实现调用您在第 3 方应用程序上的方法的消息处理程序(通过 IPC)。

事实上,在使用 Android Messenger 执行此通信之前,我已经这样做了(我已经写了一篇详细的帖子)。您将需要挂钩应用程序活动(以及如果您想要的其他起点,例如广播接收器)以绑定到远程服务。然后该服务可以发送消息以触发挂钩应用程序上的操作。

于 2017-03-02T12:03:01.550 回答