詳解android應用程式的反編譯

來源:互聯網
上載者:User
詳解android應用程式的反編譯

畢業設計不小心選了智能手機開發方向,而平台選擇了 android,所以最近自學了不少android程式開發的知識。但是作為一個懶散不堪,容易半途而廢的人,android所內建的體系還是有點龐大, 想要以此開發一個屬於自己的獨一無二的應用,難度對我這個小菜鳥來說實在大。所以難免生起“他山之石,可以攻玉”的想法。

畢設帶隊的老師說:代碼都自己寫的程式員不是好程式員。利用別人的代碼,從中再修改一番變成自己的,這才是好的程式員。我不知道這話有沒有道理,反正是說到了我的心坎了。懶人自有懶人的活法,天才是少數的,而懶惰的人是多數的。自然,我是多數人。

但是要修改別人的代碼必須曉得他的代碼,所以我們需要對android應用程式進行反編譯。所幸andorid是個開放的平台,反編譯比通常程式簡單的多,下面就說說這個簡單的過程。

基礎知識

android 上安裝的應用程式尾碼都是apk(Android application package),每個要安裝到android平台的應用都要被編譯打包為一個單獨的檔案,尾碼名為.apk。而實際上這個apk格式的檔案是一種變相的 zip壓縮包,你可以使用winrar開啟看到裡面的檔案的結構。通常你可以看到這些內容:

|– AndroidManifest.xml
|– META-INF
|   |– CERT.RSA
|   |– CERT.SF
|   |– MANIFEST.MF
|– classes.dex
|– res
|   |– drawable
|   |   `– icon.png
|   |– layout
|       `– main.xml
|– resources.arsc

各個檔案內容涵義不贅述了,可以看這篇文章http://www.ophonesdn.com/article/show/38

我們通常需要反編譯出的有兩部分:classes.dex和main.xml。一個是java經過google自製虛擬機器dalvik編譯出的位元組碼,一個是布局檔案。大點的程式布局檔案不止一個,我們這裡只說只有一個的,其他類似。

需要的工具

1、把dex檔案反編譯為jar檔案的工具。(dex2jar)
2、把jar反編譯為java的工具。(JD-GUI)
3、AXMLPrinter2
三者下載連結分別是:
http://code.google.com/p/dex2jar/
http://java.decompiler.free.fr/?q=jdgui
http://code.google.com/p/android4me/downloads/detail?name=AXMLPrinter2.zip&can=2&q=(這個檔案貌似已經不可用,有興趣的童鞋可以去csdn下載)

XML檔案的反編譯

apk檔案中的xml檔案都是經過壓縮的,所以如果直接開啟會看到一些亂碼,所以需要工具AXMLPrinter2。

安裝完java環境,然後cmd進入你把apk檔案解壓到的檔案目錄內,使用命令(注意,AXMLPrinter2.jar檔案也要):

java -jar AXMLPrinter2.jar main.xml

成功後會在cmd裡出現xml反編譯出的檔案

classes.dex檔案反編譯

Android 模擬器中提供了一個dex檔案的反編譯工具,dexdump。用法為首先啟動Android模擬器, 把要查看的dex檔案用adb push上傳的模擬器中,然後通過adb shell登入,找到要查看的dex檔案,執行dexdump xxx.dex。但是這樣得到的結果,其可讀性是極差的。

所以我們使用了兩個工具dex2jar和JD-GUI。

反編譯的步驟:

1、從APK中提取classes.dex檔案,對APK檔案解壓即可得到。 將其放到dex2jar的目錄下,開啟cmd,運行dex2jar.bat classes.dex,產生classes.dex.dex2jar.jar。

2、運行JD-GUI工具,開啟上面的jar檔案,即可看到原始碼。

在JD-GUI上可以看到一堆a b c d ……的樹形結構,這些都不是,真正要看的是activity。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.