背景:爬蟲工程師對逆向的需求及安卓逆向發(fā)展前景淺析
這篇文章寫給Python爬蟲工程師們,互聯(lián)網(wǎng)寒冬的就業(yè)壓力越來越大,流量越來越涌向移動端,爬蟲和反爬的攻防不斷升級,這一切的一切,都讓我們不得不學習新技能,才能保持競爭力和養(yǎng)家糊口(一群單身狗,掙的錢連自己都養(yǎng)不活) 。
App逆向不斷出現(xiàn)在爬蟲工程師的日程表里,可是到底該怎么入門App逆向?
這篇文章就是漫談App逆向的學習,主要分成三個部分。
**1. 指出一些自學的誤區(qū)
2. 推薦一些入門的學習資料
3.推薦一些長期的學習資料 **
這篇文章的目標讀者是計劃學習Android逆向的爬蟲er,他們可能有如下特征:
幾乎沒有Java基礎
幾乎沒有Android基礎
對Android逆向的思路和工具缺少了解
下文會一一解答這些困惑和焦慮,但適合每個人的學習模式也各有不同,可以選擇性的實踐。本文對Android逆向老手幫助不大,但如果老手愿意在評論區(qū)分享經(jīng)驗和教訓,給過來人一些指點,我表示衷心的感謝。
一、自學Android逆向的誤區(qū)和陷阱
1.1. 不要試圖熟練掌握Java編程和Android開發(fā)后再開始學習逆向
如果你才十五歲,有大把時間可以學習和泡妹,那我收回這話??囱┱搲环?2歲踏上逆向之旅的天才少年,他們可以恣意的吸收知識,全部隨著自己的興趣和心意在逆向世界中遨游。而你呢,你可能不再年輕,并且即將或已經(jīng)踏上工作崗位,準備讓Android逆向成為你的加分項和一塊跳板,那么我認為你有更優(yōu)的方式學習Android逆向。而不是耗費數(shù)個月甚至更久的時間沉迷開發(fā),最后磨損掉興趣,放棄逆向的學習,嘆一句“逆向真難,行不通的”。
Java是一門復雜精妙 的語言,但你又不是要當Java開發(fā)工程師???
Android應用開發(fā)充滿魅力,新技術(shù)迭出,但你又不是要做Android工程師???

你可能很想反駁,那我不懂Java,不懂Android怎么可能搞得了逆向,佛系逆向?隨緣逆向?別別別,這可行得通,我指的只是入門時不必精通Java和Android。原因有一堆,但我認為最主要的原因在于——開發(fā)和逆向的關注點不同。
我們先羅列一下Android面試和實際應用開發(fā)中出現(xiàn)的一些技術(shù)關鍵詞

而我們破解時需要關注什么?尤其是對爬蟲的逆向需求來說,簡而言之,我們在破解加密字段如何生成,那我們的關鍵詞是這些

開發(fā)人員需要開發(fā)和實現(xiàn)App的各種功能、關注數(shù)十個廠商上百個機型的適配、Apk體積的優(yōu)化,App性能的優(yōu)化,更吸引用戶的UI,更友好的bug解決機制(熱修復),而我們破解,一般來說,需要關注應用的網(wǎng)絡通信、加解密、安全防護。開發(fā)和逆向的目標和目的不同,所以你并不需要對開發(fā)的那一套了然于胸,才能開始破解。
除此之外,App的安全問題只是Android開發(fā)的眾多議題之個。一部分Android開發(fā)人員,甚至連反編譯App的流程和工具都只是聽聞過而已,尤其是對于小廠/一般App,安全問題它們能投入的精力十分有限,這個原因十分好理解。
狗仔和偷拍只是明星成名之后才會煩惱的事,而十八線女星正在下雨的橫店乞討著生活,App也是這樣,如果你搞的不是大廠App(騰訊系/阿里系/今日頭條系等)、超級App(支付寶/微信/抖音/快手等),或者特殊用處的App(買票/支付/網(wǎng)商等),那么開發(fā)人員給App弄個市面上常見的加固,搞個so層的加密,已經(jīng)是它們防護的上限,可能這些不算太簡單,但難也難得有限。因為App的用戶留存率和開發(fā)人員的溫飽才是他們最重要的議題。
所以,你不必花太多時間了解和實踐紛繁復雜的Android開發(fā)知識,只需要看兩本Java入門書,Android入門書,就可以開始學習逆向了,各種技術(shù)和知識可以在逐漸深入的過程中學習。
1.2. 不要好高騖遠
這一點非常重要,上來就想學如何解密復雜的so、如何脫殼,ollvm,vmp或者擼抖音,小紅書,美團這種成熟且大型的應用……

先跟著一些優(yōu)良的入門教程和視頻,打好基礎訓練思路,從簡單的demo開始,一步一個腳印。
1.3. 不要收集過多的資料 & 分辨資料的時效性
比較久遠的實戰(zhàn)/破解/逆向文就不要去看了,逆向這個圈子本來就比較封閉和遲緩,應用開發(fā)和保護的技術(shù)日新月異。此時建議【易錦大學安卓逆向系統(tǒng)班入門課!】

1.4. 不要自負,覺得Android逆向很簡單
在理想的狀態(tài)下,Android app的逆向工作者需要非常熟悉java和C/C++ 語言,有開發(fā)大型或成熟Android軟件的經(jīng)驗,熟悉Android底層和App運行原理,簡而言之,最好是一個成熟老練的android高級工程師。但是,這并不意味著我們必須得到這個地步才能開始Android逆向的旅程。你應該先從一個比較系統(tǒng)的角度盡可能了解Android逆向的全貌,然后摘取那些"低垂的果實",跟著教程去使用一些成熟的工具,學習思路,完成幾次破解。然后在問題中不斷去學習和補充知識。如果你想要準備好一切在上路,也是可以的,萬流如海,殊途同歸,只不過你要忍受漫長的枯燥學習期罷了。
二、Android逆向入門的資料和基礎
這些書和內(nèi)容都是非常好的,
一、基礎
《Java 核心技術(shù) 卷一》公認經(jīng)典
《第一行代碼(第2版)》
這本書寫的很好,是公認的Android入門書。你可以認認真真照著例子全部敲一遍,也可以只走馬觀花了解一邊App的開發(fā)流程,看完本書,你會明白一個Android App是怎么從無到有。
3.加解密
《Java 加密與解密的藝術(shù) (第二版)》
講了如何使用Java實現(xiàn)各種各樣的加密,這本書可看可不看。
接下來就可以開始Android逆向之旅了,這是最簡單的配置,按照需求,你后續(xù)可以學習這些東西。
二、Android逆向書籍和資料
1.《Android 軟件安全權(quán)威指南》
白色的封面,我愛叫它白皮書。Android逆向入門需要的方方面面,它都涉及到了。
這本書適合按照需求找章節(jié)看,如果按照順序看,你可能會死在第三章“Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范”
我重新排一下序,同時,我建議易錦大學工具安裝教程去配置工具環(huán)境(需要工具聯(lián)系qq:3251901516)??梢匝b了java開發(fā)環(huán)境后,用jadx或者jeb萬金油直接擼,但如果你喜歡敲命令行,用無大礙,下面的閱讀順序只是我個人喜好,讀者自行甄別和選擇。
第一、二章——環(huán)境搭建和如何分析Android程序,瀏覽即可。
第三、第四章——Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范和Android文件格式,瀏覽即可,內(nèi)容很重要,但不是入門的內(nèi)容。
第五章——靜態(tài)分析Android app,這也是很多培訓課程的第一課,我個人也認為這個應該先看,而且寫的很好。
第六章——動態(tài)分析Android應用,寫的很好,但6.1的動態(tài)分析框架我沒有用過,似乎有些老舊不太好用,讀者可以試試。
第十章——Hook與注入,Xposed+Frida是這一章節(jié)的重點,F(xiàn)rida是目前最流行的動態(tài)插樁工具。
第一十章節(jié)——軟件保護技術(shù),講的很全面。
章節(jié)七八九是Native層的內(nèi)容,我把它劃分到下一部分,入門單單指Java層,章節(jié)十二是軟件殼的內(nèi)容,也是進階的內(nèi)容。
2.《Android應用安全防護和逆向分析》
黃色封面,我叫它黃皮書,這本書的內(nèi)容也充實有料,和白皮書一樣,也是面向Android開發(fā)/安全人員,門檻比較高。我個人也是建議按照模塊看,按照順序看的話小心坑。
全書分成三個部分,防護篇和工具篇都講的很好。這本書也是必備。
這兩本書是引路明燈,但光看這兩本書,是遠遠不夠的,你需要真正的實戰(zhàn),還有看書也是比較枯燥的,如果條件允許的話建議去報班系統(tǒng)學習,有老師帶,看視頻比看書好的多,書籍的話更多是幫助你一些提升,但是對于自學能力不強的不建議!
最后再大家附帶一張安卓逆向工程師前景大致圖。不止是爬蟲行業(yè),其他編程行業(yè)逆向安全也會等著你!
