AndFix如何修补方法?

时间:2015-09-18 08:21:28

标签: android dalvik

我最近了解了一个允许实时方法修补的Android库AndFix。现在,据我所知,Dalvik不允许运行时操作字节码或dex。

有人可以就AndFix如何进行实际修补提供一个很好的解释吗?

1 个答案:

答案 0 :(得分:5)

查看来源,您可以看到Dalvik here的补丁机制。 dalvik_replaceMethod()函数正在修改内部Dalvik状态,将Method结构更改为指向替换方法。

它不会修改磁盘或内存中的DEX,只是将方法调用路由到替换方法。这种方法高度依赖于版本,因为对Method的更改或方法的工作方式会破坏事物。自2011年中期以来,Dalvik没有太大的变化,这让事情变得简单,但是如果你看一下附近的“艺术”目录,你可以看到Android的每个主要版本的不同实现。