AndFix 如何修补方法?

How does AndFix patch methods?

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

有人可以很好地解释 AndFix 如何进行实时修补吗?

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

它不修改磁盘或内存中的 DEX,只是将方法调用路由到替换方法。这种方法高度依赖于版本,因为对 Method 或方法工作方式的更改会破坏事物。 Dalvik 自 2011 年年中以来没有太大变化,这使得它很容易,但是如果你查看附近的 "art" 目录,你可以看到 Android.

每个主要版本的不同实现