阿里ctf-2014 android 第三題——so動態調試及破解加固

來源:互聯網
上載者:User

標籤:alictf   android   so 調試   

通過做題來學習android逆向是一個比較不錯的方法。

雖然有投機取巧的方法解決這題,但是對這個題目的深入研究,學習到了dex的動態調試、破解加固等技術。

要感謝各位android大牛對此題的詳細介紹。我只是照著做了一遍,對有些不明確的地方自己演練了一下,並對android的so調試進行了一下簡單的歸納。


從零開始進行android的so代碼調試:

一、工具準備:

jre——java runtime enveroment    //下面的一切工具都要這個支援

jdk——java development kits    //需要用到裡面的jdb程式

Android SDK Manager    //包括adb、ddms等各種工具,及各種SDK版本下載管理

Android AVD Manager    //用來建立各種SDK版本和相應API層級的android虛擬機器


為了方便,將包含以上各種工具 + 生產力的目錄如sdk\platform-tools,sdk\tools等路徑加入Path環境變數。

建立一個虛擬機器:見我的前一篇文章

    我使用的是SDK 4.0.3、API level 15。

    安裝apk:adb install 3.apk


二、調試

這個還是參考大牛的文章。我這裡只把我參照大牛文章後自己做的貼出來。

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/58/EA/wKiom1TAmG3RxlswAADncwrp7y4115.jpg" style="float:none;" title="1.png" alt="wKiom1TAmG3RxlswAADncwrp7y4115.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/58/E8/wKioL1TAmUSyyqI5AADCjMtrkHY925.jpg" style="float:none;" title="2.png" alt="wKioL1TAmUSyyqI5AADCjMtrkHY925.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/58/EA/wKiom1TAmG2zTvUAAAB2RE6Zrxw480.jpg" style="float:none;" title="3.png" alt="wKiom1TAmG2zTvUAAAB2RE6Zrxw480.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/58/E8/wKioL1TAmUWjWCjyAArrW7dRd58979.jpg" style="width:700px;height:419px;" title="4.png" width="700" height="419" border="0" hspace="0" vspace="0" alt="wKioL1TAmUWjWCjyAArrW7dRd58979.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/58/EA/wKiom1TAmG6QiX3GAAIX8S10sCA805.jpg" style="float:none;" title="5.png" alt="wKiom1TAmG6QiX3GAAIX8S10sCA805.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/58/E8/wKioL1TAmUXxsRhlAAI9YOQRyrk117.jpg" style="width:700px;height:200px;" title="6.png" width="700" height="200" border="0" hspace="0" vspace="0" alt="wKioL1TAmUXxsRhlAAI9YOQRyrk117.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/58/EA/wKiom1TAmG7DRHX0AAOeXcEYs8M922.jpg" style="width:700px;height:256px;" title="7.png" width="700" height="256" border="0" hspace="0" vspace="0" alt="wKiom1TAmG7DRHX0AAOeXcEYs8M922.jpg" />

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/58/E8/wKioL1TAmUWSeVQzAAFrCGWrRy4504.jpg" style="float:none;" title="8.png" alt="wKioL1TAmUWSeVQzAAFrCGWrRy4504.jpg" />

三、分析

因為不會使用idc指令碼,所以我的dump記憶體方法是利用Edit菜單,匯出rawdata。(看來是要好好學習一下IDA的進階功能了)

匯出的dex,使用dex2jar轉換成jar包,jd-gui查看,沒有看到完整的內容。

使用dexdecompile完整反編譯出了具體的內容。這個有可能是dump出的是odex格式的,dex2jar可能只支援dex格式。

直接找addJavascriptInterface函數,發現其匯出的介面對象名是加密的。

當然就這個題目來說,介面對象名可以使用wooyun的那個連結來枚舉出來,或者再次利用上面的方法調試出來。或者根本不用管直接找Toast.MakeText函數裡面的參數,就是答案了。(見)


作為一個喜歡刨根問底的人,自然那個translate.so和decrypt_native函數也要研究一番。一方面是強化一下so的調試技術,另一個方面是鍛煉一下ARM指令集的逆向能力。


最後感謝共用IDA6.6的大牛,全國人民的逆向水平又可以上一個新台階了。

本文出自 “萬物皆芻狗” 部落格,請務必保留此出處http://cugou.blog.51cto.com/9637775/1607005

阿里ctf-2014 android 第三題——so動態調試及破解加固

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.