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