2021年正確的Android逆向開發學習之路
說明
文章首發於HURUWO的博客小站,本平台做同步備份發布。如有瀏覽或訪問異常或者相關疑問可前往原博客下評論瀏覽。
原文鏈接 2021年正確的Android逆向開發學習之路直接點擊即可前往訪問。
前言
在做從正向的程序開發轉到逆向開發的兩年里,深切體會到兩種開發的不同。尤其是學習道路這一塊走了很多的彎路,當然我現在也不是厲害的逆向。所以所有的看法僅代表個人意見,如有不同看法請在評論區打出來。
正向開發為什么容易學習
以普通的Android開發為例,一位新手想要學習正常的Android開發,那么他非常容易獲得:
- 谷歌官方提供的入門教程
- 谷歌官方提供的免費好用的IDE AndroidStudio
- 各種入門 進階的 尤其是中文的 書籍 比如 第一行代碼 Android藝術開發探索 等等
- 龐大的開發人員和活躍的社區 各大編程論壇比如CSDN 都有 Android的一席之地
- 豐富的解決方案 遇到的問題可以在搜索引擎上隨意搜索出答案 也可以去論壇社區提問
- 好用的開發語言包括java Kotlin 或者是 js 都是相比逆向 的匯編 ARM 來說更容易學習的
7.持續的官方優化 及時的文檔更新 雖然谷歌一直在更新Android版本,使得開發者不得不學習新的版本開發知識。但好在官方給出詳盡的資料文檔以及相關的開源代碼示例,使得重新學習非常簡單。
逆向開發為什么難以學習
和正向開發相比,逆向開發的學習難點在於:
- 沒有任何官方的逆向資料,谷歌不會教你怎么逆向,做安全加密的官方更不會教你怎么逆向。所以所以的逆向都是一些個人或者小組織的內部學習。
2 .一言難盡的逆向工具,把編譯好的代碼反過來解析是件非常麻煩的事情。java層有免費的jadx apktool等工具 總體來說勉強可用。即使是付費的軟件比如JEB等工具,還原代碼起來也是差強人意。至於so層的,除了IDA(付費)沒有其他的 ollydbg 的話,估計沒啥人用吧。 - 逆向工具並不能幫你完成所有事情,你需要很大的力氣才能看懂工具反過來的代碼。所以需要類似 frida xposed 等hook 工具分析 運行時的狀態。所以需要額外的學習更多的知識。
- 逆向開發同樣的要了解非常多的正向開發知識,而且未必比正向開發來的少。沒有正向開發的知識支撐,你或許難以入手。
- 混雜的技術棧。逆向過程你或許需要學習包括且不限於 android開發 JNI開發 通信協議 hook 匯編 arm指令 python js lua(逆向分析游戲) c/c++ liunx 等知識,了解的越多做起事情越容易。
- 少量且隱秘的從事人員,封閉的且極少更新的社區。比如看雪論壇,即使時熱門的Android板塊也是幾天才有一條回復,半個月來一篇新帖。你想提問或許難以得到回應。
- 無法搜索到的解決方案。如果問題是常見的如軟件安裝 或者 框架問題,或許很快有答案。但是具體到某個APP或者某個某行代碼報錯,你可能翻遍整個互聯網也沒有答案。這時候一個可靠的引路人極其重要。
- 不斷更新加強的安全措施。逆向就是和安全人員之間的對抗。所以安全人員會不斷的加高逆向的難度,讓其大到正常人無法突破。你需要自己去分析去找到門路,對抗最新的安全措施你只能靠你自己,百度是搜不到答案的。
正確的路線學習Android逆向
別的不說了 先來個經典路線圖
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OWnMeOy5-1610610217671)(https://www.huruwo.top/01.png)]
使用印象筆記搭建個人知識庫
鑒於逆向開發的諸多難度 尤其是知識混雜的特點 構建一個屬於自己知識庫尤為重要。
我們以印象筆記為例,通過文章分類分組+內連接方式做到查缺補漏,最后搭成一個完整的逆向知識體系。就好比搭建一個自用的百度搜索。
1.建立知識分類
2.建立總目錄_附帶分類文章鏈接
3.編寫新吸收的知識點文章 鏈接到總目錄
4.在文章筆記中涉及到新的知識點直接引用鏈接 點擊即可跳轉
5.在引用的知識點上做橫向的擴充,豐富知識庫
6.遇到問題 利用搜索功能到達文章 得到相關解決方案
最后附圖 包括整個知識的架構和跳轉
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-OWnMeOy5-1610610217671)(https://www.huruwo.top/01.png)]
總結
以上就是文章內容 如果幫助到你 請給個收藏或點贊。
