Android 逆向分析學習路線?
==================================================
2016-12-19補充幾點:(一)不要相信任何"網路(線上)培訓班",逆向無捷徑,真的想學請耐心泡論壇(看雪,52),以及看書.
android逆向是雜學,考驗的是知識廣度+深度+經驗
因此android逆向的培訓,無法像java,php,c#這類常規語言一樣被量化這種培訓也很難達到"程序員工廠"的效果號稱一兩個月畢業的"培訓班,幾乎毫無可能讓一個新手速成為高手.他或許能教你一些容易上手的方法,但請相信,這些即使真的學到,也沒有任何用途.因為技術永遠是在不斷更新的
這類培訓班往往利用android逆向嚴重的信息不對稱性(逆向屬於小眾技術),以及學員想速成的心理盈利.最令人鄙視的是,py都覺得不夠用的當下,一部分培訓班甚至拿著某中文偽代碼類vb編程語言(所謂X語言)進行教學.判斷一個培訓班是不是靠譜可以考察兩個問題:
1.在報名時,培訓機構負責人是否詳細審核你的基礎知識(參考第二點)如果沒有,請放棄,因為這一定是騙人的,沒人能把一個c不會,java不通,smali看不懂,py不會寫的人培訓成逆向高手.2.授課時使用什麼語言?
如果對方用某中文編程語言授課,還是算了吧.(二)什麼樣的人可以學android逆向再強調一次,android逆向是雜學.因此android逆向幾乎無法零基礎上手.
最適合學習android逆向的,是那些已經從事一段時間android sdk ndk開發的人.
這些人的特徵是非常了解android系統的運行機制並且長期使用CC++,java進行開發.他們的優勢並不在於技術能力.而在於經驗積累.
他們所欠缺的只是逆向方法論,和逆向針對性技術.我周圍的逆向大牛走的也幾乎都是這條路.Android軟體安全與逆向分析 這本書可以作為入門
內容相對較淺體現在對於具體的加固,協議棧(如有效演算法)的定向分析這本書闡述了非常好的基礎分析思路和理論原理非常適合作為入門書籍我有x86逆向基礎,在接觸這個領域前用已經非常了解8086彙編和linux(教程沒看王爽,而是看小甲魚,linux在很早的時候讀完了私房菜,貌似暴露年齡)搞過幾年od,因此直接跳過入門過程.
請注意,我在這種前提下,斷斷續續搞了一年android逆向,才剛剛達到了中低手的水平.
目前對我幫助最大的書是(美)Chris Eagle的"ida pro權威指南"
逆向必備的基本功是 :java,C++(jni非常重要)
C語言(F5插件看不懂會很麻煩)python(後期腳本用)arm彙編Linux(最好精通一種shell,推薦bash)密碼學(至少對aes des,iv向量,等一些基礎演算法有認識,否則會舉步維艱)
另外,請為自己買一個機械鍵盤
國內android逆向界現狀:
目前國內android逆向圈"偏科"問題很嚴重.分為脫殼(dump),協議分析兩個大的方向如果為了就業而學習,建議放棄脫殼直接學習協議分析.後者在實際工作中應用遠高於前者.目前沒有好的全體系教程.
自學途徑可以是(這個流程是默認你已經掌握android 的sdk ndk開發 Linux和python都略懂的基礎下):非蟲(豐生強):Android軟體安全與逆向分析(建立逆向思維,學好smali及基礎分析)
(美)Chris Eagle:ida pro權威指南第二版 (掌握ida)其他推薦閱讀:
arm:隨便找一本即可(因為大多知識點差不多)密碼學:深入淺出密碼學(沒有數學基礎推薦看這本,有數學基礎的朋友應該不需要我推薦)關於什麼時候看論壇:建議初學者關掉論壇.真正該看論壇是在你遇到針對性較強問題的時候.比如對於XX殼的dump方案,比如過XX反調試沒有思路的時候,但達到這程度的人,在國內往往能算上中手.
謝邀。
非蟲前輩的 Android軟體安全與逆向分析複製一篇答案:為了CTF比賽,如何學習逆向和反彙編? - 無名俠的回答 - 知乎
去看雪論壇吧,這方向的人比較多。
逆向未來,一個專註安卓逆向的論壇。你值得擁有。
首先你得自己熟悉安卓的開發,不然複雜一點的android app你就逆向不了了.其次,android app的殼正在興起,不知道脫殼也是很大的不利.
然後呢,就回到軟體逆向這個話題上來了.針對不同的語言,逆向是有區別的.
如果僅僅靠一個人來做,我認為對於逆向也是很不利.因為軟體的構建早就是工程化的了,你逆向還在原子化,這又如何應對?給你源代碼你也得花大量的時間去理解,何況是閉源軟體.總結一下學習路線:1.學習android app 開發.2.熟悉軟體工程.3.學習逆向技巧與基礎知識.4.多練習,積累經驗.如果你只是臨時起意想學android 逆向...上面所說的不適合你.大約還是11年的時候,那時候剛從華為出來,去了一家反病毒相關的公司,做了和逆向有一點點相關的東西,破解某應用商店協議,編寫爬蟲扒應用。
那時候 做事流程是這樣的,1、各種操作折騰點擊應用,看不同的操作會進到什麼頁面,這些跳轉都是可以通過查看ActivityManager的log來發現的。2、dex轉可稍微看明白一點的代碼smali,當時用的工具是dex2smali來做的。3、分析 smali代碼,smaili代碼是很難看明白的,這個時候自己寫個簡單的應用,些不同的代碼,然後再把自己的應用反編譯了,再查看smali代碼,對應的理解smali的意思。4、用smali代碼加log, smali的寄存器概念很要命,有時候一個下午都加不了一個有意義的log5、根據log推測運行步驟,6、重複 4,5 直到分析清楚應用程序的下載地址是怎麼獲取到的。7、拿python實現流程,從商店扒程序8、應用商店策略一旦更改,再重複1~7的操作逆向是一個很枯燥的過程,病毒分析更枯燥,當時還屬於android比較初期的階段,現在幾乎已經沒有應用可以讓大家這麼折騰了,現在基本上要靠抓包來分析了。 也許這還算不上逆向,僅僅是逆向的一個小小應用場景。想逆向先得會開發,要看的懂smali(偽彙編),看的懂二進位(IDA 分析so),會簽名,會抓包,會腳本。攻防技術不斷發展,逆向難度不斷增加。沒有一個路線是全部適用的,先把功能點學全再結合適用,最重要的是不斷學習的能力。我認為樓主說的是精易論壇吧。。 我就給坑了, 無奈
有一家機構叫15PB,不知道你聽說過沒。他們的課程里就有Android 逆向分析的課程,課程不錯,很全面。你可以諮詢他們看看。
我弱雞一隻。不過我覺得如果是入門階段可以先把java基礎學好把環境配好再說其他的。然後配合看論壇看視頻,然後路就被不知不覺走出來了。還有本書《Android軟體安全與逆向分析》。
看這裡,Android安全工程師-安全技能 -SecWiki
另外SecWiki也提供其它安全方面的學習路線。推薦閱讀:
※如何評價高通驍龍820四核滿載功耗9w?
※如果只按性能配置來講,oppo R11應該值多少錢?同等性能、配置的其他手機大家有推薦的嗎?
※如何評價 Google 新發布的原生相機應用,體驗如何?
※如何評價 Google 推出的 Chrome ARC?
※按照目前react native的發展,有沒有可能幾年之後原生開發技術不再被使用?