AndFix 如何修补方法?
How does AndFix patch methods?
我最近了解到一个 Android 库 AndFix,它允许实时方法修补。现在,据我所知,Dalvik 不允许运行时操作字节码或 dex。
有人可以很好地解释 AndFix 如何进行实时修补吗?
查看源代码,您可以看到 Dalvik 的补丁机制 here。 dalvik_replaceMethod()
函数正在修改内部 Dalvik 状态,更改 Method
结构以指向替换方法。
它不修改磁盘或内存中的 DEX,只是将方法调用路由到替换方法。这种方法高度依赖于版本,因为对 Method
或方法工作方式的更改会破坏事物。 Dalvik 自 2011 年年中以来没有太大变化,这使得它很容易,但是如果你查看附近的 "art" 目录,你可以看到 Android.
每个主要版本的不同实现
我最近了解到一个 Android 库 AndFix,它允许实时方法修补。现在,据我所知,Dalvik 不允许运行时操作字节码或 dex。
有人可以很好地解释 AndFix 如何进行实时修补吗?
查看源代码,您可以看到 Dalvik 的补丁机制 here。 dalvik_replaceMethod()
函数正在修改内部 Dalvik 状态,更改 Method
结构以指向替换方法。
它不修改磁盘或内存中的 DEX,只是将方法调用路由到替换方法。这种方法高度依赖于版本,因为对 Method
或方法工作方式的更改会破坏事物。 Dalvik 自 2011 年年中以来没有太大变化,这使得它很容易,但是如果你查看附近的 "art" 目录,你可以看到 Android.