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是一個很是有參考價值的開源庫,能夠好好研究學習

相關文章
相關標籤/搜索