背景:爬蟲工程師對逆向的需求及安卓逆向發(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ā)后再開始學習逆向
如果你才十五歲,有大把時間可以學習和泡妹廓鞠,那我收回這話味混。看雪論壇不乏12歲踏上逆向之旅的天才少年诫惭,他們可以恣意的吸收知識翁锡,全部隨著自己的興趣和心意在逆向世界中遨游。而你呢馆衔,你可能不再年輕拷获,并且即將或已經(jīng)踏上工作崗位未蝌,準備讓Android逆向成為你的加分項和一塊跳板左冬,那么我認為你有更優(yōu)的方式學習Android逆向狰腌。而不是耗費數(shù)個月甚至更久的時間沉迷開發(fā),最后磨損掉興趣,放棄逆向的學習,嘆一句“逆向真難,行不通的”。
Java是一門復雜精妙 的語言俭令,但你又不是要當Java開發(fā)工程師??落蝙?
Android應用開發(fā)充滿魅力,新技術迭出,但你又不是要做Android工程師?套菜?顿肺?
你可能很想反駁,那我不懂Java,不懂Android怎么可能搞得了逆向,佛系逆向?隨緣逆向么夫?別別別邢滑,這可行得通,我指的只是入門時不必精通Java和Android。原因有一堆,但我認為最主要的原因在于——開發(fā)和逆向的關注點不同。
我們先羅列一下Android面試和實際應用開發(fā)中出現(xiàn)的一些技術關鍵詞
而我們破解時需要關注什么隆圆?尤其是對爬蟲的逆向需求來說,簡而言之颊糜,我們在破解加密字段如何生成,那我們的關鍵詞是這些
開發(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入門書河绽,就可以開始學習逆向了,各種技術和知識可以在逐漸深入的過程中學習唉窃。
1.2. 不要好高騖遠
這一點非常重要耙饰,上來就想學如何解密復雜的so、如何脫殼纹份,ollvm苟跪,vmp或者擼抖音,小紅書蔓涧,美團這種成熟且大型的應用……
先跟著一些優(yōu)良的入門教程和視頻件已,打好基礎訓練思路,從簡單的demo開始元暴,一步一個腳印拨齐。
1.3. 不要收集過多的資料 & 分辨資料的時效性
比較久遠的實戰(zhàn)/破解/逆向文就不要去看了,逆向這個圈子本來就比較封閉和遲緩昨寞,應用開發(fā)和保護的技術日新月異瞻惋。此時建議【易錦大學安卓逆向系統(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 核心技術 卷一》公認經(jīng)典
《第一行代碼(第2版)》
這本書寫的很好撤蟆,是公認的Android入門書。你可以認認真真照著例子全部敲一遍投队,也可以只走馬觀花了解一邊App的開發(fā)流程,看完本書爵川,你會明白一個Android App是怎么從無到有敷鸦。
3.加解密
《Java 加密與解密的藝術 (第二版)》
講了如何使用Java實現(xiàn)各種各樣的加密,這本書可看可不看寝贡。
接下來就可以開始Android逆向之旅了扒披,這是最簡單的配置,按照需求圃泡,你后續(xù)可以學習這些東西碟案。
二、Android逆向書籍和資料
1.《Android 軟件安全權威指南》
白色的封面颇蜡,我愛叫它白皮書价说。Android逆向入門需要的方方面面,它都涉及到了风秤。
這本書適合按照需求找章節(jié)看鳖目,如果按照順序看,你可能會死在第三章“Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范”
我重新排一下序缤弦,同時领迈,我建議易錦大學工具安裝教程去配置工具環(huán)境(需要工具聯(lián)系qq:3251901516)“澹可以裝了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é)——軟件保護技術,講的很全面尸折。
章節(jié)七八九是Native層的內(nèi)容啰脚,我把它劃分到下一部分,入門單單指Java層实夹,章節(jié)十二是軟件殼的內(nèi)容橄浓,也是進階的內(nèi)容。
2.《Android應用安全防護和逆向分析》
黃色封面亮航,我叫它黃皮書贮配,這本書的內(nèi)容也充實有料,和白皮書一樣塞赂,也是面向Android開發(fā)/安全人員泪勒,門檻比較高。我個人也是建議按照模塊看宴猾,按照順序看的話小心坑圆存。
全書分成三個部分,防護篇和工具篇都講的很好仇哆。這本書也是必備沦辙。
這兩本書是引路明燈,但光看這兩本書讹剔,是遠遠不夠的油讯,你需要真正的實戰(zhàn)详民,還有看書也是比較枯燥的,如果條件允許的話建議去報班系統(tǒng)學習陌兑,有老師帶沈跨,看視頻比看書好的多,書籍的話更多是幫助你一些提升兔综,但是對于自學能力不強的不建議饿凛!
最后再大家附帶一張安卓逆向工程師前景大致圖。不止是爬蟲行業(yè)软驰,其他編程行業(yè)逆向安全也會等著你涧窒!