Android逆向分析-通過(guò)UI定位邏輯代碼

0x00 前言

在逆向分析apk的某項(xiàng)功能的時(shí)候畴蒲,最關(guān)鍵的就是在反編譯工具中定位它的邏輯代碼。通常,我是通過(guò)應(yīng)用暴露出來(lái)的一些字符串(dialog提示烦粒、http\https中的url)去grep 反編譯出來(lái)的smali或者使用jeb工具的字符串搜索功能,不過(guò)這樣過(guò)濾下來(lái)通常還是離核心代碼有時(shí)很遠(yuǎn)有時(shí)很近代赁,經(jīng)常需要花時(shí)間再回溯上去扰她。隨著對(duì)業(yè)務(wù)功能的近一步分析,這樣的方法有點(diǎn)捉襟見(jiàn)肘芭碍,所以想找一個(gè)更直觀的方法去定位核心代碼位置徒役。

這里通過(guò)分析微信的聊天功能來(lái)記錄這個(gè)方法。需要用到的工具有:

1. Android Studio(ddms)

2.apktool

3.Apktool

0x01 DDMS抓取界面窖壕,分析布局

Mac下新版 Android Studio 打開(kāi) DDMS 方式

// Users/wu/Library/Android/sdk 表示 android sdk安裝路徑
cd /Users/wu/Library/Android/sdk/tools
./monitor

我們每當(dāng)在微信中點(diǎn)擊聊天室點(diǎn)擊發(fā)送之后忧勿,代碼是怎么處理我們輸入的聊天內(nèi)容的呢杉女?為了找到這核心代碼的實(shí)現(xiàn),我們把微信調(diào)整到對(duì)應(yīng)的界面鸳吸,然后打開(kāi)ddms截取當(dāng)前的界面熏挎。

image

點(diǎn)擊按鈕等幾秒鐘就會(huì)在ddms中展現(xiàn)屏幕中當(dāng)前的界面

image

拿到了當(dāng)前界面的布局解析之后,定位發(fā)送按鈕晌砾,在右側(cè)表格中可以看到該button的resource-id是com.tencet.mm:id/a77坎拐。接下來(lái),我們可以通過(guò)這個(gè)button的響應(yīng)事件來(lái)跟蹤微信是如何處理我們要發(fā)送的消息的养匈。

0x02 Apktool+adb 定位關(guān)鍵類

使用apktool反編譯apk哼勇,并在res/value/public.xml中過(guò)濾出帶有a77關(guān)鍵字的資源id

image

如上圖,找到了改button的資源id是0x7f1004e3后呕乎,我們?cè)谕ㄟ^(guò)adb shell dumpsys activity top命令dump出當(dāng)前界面的布局,并在輸出中搜索7f1004e3關(guān)鍵字就可以找到改控件所屬的類了积担。(tips:在寫(xiě)這篇博客的時(shí)候,我發(fā)現(xiàn)可以在輸出中搜索“id/a77”楣嘁,不用繞彎再去grep資源id了)

image

可以看到在控件出現(xiàn)的地方磅轻,他的上層布局是com.tencent.mm.pluginsdk.ui.chat.ChatFooter,現(xiàn)在只需要在jeb中找到這個(gè)類就ok了逐虚。

0x03 JEB定位關(guān)鍵代碼位置

定位到關(guān)鍵類之后聋溜,ctrl+f查找button的響應(yīng)事件方法“setOnClickListener”,會(huì)發(fā)現(xiàn)還是有那么幾個(gè)button讓自己分不清楚,不過(guò)觀察其中OnClick還是能過(guò)濾出來(lái)誰(shuí)是誰(shuí)的響應(yīng)

image

分析代碼叭爱,發(fā)現(xiàn)ChatFooter.j(this.tfO).Bh(v0_2)這個(gè)方法應(yīng)該是處理我們聊天是輸入內(nèi)容的核心方法了撮躁。雙擊跟進(jìn)去

image

但是發(fā)現(xiàn)這個(gè)類是個(gè)接口類,只要找到其實(shí)現(xiàn)的類就能定位到真正的核心代碼了买雾,回歸到剛才Apktool反編譯出來(lái)的文件夾中把曼,過(guò)濾“implements Lcom/tencent/mm/pluginsdk/ui/chat/b”發(fā)現(xiàn)有一個(gè)類實(shí)現(xiàn)了這個(gè)接口,JEB跟進(jìn)這個(gè)類漓穿,定位到Bh()方法

image
image

就這樣然后一步一跟進(jìn)嗤军,就可以很清晰的了解點(diǎn)擊“發(fā)送”這個(gè)button之后的控制流程。

0x04 總結(jié)

小白剛接觸android逆向分析晃危,很笨的方法叙赚,也繞了很多彎,有很多地方需要改進(jìn)僚饭,下來(lái)先寫(xiě)個(gè)jeb插件來(lái)找父類繼承和接口實(shí)現(xiàn)的類(不知道jeb2.0有沒(méi)有這個(gè)功能)震叮,如果有志同道合的朋友有好的方法或想法可以分享出來(lái),我在這里先謝過(guò)老鐵鳍鸵。

0x05 新發(fā)現(xiàn)

寫(xiě)完之后沒(méi)事又晃了一圈苇瓣。發(fā)現(xiàn)拿到了“id/a77”的資源id是0x7f1004e3之后,直接在R類里過(guò)濾這個(gè)id值就能找到這個(gè)資源對(duì)應(yīng)的變量名偿乖,這里是bud

image

然后直接在全文grep出“R$h;->bud”击罪,就可以直接更準(zhǔn)確的定位到了這個(gè)控件正真定義的地方了

image

作者:老江_
鏈接:http://www.reibang.com/p/ea45509e2e24

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哲嘲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子外邓,更是在濱河造成了極大的恐慌撤蚊,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件损话,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡槽唾,警方通過(guò)查閱死者的電腦和手機(jī)丧枪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)庞萍,“玉大人拧烦,你說(shuō)我怎么就攤上這事《奂疲” “怎么了恋博?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)私恬。 經(jīng)常有香客問(wèn)我债沮,道長(zhǎng),這世上最難降的妖魔是什么本鸣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任疫衩,我火速辦了婚禮,結(jié)果婚禮上荣德,老公的妹妹穿的比我還像新娘闷煤。我一直安慰自己,他們只是感情好涮瞻,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布鲤拿。 她就那樣靜靜地躺著,像睡著了一般署咽。 火紅的嫁衣襯著肌膚如雪近顷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天艇抠,我揣著相機(jī)與錄音幕庐,去河邊找鬼。 笑死家淤,一個(gè)胖子當(dāng)著我的面吹牛异剥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播絮重,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冤寿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼歹苦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起督怜,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤殴瘦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后号杠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蚪腋,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年姨蟋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屉凯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡眼溶,死狀恐怖悠砚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堂飞,我是刑警寧澤灌旧,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站绰筛,受9級(jí)特大地震影響枢泰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜别智,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一宗苍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧薄榛,春花似錦讳窟、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至硬猫,卻和暖如春补箍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啸蜜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工坑雅, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衬横。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓裹粤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蜂林。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遥诉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

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