Android筆記 (9): 反編譯 - 代碼注入

關(guān)于反編譯系列籍嘹,其實(shí)網(wǎng)絡(luò)上有很多總結(jié)的很好的搬卒,反編譯一類的教程吕嘀,我也僅僅是從別人的博客里面了解到部分粗淺的知識(shí)而已违寞。個(gè)人感覺學(xué)習(xí)反編譯最大的作用是去了解別人的實(shí)現(xiàn)過程,所以查看源代碼是個(gè)人認(rèn)為比較重要的偶房,而代碼注入這一部分就主要是為了玩兒了趁曼。
這一篇我寫不寫壓根不重要,網(wǎng)上總結(jié)的好的文章多得是棕洋,畢竟這是有攻擊性的行為彰阴,所以我的目標(biāo)只是記錄一些自己接觸過的點(diǎn)、修改apk的思路拍冠,以及修改一下前面的成果VolleyDemo.apk尿这,所以比較簡(jiǎn)單。

其實(shí)庆杜,真相是這樣的:難的我并不會(huì)吧渲凇!;尾啤叨橱!哈~哈~哈!

好了断盛,進(jìn)入正題罗洗。既然說到apk的反編譯,自然就會(huì)聯(lián)想到smali這個(gè)詞钢猛,百度上也有很多相關(guān)知識(shí)伙菜,其實(shí)大家都知道還有一種方法也是學(xué)習(xí)smali很高效的途徑:自己寫一個(gè)簡(jiǎn)單的應(yīng)用,可以只有一個(gè)Activity命迈,只做簡(jiǎn)單的功能贩绕,然后反編譯,對(duì)比源碼來學(xué)習(xí)壶愤。

基本語法我這里就不給大家解釋了淑倾,現(xiàn)在先來回顧一下目前VolleyDemo的主要功能有哪些。

原版VolleyDemo.apk主要功能

  • 進(jìn)入應(yīng)用后向ip.taobao.com發(fā)出請(qǐng)求征椒,獲取ip地址信息娇哆。

    ip參數(shù)為不合法的ip地址

  • 網(wǎng)絡(luò)請(qǐng)求結(jié)果(原始數(shù)據(jù)),以log形式輸出勃救。

D/demo    (16032): {"code":1,"data":"invaild ip."}
  • 解析結(jié)果碍讨,彈出Toast+Dialog。


    數(shù)據(jù)錯(cuò)誤提示
  • 點(diǎn)擊“我知道了”剪芥,驗(yàn)證HTTPS支持垄开。


    HTTPS請(qǐng)求訪問結(jié)果

目標(biāo)

現(xiàn)在我們通過代碼注入的方式來做以下事情:

  • 點(diǎn)擊“我知道了”,不打開HTTPS頁(yè)面税肪,而是關(guān)閉當(dāng)前Activity溉躲。
  • MessageDialog描述不準(zhǔn)確,應(yīng)改為“無效IP地址”益兄。
  • 將IP改為合法地址锻梳。

實(shí)現(xiàn)過程

準(zhǔn)備

上一篇查看源代碼中有提到:

本章使用上一章節(jié)所搭建的環(huán)境和工具,同時(shí)也使用之前Volley系列的成果作為源文件净捅。工具和源文件可到這里下載疑枯,同時(shí)也可參考上一章節(jié)進(jìn)行環(huán)境配置。

同理蛔六,這里我用的也是同樣的環(huán)境和素材荆永。

注入

  • 點(diǎn)擊“我知道了”事件
    首先废亭,我們?cè)诓恢涝创a的情況下以最簡(jiǎn)單的方式來解決問題。
    點(diǎn)擊我知道了具钥,看現(xiàn)象應(yīng)該能猜出是跳轉(zhuǎn)到下一個(gè)Activity豆村,那么這個(gè)Activity叫什么名字呢?我們可以通過log查看:
    查看啟動(dòng)的Activity名稱

    可以看到log輸出為HttpsTestActivity骂删,而且可以得到包名為com.joyin.volleydemo掌动,同理,MainActivity的信息也一樣可以獲得宁玫。
    接下來查看代碼中什么地方用到了HttpsTestActivity

    除了./activity/HttpsTestActivity.smali本身粗恢,就只有./activity/MainActivity$1.smali第52行用到了這個(gè)字段,我們跟進(jìn)代碼欧瘪。

    發(fā)現(xiàn)52行所在的環(huán)境是一個(gè)onClick眷射,我們刪掉幾行代碼,再修改一點(diǎn)恋追,代碼沒什么難度凭迹,懂一點(diǎn)smali的話很容易理解:
# virtual methods
.method public onClick(Landroid/view/View;)V
    .locals 4
    .param p1, "v"    # Landroid/view/View;

    .prologue
    .line 70
    iget-object v0, p0, Lcom/joyin/volleydemo/activity/MainActivity$1;->this$0:Lcom/joyin/volleydemo/activity/MainActivity;

    invoke-virtual {v0}, Lcom/joyin/volleydemo/activity/MainActivity;->finish()V

    .line 71
    return-void
.end method

此時(shí)代碼已經(jīng)修改好了,再次運(yùn)行苦囱,彈出對(duì)話框后嗅绸,點(diǎn)擊“我知道了”就直接finish掉,大家可以自己實(shí)驗(yàn)一下撕彤。


回編譯過程
  • 修改MessageDialog描述
    這個(gè)需求比較簡(jiǎn)單鱼鸠,我們先找“獲取請(qǐng)求失敗了”這個(gè)關(guān)鍵字,然而你會(huì)發(fā)現(xiàn)羹铅,除了dex文件適配到了蚀狰,其余地方都找不到,這是因?yàn)楫?dāng)初寫代碼的時(shí)候职员,這句話不是寫在資源里的麻蹋,而是直接放在java代碼里,而smali中的是Unicode編碼焊切,所以要查找\u83b7\u53d6\u8bf7\u6c42\u5931\u8d25\u4e86
    找過去會(huì)發(fā)現(xiàn)MainActivity241行定義了該字符串:

    我們修改如下:
const-string v3, "\u65e0\u6548\u0049\u0050\u5730\u5740"

再次回編譯扮授,簽名,安裝:


修改內(nèi)容后的對(duì)話框
  • 將IP改為合法地址
    利用前面章節(jié)中的知識(shí)點(diǎn)专肪,將手機(jī)和電腦連上同一wifi刹勃,保證在同一局域網(wǎng)內(nèi)。手機(jī)設(shè)置代理嚎尤,電腦打開charles進(jìn)行抓包荔仁,發(fā)現(xiàn)ip字段傳的參數(shù)是“2dss3”:
    抓包結(jié)果

    接下來我們以同樣方法找到“2dss3”(MainActivity.smali第48行),修改為:
const-string v1, "21.22.11.33"

回編譯-簽名-安裝:

apktool b VolleyDemo/ && apksign VolleyDemo/dist/VolleyDemo.apk && adb install -r VolleyDemo/dist/VolleyDemo.apk_sign.apk
運(yùn)行結(jié)果

至此,簡(jiǎn)單的代碼注入已經(jīng)完成乏梁。

其他

反編譯系列的簡(jiǎn)單處理就寫到這里了次洼,我只記錄了最簡(jiǎn)單的處理方式,但相信各位應(yīng)該能很聯(lián)想出怎么進(jìn)行高難度的注入了掌呜,我就不點(diǎn)破了(我不會(huì)啊滓玖,哭)≈式叮基本技巧掌握了,改文字/圖片/邏輯都可以實(shí)現(xiàn)翩肌。VolleyDemo沒有做任何代碼混淆模暗,加密,安全驗(yàn)證等念祭,僅僅是為了在這里更容易的反編譯兑宇,在這里還是呼吁大家平時(shí)做項(xiàng)目一定要記得加固,基本的代碼混淆粱坤,對(duì)dex做動(dòng)態(tài)加載隶糕、驗(yàn)證等。相信大家都知道站玄,我們可以使用一些免費(fèi)的平臺(tái)來完成這些事枚驻,省時(shí)省力,哈哈株旷。

另:反編譯的技能最好用于學(xué)習(xí)再登,切勿用于惡意攻擊。謝謝~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晾剖,一起剝皮案震驚了整個(gè)濱河市锉矢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌齿尽,老刑警劉巖沽损,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異循头,居然都是意外死亡绵估,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門贷岸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壹士,“玉大人,你說我怎么就攤上這事偿警□锞龋” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)盒使。 經(jīng)常有香客問我崩掘,道長(zhǎng),這世上最難降的妖魔是什么少办? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任苞慢,我火速辦了婚禮,結(jié)果婚禮上英妓,老公的妹妹穿的比我還像新娘挽放。我一直安慰自己,他們只是感情好蔓纠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布辑畦。 她就那樣靜靜地躺著,像睡著了一般腿倚。 火紅的嫁衣襯著肌膚如雪纯出。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天敷燎,我揣著相機(jī)與錄音暂筝,去河邊找鬼。 笑死硬贯,一個(gè)胖子當(dāng)著我的面吹牛焕襟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播澄成,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼胧洒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了墨状?” 一聲冷哼從身側(cè)響起卫漫,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肾砂,沒想到半個(gè)月后列赎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镐确,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年包吝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片源葫。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡诗越,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出息堂,到底是詐尸還是另有隱情嚷狞,我是刑警寧澤块促,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站床未,受9級(jí)特大地震影響竭翠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜薇搁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一斋扰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啃洋,春花似錦传货、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绝编,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間貌踏,已是汗流浹背十饥。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留祖乳,地道東北人逗堵。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像眷昆,于是被迫代替她去往敵國(guó)和親蜒秤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,169評(píng)論 25 707
  • 一亚斋、前言 今天我們開始apk破解的另外一種方式:動(dòng)態(tài)代碼調(diào)試破解作媚,之前其實(shí)已經(jīng)在一篇文章中說到如何破解apk了: ...
    JiangWei_App閱讀 3,670評(píng)論 2 29
  • 很多人寫文章,喜歡把什么行業(yè)現(xiàn)狀啊帅刊,研究現(xiàn)狀啊什么的寫了一大通纸泡,感覺好像在寫畢業(yè)論文似的,我這不廢話赖瞒,先直接上幾個(gè)...
    龐哈哈哈12138閱讀 2,938評(píng)論 1 8
  • 有些人有些事慢慢消散在記憶的長(zhǎng)河中 可是有時(shí)還會(huì)在腦海里掀起波瀾 時(shí)間是一劑良藥 治愈傷痛 撫平一切 那時(shí)的無數(shù)次...
    吳小爛閱讀 163評(píng)論 0 2
  • 思想錄 又是一年了女揭。歲月荏苒,唯一好處大概就是讓人越活越明白的栏饮。比如最近我就想到一個(gè)問題吧兔,即人在五十歲以前是否要急...
    zqy0008008閱讀 138評(píng)論 0 1