反編譯apk檔案,得到其原始碼的方法

來源:互聯網
上載者:User

一.反編譯Apk得到Java原始碼

dex2jar和JD-GUI這2個工具配合學習android太靠譜了,所以放上來給大家共用,開源的好處就是好東西大家一起分享。

dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI:
windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
值得注意的是:老版本的軟體並不支援最新的android應用
1.首先找到Android軟體安裝包中的classes.dex

把apk檔案改名為.zip,然後解壓縮其中的classes.dex檔案,它就是java檔案編譯再通過dx工具打包成的,所以現在我們就用上述提到的2個工具來逆方嚮導出java源檔案

2.把classes.dex拷貝到dex2jar.bat所在目錄。
windows系統下:
在命令列模式下定位到dex2jar.bat所在目錄,運行 dex2jar.bat classes.dex ,產生classes.dex.dex2jar.jar
Ubuntu系統下:
在終端下定位到dex2jar.sh所在目錄,運行
sh dex2jar.sh classes.dex
則可產生classes.dex.dex2jar.jar

3.運行JD-GUI工具(它是綠色無須安裝的)

開啟上面的jar檔案,即可看到原始碼

==========================================
二.反編譯apk產生程式的原始碼和圖片、XML配置、語言資源等檔案。

轉載自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html
工具下載:
在http://code.google.com/p/android-apktool/下 載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。
步驟:
1.解壓縮下載的兩個檔案包,apktool-install-windows-2.1_r01-1.zip解壓縮後得到的包裡有aapt.exe 和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解壓後的一個.jar 檔案copy進來)
2.開啟命令視窗 (開始 > 運行,輸入cmd,斷行符號。)進入到apktool.bat的檔案夾裡。
輸入:
apktool d C:\***.apk C:\***檔案夾
(命令列解釋:apktool d 要反編譯的檔案 輸出檔案夾)
特別注意:你要反編譯的檔案一定要放在C盤的根目錄裡,
3.開啟 C:\***檔案夾 就可以得到我們學院的各種資源了。

三.將反編譯完的檔案重新打包成apk
很簡單,只要輸入:
apktood b c:***檔案夾(你編譯出來檔案夾)
(更多內容看原文)

=======================================================
《android-apktool》軟體軟體可以訪問它的首頁http://code.google.com/p/android-apktool/下載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。下載後解開,為了方便使用,按作者的推薦把得到的4個檔案複製到C:\Windows檔案夾裡。

這個工具是Java寫的,需要你的電腦安裝了JRE或者JDK,並在系統內容變數Path裡加入java.exe所在路徑。

以上準備工作做好後,就可以用它來反編譯APK了。這裡我用動態壁紙的APK來做示範。

如果用過動態壁紙,你也許會發現在設定壁紙時,介面的顯示有點問題:“動態壁紙”,在手機上中文顯示為“當前壁紙”。這是“動態壁紙選取器”LiveWallpapersPicker.apk的翻譯錯誤造成的。

(假設LiveWallpapersPicker.apk放在C盤根目錄)

開始 > 運行,輸入cmd,斷行符號。

apktool d "C:\LiveWallpapersPicker.apk" "C:\LiveWallpapersPicker"

複製代碼
(命令列解釋:apktool d 要反編譯的檔案 輸出檔案夾)

這樣,LiveWallpapersPicker.apk就被反編譯了,輸出內容在C:\LiveWallpapersPicker檔案夾裡。

開啟C:\LiveWallpapersPicker檔案夾,我們發現裡面有一些XML檔案和一些檔案夾。絕大部分情況下,語言和圖片資源都在res檔案夾裡,我們這個例子當然不例外。

開啟res檔案夾,可以其中又是很多檔案夾。(又是)絕大部分情況下,語言資源都放在values*檔案夾裡。比如說values放預設語言(英語居多),values-de放德語,values-fr放法語等等。一般我們關心的是values-zh-rCN(簡體中文)和values-zh-rTW(繁體中文)。

開啟values-zh-rCN檔案夾,其中有個strings.xml。開啟看看:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="application_name">動態壁紙選取器</string>
<string name="live_wallpaper_picker_title">當前壁紙</string>
<string name="live_wallpaper_preview_title">當前壁紙預覽</string>
<string name="configure_wallpaper">設定...</string>
<string name="wallpaper_instructions">設定壁紙</string>
<string name="live_wallpaper_empty">無當前壁紙。</string>
<string name="set_live_wallpaper">設定壁紙</string>
<string name="wallpaper_title_and_author">%1$s提供者:%2$s</string>
<string name="live_wallpaper_loading">正在載入當前壁紙…</string>
</resources>

很好,就是它了。把“當前壁紙”都改為“動態壁紙”,再檢查和修正標點——中文內容用中文標點(強烈呼籲大家注意標點問題,目前馬大哈太多了)後,儲存。

本例改這麼多就夠了。其它複雜的APK建議把res檔案夾裡的內容都檢查下,至少你關心的語言檔案夾裡的內容都檢查下。

改完後,就可以重打包了。還是在cmd命令列裡,輸入:

apktool b "C:\LiveWallpapersPicker"

複製代碼
(命令列解釋:apktool b 要打包內容所在檔案夾)
就可以了。產生的APK在C:\LiveWallpapersPicker\dist檔案夾裡,叫out.apk。

這個out.apk是沒有簽名的,所以不能直接裝到手機裡。簽名工具和方法見http://www.hiapk.com/bbs/thread-21261-1-1.html,這裡不說了。

簽名後得到的APK,就是可以裝到手機裡的了。
==========================================================

操練:去掉免費版軟體的廣告條

[http://bbs.ophone8.net/viewthread.php?tid=18082]

開啟google code發現Apktool更新了,居然支援win了。。。。
那本文就是一篇介紹在windows環境下使用Apktool的筆記。
安裝

1.先裝JAVA環境,JDK/JRE都行,官網下載 裝過的就跳過吧

2.下載apktool.jar及相關檔案,這裡下apktool-1.0.0.tar.bz2 和apktool-install-windows-2.1_r01-1.zip

3.解壓apktool.jar到 C:\Windows 解壓apktool-install-windows.zip到任意檔案夾(例如E盤根目錄)
4.Win+R 運行CMD,用cd命令轉到apktool-install-windows所在檔案夾,輸入apktool看看。會列出一些協助的話就成功了。Apktool 命令

apktool d XXX.apk ABC 反編譯XXX.apk到檔案夾ABC
apktool b ABC 從檔案夾ABC重建APK,輸出到ABC\dist\out.apk
然後我們反編譯一枚軟體玩玩…
AutoMemoryManager的免費版底部有一條廣告,去掉它吧。
把com.lim.android.automemman.apk放到同檔案夾(我的就是E盤根目錄)
Win+R 運行CMD
E:<斷行符號>
E:\>apktool d com.lim.android.automemman.apk AMM <斷行符號>
I: Baksmaling…
I: Decoding resource table…
I: Decoding resources…
I: Copying assets and libs…
現在檔案被decode到E:\AMM了,開啟E:\AMM\res\layout\main.xml看,所有都可見了吧~
編輯第59行

<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

改為

<com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

然後CMD輸入
E:\>apktool b AMM
I: Checking whether sources has changed…
I: Smaling…
I: Checking whether resources has changed…
I: Building resources…
I: Building apk file…
用Auto-sign簽名E:\AMM\dist\out.apk 安裝
這樣廣告就不見了

再看,嘿嘿~很帥吧…
這其實就是改了AndroidManifest.xml裡的ADmob廣告ID罷了

聯繫我們

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