Real Android, 從逆向開始

reverse engineering

最快的學(xué)習(xí)方式是直接閱讀實(shí)際項(xiàng)目源碼佃延, 最快的開發(fā)方式也是直接使用最佳實(shí)踐现诀。 Android逆向, 用來學(xué)習(xí)和研究最合適不過了履肃。

歸功與android和java成熟的開發(fā)者體系仔沿, android 系統(tǒng)通用的, 重要的組件(4大組件, View子類尺棋, 系統(tǒng)服務(wù)等)由于在框架中頻繁用到封锉,app 加固和混淆機(jī)制通常對頂層的代碼通常不會(huì)做過度的混淆處理。

基于此,我們在使用jadx或者其他dex2jar工具后成福, 如果想更進(jìn)一步使用和閱讀源碼碾局。 我們必須對整個(gè)文件依賴有更清晰的認(rèn)知, 這篇文章相當(dāng)于拋磚引玉奴艾, 在分析java文件和包結(jié)構(gòu)的同時(shí)净当,對于和app頂層組件和重要系統(tǒng)第三方庫相關(guān)度高的混淆文件開發(fā)了一個(gè)工具, 方便把原來四分五裂的java class文件重整到相應(yīng)的依賴包中蕴潦, 方便大家閱讀像啼。

下面我們開始這趟逆向之旅吧!

工具選取

首先潭苞,選中你認(rèn)為值得學(xué)習(xí)或者研究的app(這個(gè)還是蠻重要的忽冻,用戶評(píng)分實(shí)最終指標(biāo),不過即便app有其中一個(gè)功能你認(rèn)為做的不錯(cuò)依然值得去研究)

反編譯成smali的話比較容易修改基礎(chǔ)代碼, 重新打包比較不容易出錯(cuò)此疹, 使用apktool 工具就可以

一步一步帶你反編譯apk僧诚,并教你修改smali和重新打包

但是想要更多更全的代碼為長遠(yuǎn)所用, 這次我們需要想要做的更多,直接弄成java的秀菱, 方便學(xué)習(xí)代碼結(jié)構(gòu)

這是一個(gè)一應(yīng)俱全的apk反編譯網(wǎng)站振诬,

APK Decompilers - Online Android APK Decompiler

下載apk之后, 在windows下解壓就可以使用了衍菱! 服務(wù)器應(yīng)該也是windows赶么, 如果你是linux類操作系統(tǒng), 解壓工具可能會(huì)出錯(cuò)脊串, 文件路徑是反斜杠額 ;(

若果你對app某一功能感興趣辫呻, 比如DiscoverActivity, 在查看其java文件代碼的時(shí)候, DiscoverActivity里面會(huì)充斥一些a,b,c,d類似的符號(hào)琼锋, 雖然你會(huì)知道這些符號(hào)不在默認(rèn)package里面就會(huì)在混淆后的頂層package里面放闺, 但是這里有一個(gè)問題: 要理解頂層的DiscoverActivity, 我們順著鏈條找下去, 會(huì)找到混淆代碼中的d,e,f,g等類引用缕坎, 這些類可能是孤立的app feature里面的類怖侦,也可能是第三方混淆后的產(chǎn)物。 而分析三方包谜叹,這個(gè)復(fù)雜性太廣匾寝, 深度也太深了。 特別對于復(fù)雜項(xiàng)目荷腊, 動(dòng)不動(dòng)幾十個(gè)三方包艳悔, 就為了兼容和提高用戶體驗(yàn).

所以:

上帝的歸上帝,凱撒的歸凱撒

凱撒的事情女仰,我們也得做.

項(xiàng)目結(jié)構(gòu)

首先分析下項(xiàng)目結(jié)構(gòu)猜年, 無非就android系統(tǒng)相關(guān)抡锈, 第三方相關(guān), 和本app相關(guān)的代碼

目標(biāo)代碼:

我們遍歷所有java文件乔外, 對于field的聲明和function 參數(shù)類型的聲明的作保留床三, 拋除import語句里面,和內(nèi)部類的聲明袁稽, 加上jdk默認(rèn)關(guān)鍵字和常用類和當(dāng)前package的類使用 最后剩下的就是我們應(yīng)該直接從頂層混淆代碼中down下來查詢的代碼勿璃。

去除引用:

對于直接引用defpackage里面的代碼, 我們使用正則直接將這些類添加到目標(biāo)代碼中推汽, 排除的代碼依然不變

替換類名:

find 和sed 作替換直接引用

find . -type f -print0 | xargs -0 sed -i 's/defpackage.//g'

處理完畢之后, 一切清爽多了:

QQ圖片20191027190719.png
QQ圖片20191027190728.png

最后附上gist代碼:

rearrange decompiled apk java source code, for code navigation convenience

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歧沪,一起剝皮案震驚了整個(gè)濱河市歹撒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诊胞,老刑警劉巖暖夭,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撵孤,居然都是意外死亡迈着,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門邪码,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裕菠,“玉大人,你說我怎么就攤上這事闭专∨耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵影钉,是天一觀的道長画髓。 經(jīng)常有香客問我,道長平委,這世上最難降的妖魔是什么奈虾? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮廉赔,結(jié)果婚禮上肉微,老公的妹妹穿的比我還像新娘。我一直安慰自己昂勉,他們只是感情好浪册,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岗照,像睡著了一般村象。 火紅的嫁衣襯著肌膚如雪笆环。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天厚者,我揣著相機(jī)與錄音躁劣,去河邊找鬼。 笑死库菲,一個(gè)胖子當(dāng)著我的面吹牛账忘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播熙宇,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鳖擒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烫止?” 一聲冷哼從身側(cè)響起蒋荚,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馆蠕,沒想到半個(gè)月后期升,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡互躬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年播赁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼渡。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡容为,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诞吱,到底是詐尸還是另有隱情舟奠,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布房维,位于F島的核電站沼瘫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咙俩。R本人自食惡果不足惜耿戚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阿趁。 院中可真熱鬧膜蛔,春花似錦、人聲如沸脖阵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽命黔。三九已至呜呐,卻和暖如春就斤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蘑辑。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工洋机, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洋魂。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓绷旗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親副砍。 傳聞我的和親對象是個(gè)殘疾皇子衔肢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容