ASM插桩该如何学习

ASM插桩该如何学习

本文内容为:ASM插桩的学习路线以及注意点android

ASM插桩能作什么

  1. 性能优化
  2. 性能监控
  3. 混淆
  4. 安全加密
  5. 无痕埋点
  6. 代码自动生成:Dagger、ButterKnife、Protobuf
  7. 代码分析:错误排查
  8. ......

能干什么,取决于你的想象力,可是不是说学了ASM你就能开发这些,ASM仅仅是个工具git

熟悉并掌握字节码

字节码无疑是ASM插桩中最为重要的知识点,有人看了其余教程可能以为有插件帮助咱们生成字节码,就能够不那么注重字节码,并非如此,不了解字节码,你看别人的源码就不知道他插桩到底干了什么,并且不少状况下插件所提供的功能并无想象中那么好github

我在youtube上发现了一个较为不错的教程,我下载了过来,在此作一个分享,相信你看完视频后,对字节码会很是熟悉   www.bilibili.com/video/av569…  你能够经过bilibili直接观看视频安全

字节码学习过程的注意点

在我以前的博客  字节码结构对照表 中提供了两个工具,以及对照表,当你学习字节码的时候能够经过对照表对字节码文件进行分析,必定要本身对着二进制一步一步分析一次,分析一次,受益一辈子性能优化

另外,你能够在学习阶段使用命令行去查看字节码,后续学习及开发阶段我推荐插件来分析,as中的插件效果好像不是很理想,因此这里我推荐使用intellij中的  jclasslib Bytecode Viewer 插件,很是细致ide

image.png

ASM语法学习

这部分跟着官网学是最好的,同时我也搬运了一份中文版的 ASM4使用手册,ASM中主要有两种开发方式,一种是核心API,一种是树形API,各有好处,能够在手册中具体看到,两种API的使用,都应该要掌握工具

看几篇博客

稍微看几篇博客,主要是看看本身有没有什么疏漏点,具体博客内容也不作推荐了,由于大部分都是相似的,搜索 android 插桩 就行性能

开始动手

若是你钟爱于核心API,能够参考 github.com/Leaking/Hun… 去学习如何编写代码,若是你喜欢用树形API,能够参考我写的两个demo github.com/MikaelZero/… ,主要包含两部分,一个字符串加密,一个简单的时间埋点,我写的Nova是基于didi开源的 booster ,booster是一个很是有参考价值的开源库,能够好好研究学习

相关文章
相关标签/搜索