0

他们有什么方法可以拦截任何现有的android方法并将我们的实现重写为它吗?

我发现了一些技术,比如 iOS 中的方法调配,它可以帮助我们做我们可以在 android 中做同样的事情。

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

4

4 回答 4

2

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

幸运的是,出于明显的安全原因,这是不可能的,除非将手机 root 并将 Android 框架 JAR 替换为添加了您想要的安全漏洞的框架。

于 2013-06-05T20:38:44.297 回答
1

如果你能做到这一点,这是最简单的:

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

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

对于那些涉及 Binder IPC 的调用(大多数感兴趣的事情都有,但可能不是最容易解释的级别,通常不是跨版本可移植的级别),另一种选择可能是拦截该流量,或者使用内核中修改过的 Binder 驱动程序,通过将 /dev/binder 指向代理,或在 C 库 open/ioctl/etc 级别调用,在启动 zygote 或以其他方式修改 C 库时使用 LD_PRELOAD 之类的东西。

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

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

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

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

于 2013-06-05T20:39:11.383 回答
0

如果不分叉 AOSP 和更改操作系统,您就无法做到这一点。

于 2013-06-05T20:37:19.410 回答
0

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

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

于 2021-03-23T21:10:17.367 回答