您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何入門Android逆向,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
這篇文章寫給Python爬蟲工程師們,互聯(lián)網(wǎng)行業(yè)的處境越來越艱辛,流量越來越涌向移動端,爬蟲和反爬的攻防不斷升級,這一切的一切,都讓我們只能一刻不停的學習新技能,才能保持競爭力和養(yǎng)家糊口(一群單身狗,掙的錢連自己都養(yǎng)不活) 。
App逆向不斷出現(xiàn)在爬蟲工程師的日程表里,可是到底該怎么入門App逆向?
這篇文章的目標讀者是計劃學習Android逆向的爬蟲er,他們可能有如下特征
幾乎沒有Java基礎(chǔ)
幾乎沒有Android基礎(chǔ)
對Android逆向的思路和工具缺少了解
下文會一一解答這些困惑和焦慮,但適合每個人的學習模式也各有不同,可以選擇性的實踐。本文對Android逆向老手幫助不大,但如果老手愿意在評論區(qū)分享經(jīng)驗和教訓(xùn),給過來人一些指點,我表示衷心的感謝。
1.1. 不要試圖熟練掌握Java編程和Android開發(fā)后再開始學習逆向
如果你才十五歲,有大把時間可以學習和泡妹,那我收回這話??囱┱搲环?2歲踏上逆向之旅的天才少年,他們可以恣意的吸收知識,全部隨著自己的興趣和心意在逆向世界中遨游。而你呢,你可能不再年輕,并且即將或已經(jīng)踏上工作崗位,準備讓Android逆向成為你的加分項和一塊跳板,那么我認為你有更優(yōu)的方式學習Android逆向。而不是耗費數(shù)個月甚至更久的時間沉迷開發(fā),最后磨損掉興趣,放棄逆向的學習,嘆一句“逆向真難,行不通的”。
Java是一門復(fù)雜精妙 的語言,但你又不是要當Java開發(fā)工程師???
Android應(yīng)用開發(fā)充滿魅力,新技術(shù)迭出,但你又不是要做Android工程師???
你可能很想反駁,那我不懂Java,不懂Android怎么可能搞得了逆向,佛系逆向隨緣逆向?別別別,我可沒說這話,我指的只是入門時不必精通Java和Android。原因有一堆,但我認為最主要的原因在于——開發(fā)和逆向的關(guān)注點不同。
我們先羅列一下Android面試和實際應(yīng)用開發(fā)中出現(xiàn)的一些技術(shù)關(guān)鍵詞:
Java虛擬機,Davlik虛擬機,UI布局,四/五大組件及其細節(jié),Intent,Handler,數(shù)據(jù)持久化,進程線程和異步,SharedPreferences,屏幕適配,兼容性,Android消息機制,WebView,bitmap,Java與C++如何相互調(diào)用,第三方SDK接入,內(nèi)存泄漏和管理,網(wǎng)絡(luò)通信和優(yōu)化,熱修復(fù)和插件化,Dex分包和優(yōu)化,Kotlin語言RecyclerView,注解框架,音視頻的處理,設(shè)計模式,應(yīng)用框架,其他優(yōu)化……
而我們破解時需要關(guān)注什么?尤其是對爬蟲的逆向需求來說,簡而言之,我們在破解加密字段如何生成,那我們的關(guān)鍵詞是這些:
抓包和反抓包,App的混淆,加固,高度混淆加解密算法,Jni,放在C中的加密,smaliJava層動態(tài)調(diào)試,Jadx,Jeb,ida
開發(fā)人員需要開發(fā)和實現(xiàn)App的各種功能、關(guān)注數(shù)十個廠商上百個機型的適配、Apk體積的優(yōu)化,App性能的優(yōu)化,更吸引用戶的UI,更友好的bug解決機制(熱修復(fù)),而我們破解,一般來說,只需要關(guān)注應(yīng)用的網(wǎng)絡(luò)通信、加解密方法、安全防護即可。開發(fā)和逆向的目標完全不同,所以你并不需要對開發(fā)的那一套了然于胸,才能開始破解。
除此之外,App的安全問題只是Android開發(fā)的眾多議題之個。一部分Android開發(fā)人員,甚至連反編譯App的流程和工具都只是聽聞過而已,尤其是對于小廠/一般App,安全問題它們能投入的精力十分有限,這個原因十分好理解。
狗仔和偷拍只是明星成名之后才會煩惱的事,而十八線女星正在下雨的橫店乞討著生活,App也是這樣,如果你搞的不是大廠App(騰訊系/阿里系/今日頭條系等)、超級App(支付寶/微信/抖音/快手等),或者特殊用處的App(買票/支付/網(wǎng)商等),那么開發(fā)人員給App盤個市面上常見的加固,弄個so層的加密,已經(jīng)是它們防護的上限,可能這些不算太簡單,但難也難得有限。因為App的用戶留存和開發(fā)人員的溫飽才是他們最要命的議題。
所以,你不必花太多時間了解和實踐紛繁復(fù)雜的Android開發(fā)知識,只需要掌握Java的基礎(chǔ)語法,Android的基礎(chǔ)知識,就可以專注于逆向所需要關(guān)注的各種技術(shù)和方法了。
1.2. 不要好高騖遠
這一點非常重要,上來就想學如何解密復(fù)雜的so、如何脫殼,反調(diào)試,或者上手就想自己破解抖音,小紅書,美團這種成熟且大型的社交生活類應(yīng)用……
先跟著一些優(yōu)良的入門教程和視頻,打好基礎(chǔ)訓(xùn)練思路,從簡單的demo開始,從Java層加密開始,從簡單的應(yīng)用開始,一步一個腳印。一上來就想搞Native,你還 too naive。
1.3. 不要收集過多的資料 & 分辨資料的時效性
五年前的資料就不要去看了,逆向這個圈子本來就比較封閉和遲緩,很多牛逼順手的工具并沒有被廣而告之。而應(yīng)用開發(fā)和保護的技術(shù)卻日新月異,如果你現(xiàn)在還看五年前的破解教程和文章,那他可能用到是更之前五年的工具和方法,四舍五入你就是在用清朝的Android逆向技術(shù)。我并非在全盤否定比較久遠的教程和資料,有些前輩寫的文章現(xiàn)在依然準確易懂,甚至振聾發(fā)聵。但這一類畢竟是少數(shù),而且仔細了解的話,往往會有更好的替代品或更好的實現(xiàn)。
1.4. 不要自負,覺得Android逆向很簡單
在理想的狀態(tài)下,Android app的逆向工作者需要非常熟悉java和C/C++ 語言,有開發(fā)大型或成熟Android軟件的經(jīng)驗,熟悉Android底層和App運行原理,簡而言之,最好是一個成熟老練的android高級工程師。但是,這并不意味著我們必須得到這個地步才能開始Android逆向的旅程。你應(yīng)該先從一個比較系統(tǒng)的角度盡可能了解Android逆向的全貌,然后摘取那些”低垂的果實”,跟著教程去使用一些成熟的工具,學習思路,完成幾次破解。然后在問題中不斷去學習和補充知識。如果你想要準備好一切在上路,也是可以的,萬流如海,殊途同歸,只不過你要忍受漫長的枯燥學習期罷了。
這些書和內(nèi)容都是非常好的,我這次沒有提供百度云鏈接,網(wǎng)上資源很多,我很希望大家通過pdf資料被大佬的文筆和內(nèi)容所吸引和折服,然后購買正版書籍放在身邊看。
一、基礎(chǔ)中的基礎(chǔ)
1.Java
《Java 核心技術(shù) 卷一》1-6章節(jié)主要關(guān)注里面的這些基礎(chǔ):Java基礎(chǔ)數(shù)據(jù)類型,Java面向?qū)ο蠛腿筇匦?,Java接口,String類,Array,Map。你看完這幾章,大致就可以看懂簡單的Java代碼了。
2.Android
《第一行代碼(第2版)》這本書簡單,直白,通俗易懂,寫的很好,是公認的Android入門書。你可以認認真真照著例子全部敲一遍,也可以只走馬觀花了解一邊App的開發(fā)流程,看完本書,你會明白一個Android App是怎么從無到有。
3.加解密
《Java 加密與解密的藝術(shù) (第二版)》講了如何使用Java實現(xiàn)各種各樣的加密,這本書是工具書,建議買一本,很不錯,用到就翻翻,平時上廁所也可以當成廁所讀物。就這么簡單,你就可以開始Android逆向之旅了,這是最簡單的配置,按照需求,你后續(xù)可以學習這些東西。
二、Android逆向書籍和資料
1.《Android 軟件安全權(quán)威指南》
白色的封面,我愛叫它白皮書。這本書真的太棒了,如果你想入門Android逆向,這本書幾乎沒法跳過。Android逆向入門需要的方方面面,它都涉及到了,而且講的還都有內(nèi)容有深度。這本書適合按照需求找章節(jié)看,如果按照順序看,你可能會死在第三章“Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范”我重新排一下序,同時,我建議第一章的軟件安裝和環(huán)境配置,別急著去實踐,可以裝了java開發(fā)環(huán)境后,用jadx或者jeb萬金油直接擼,但如果你喜歡敲命令行,用無大礙,下面的閱讀順序只是我個人喜好,讀者自行甄別和選擇。第一、二章——環(huán)境搭建和如何分析Android程序,瀏覽即可。第三、第四章——Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范和Android文件格式,瀏覽即可,內(nèi)容很重要,但不是入門的內(nèi)容。第五章——靜態(tài)分析Android app,這也是很多培訓(xùn)課程的第一課,我個人也認為這個應(yīng)該先看,而且寫的很好。第六章——動態(tài)分析Android應(yīng)用,寫的很好,但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應(yīng)用安全防護和逆向分析》
黃色封面,我叫它黃皮書,這本書的內(nèi)容也充實有料,和白皮書一樣,也是面向Android開發(fā)/安全人員,門檻比較高。我個人也是建議按照模塊看,按照順序看的話小心坑。全書分成三個部分,防護篇和工具篇都講的很好。這本書也是必備。這兩本書是引路明燈,但光看這兩本書,是遠遠不夠的,你需要真正的實戰(zhàn),還有更多更廣更全的資料。
三、入門補充,我建議這些按照需求,或者在遇到的時候再學習和查閱
Java——異常處理/反射/動態(tài)代理,這對你理解逆向中的Hook等技術(shù)非常有用Android——網(wǎng)絡(luò)請求框架/應(yīng)用框架/……
以上就是如何入門Android逆向,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。