修改android内部类/呼叫处理

时间:2010-09-09 06:06:01

标签: java android

由于整个Android内容都是开源的,我正在考虑在 com.android.internal.telephony 包中的一些内部类中进行一些小修改,当然我很乐意,如果我的应用程序可以使用修改后的类。我正在考虑使用反射或其他类型的未知java技巧替换运行时中的原始类:D ...也许我正在尝试做的是不可能的:(我不是我知道这就是我要问的原因。

注意:内部类的更改不会以任何方式更改其功能,更多的是扩展其功能,因此即使其他应用程序使用修改后的版本也不会破坏它们!

为什么我要这样做?我想要实现的目标是什么? 好吧,我想修改 com.android.internal.telephony.gsm.CallTracker 内部类,这样我就可以进行正确的呼叫处理(呼叫阻塞等...) 也许如果你知道如何做我想做的其他方式我想听听它:)

注意2:当你处理 android.intent.action.PHONE_STATE ,动作时,我知道这个方法,但是当广播这个动作时,它的反应太迟了。即使该解决方案涉及丑陋的黑客攻击,我也在寻找更好的解决方案:)

一如既往地感谢您的所有回复......

4 个答案:

答案 0 :(得分:1)

你不能这样做:)我会让你想象如果允许任何应用程序自由替换系统的核心部分会发生什么。您可以下载Android源代码,然后您可以修改它,您可以将修改上传到您的手机(如果您的手机已植根/解锁),但您无法通过简单的应用程序应用此类修改。

答案 1 :(得分:0)

在类加载之后更改类功能(方法,字节代码)是不可能的。反射/调用不会影响,只会影响静态字段和实例

您正在寻找添加其他方法或更改正在运行的系统的现有方法的方法,因为在您的“黑客”应用程序执行时,可能已经加载了相关的类。

我看到的唯一技术方法是提前更改类并部署修改后的系统。我现在只是忽略了可能的许可问题和安全性。但即使采用这种方式,您的软件将依赖于自定义操作系统,来自某些版本的分支,与官方更新断开连接,您必须要求您的客户安装自定义操作系统,例如 unknown < / em>功能。


Sidenote - 我很高兴,这真的不可能,否则我的手机已经完全的木马,病毒等......

答案 2 :(得分:0)

Romain是正确的,您不能尝试更改现有的系统类。

也就是说,通过创建处理电话呼叫的拨号器应用程序的替换,可以按照您的建议实施呼叫筛选。

具体而言,应用程序应处理意图ACTION_ANSWER,然后可以实现类似拨号程序的界面或明确打开拨号程序应用程序(或任何其他调用管理器)。

答案 3 :(得分:0)

实际上是攻击Android框架类的方法,它只取决于你想要攻击哪些。

  1. 您必须扩展您打算攻击的课程。
  2. 如果您想覆盖包私有方法和/或访问包私有变量,您可以将您的类放在同一个包中
  3. 您可以使用 反射
  4. 我实际上必须这样做来解决bug。 Romain在某种程度上是正确的。这一切都取决于你试图破解的代码的结构。你绝对不能破解Android内部,但你可以破解其他框架类,如Activity,View等。