热修复

hot fix 线上修复

  1. dexposed:

    这是基于xposed的,xposed:替换/system/bin/app_process,共享java运行时库,让每个app都加载了XposedBridge.jar,在这个jar包中有一个hookMethodNative方法利用反射对内置方法进行覆盖

    dexposed将patch apk加载进来,通过DexposedBridge.findAndHookMethod方法找到对应的Method。

    slot是Method类中,描述此java对象在vm中的索引;native层通过dvmSlotToMethod方法,我们就获取了c层的Method指针。

    SET_METHOD_FLAG(method, ACC_NATIVE);标记成native方法,因为优先执行nativce方法,再method->nativeFunc 指向我们的dexposedCallHandler回调函数
    保存hook对象参数到insns。
    上面是dalvik的方式,art也是把实现指向native方法调度机制
  runtime,修复代码均需要反射
  2.
posted @ 2016-05-05 17:17  saki_god  阅读(215)  评论(0编辑  收藏  举报