很早就注册了论坛号,结果没分享过什么东西emm,发现现在大家用的注入方案基本上都是替换系统库,分享个不需要替换系统库的方案吧
先说限制:1.只能在Android 7.0及更高版本中使用;2.部分设备会报UnsatisfiedLinkError,还没找到原因,各位大神可以分析下~
1.源码分析
注:本文分析的是的源码
zygote对应的可执行文件其实就是app_process,它的main方法如下:
int main(int argc, char* const argv[])
{
// 省略无关代码...
AppRuntime runtime(argv[0], computeArgBlockSize(argc, argv));
// 省略无关代码...
if (zygote) {
runtime.start("com.android.internal.os.ZygoteInit", args, zygote);
} else if (className) {
runtime.start("com.android.internal.os.RuntimeInit", args, zygote);
} else {
fprintf(stderr, "Error: no class name or --zygote supplied.\n");
app_usage();
LOG_ALWAYS_FATAL("app_process: no class name or --zygote supplied.");
return 10