【文件属性】:
文件名称:深入理解java虚拟机第二版源码-MethodHook:钩子java方法
文件大小:140KB
文件格式:ZIP
更新时间:2021-06-07 01:31:23
系统开源
深入理解java虚拟机
第二版
源码
原文链接:
引言
目前国内大厂均开源了自己的
Android
热修复框架,阿里的《深入探索
Android
热修复技术原理》全面介绍了热修复技术的现状,原理与展望。一方面是阿里系为代表的底层方法替换,另一方面是以腾讯系为代表的类加载方案。前者支持立即生效,但是限制比较多;后者必须冷启动生效,相对较稳定,修复范围广。之前分析过微信的热修复框架
Tinker
即属于后者,
。本篇文章主要分析以
AndFix
为代表的底层方法替换方案,并且实现了《深入探索
Android
热修复技术原理》中提到的方法替换新方案。
方法替换是
AndFix
的热修复方案的关键,虚拟机在加载一个类的时候会将类中方法解析成
ArtMethod
结构体,结构体中保存着一些运行时的必要信息以及需要执行的指令指针地址。那么我们只要在
native
层将原方法的
ArtMethod
结构体替换成新方法的结构体,那么执行原方法的时候便会执行到新方法的指令,完成了方法替换。
Andfix
中的关键代码如下:
public
static
void
addReplaceMethod(Meth
【文件预览】:
MethodHook-master
----.gitignore(761B)
----gradle()
--------wrapper()
----README.md(12KB)
----build.gradle(498B)
----gradlew.bat(2KB)
----gradlew(5KB)
----app()
--------CMakeLists.txt(2KB)
--------.gitignore(7B)
--------build.gradle(1KB)
--------proguard-rules.pro(929B)
--------src()
----gradle.properties(851B)
----.idea()
--------runConfigurations.xml(564B)
--------misc.xml(2KB)
--------modules.xml(357B)
--------copyright()
--------compiler.xml(686B)
--------gradle.xml(626B)
----settings.gradle(15B)