hook方式启动插件activity
2016-05-24 16:07:52 0 举报
在Android系统中,插件Activity的启动通常采用Hook方式。Hook是一种动态改变程序执行流程的技术,它可以在不修改原有代码的情况下,对程序的行为进行干预。在插件Activity的启动过程中,Hook技术可以拦截系统的Intent分发过程,将插件Activity的启动请求转换为系统Activity的启动请求,从而实现插件Activity的正常运行。这种方式不仅可以保证插件Activity的稳定性和兼容性,还可以提高应用的扩展性和灵活性。但是,Hook技术的使用需要一定的编程技巧和经验,否则可能会导致程序崩溃或者出现其他不可预期的问题。
作者其他创作
大纲/内容
动态代理IActivityManager接口
hook ActivityThread
message.obj:ActivityClientRecord
\b反射获取mH对象,即Handler
\b反射获取sCurrentActivityThread对象
android.os.Handler$Callback
\b反射获取gDefault对象
获取AMN class
遍历args,获取intent
即IActivityManager接口
伪造message中intent对象,转成插件activity
hook ams
动态代理Handler.Callback
获取Singleton class
\b反射获取mInstance对象
把新建立的intent放入参数中,让原IAM接口执行
start插件activity
拦截startActivity方法
即Singleton对象
偷梁换柱,让AMS认可
mH的callback设置为代理
替换IMA接口为动态代理的proxy
替换Component,使用已注册的activity代替
让mH执行新的message
0 条评论
下一页