eewolf原创,转载请注明 1. App起始时,直接load so; 2. 真实dex没有单独存放,放置在壳dex的文件后面; 3. so 在JNI_onload中通过native代码,通过反射调用DexFile.java的loadDex方法从内存中load dex; 4. 直接继承自Acvitity类的DexClassDef结构中除classIdx均被修改为0,在load后,先将其结构体全部恢复,并直接让ClassLoader预加载好这些正确的Class; 5. 在classloader拥有了正确class描述的结构体后,再将所有结构体改错。 由上可以看到,如果想dump dex,只需要在JNI的FindClass函数处下断点即可。当然,这时是要在加载有问题的Class时去dump。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课