拦截Android方法

时间:2013-06-05 20:31:38

标签: android

他们以任何方式拦截任何现有的android方法并重写我们的实现吗?

我已经找到了一些技术,比如在iOS中进行方法调整,这有助于我们做到这一点,我们可以在android中做同样的事情。

我们可以使用通用技术来拦截安装在Android手机上的所有应用程序的某个功能。 例如我想拦截我手机上存在的所有android应用程序的onCreate方法。

4 个答案:

答案 0 :(得分:1)

  

我想拦截我手机上存在的所有Android应用程序的onCreate方法。

幸运的是,出于明显的安全原因,这是不可能的,除非可能,如果您使用手机并将Android框架JAR替换为增加了所需安全漏洞的那个。

答案 1 :(得分:1)

如果您可以这样做,最简单的方法是:

A)修改Android本身的安装,改变运行时的行为

B)在安装之前修改特定的apk,用替代品替换smali代码中的符号名称。

对于那些涉及Binder IPC的调用(大多数感兴趣的事情,但可能不是最易于解释的级别,并且通常不在版本中被视为 portable 的级别),另一个选项可能是通过在内核中修改Binder驱动程序,通过在代理上指向/ dev / binder,或在启动zygote时使用类似LD_PRELOAD的C库open / ioctl / etc调用级别拦截该流量否则修改C库。

您也可以通过修改dalvik来做某事(虽然要注意dex优化过程在安装时解析符号名称而不是运行时间 - 所以也许在odexing期间进行替换)。

另一种可能性是在jdwp或本地级别调试应用程序,从而捕获任何有趣的内容。

最后,可以在虚拟执行环境中运行应用程序,在那里您有机会代理与实际托管Android系统的所有交互。

从安全角度来看,所有这些方法都需要通常的Android安全模型(root,系统安装能力或安全性错误)的例外,用户的合作(在安装之前修改apk或在虚拟环境中安装它)而不是直接),或应用程序开发人员的合作(保持调试标志,将拦截构建到您自己的应用程序中)

答案 2 :(得分:0)

如果不分支AOSP并更改操作系统,则无法做到。

答案 3 :(得分:0)

这可以通过组合 Magisk 然后编写 Xposed module 来实现。使用 API 编写一个 Android 应用,然后在 Xposed 管理器中将其作为模块启用。

注意: 显然,这需要有 root 权限的设备。它永远不会被允许在无根手机上随意使用其他应用程序和软件包。