Thread治理 -- ART Hook

上一篇文章讲到使用AOP技术,从字节码上修改Thread,但未通过Java创建的线程无法监控到,那如何能监控到Native创建的线程呢?

首先看下Thread源码的创建过程:
Android上创建一条线程的流程如下:

使用ASM修改JAVA 字节码的方式虽然可以解决应用层创建线程的问题,但是so内创建线程的无法定义。如果在pthread创建线程时,可以把当前的调用栈信息(包括线程id、方法名、函数名、行号?)保存到内存或文件,在需要分析时再根据线程id匹配相应的文件实现跟踪,将会对优化线程相关问题分析的效率有极大帮助。

Native Hook方式有PLT和inline方式,不过inline hook的方式兼容性不好,且不稳定。
PLT方式成熟方案有xhookbhook都可以满足需求。

通过Art Native Hook的方式在创建线程时代理到自定义的方法内:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容