反编译apk文件,得到其源代码的方法
一.反編譯Apk得到Java源代碼
dex2jar和JD-GUI這2個(gè)工具配合學(xué)習(xí)android太靠譜了,所以放上來(lái)給大家共享,開(kāi)源的好處就是好東西大家一起分享。
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應(yīng)用
1.首先找到Android軟件安裝包中的classes.dex
把a(bǔ)pk文件改名為.zip,然后解壓縮其中的classes.dex文件,它就是java文件編譯再通過(guò)dx工具打包成的,所以現(xiàn)在我們就用上述提到的2個(gè)工具來(lái)逆方向?qū)С鰆ava源文件
2.把classes.dex拷貝到dex2jar.bat所在目錄。
windows系統(tǒng)下:
在命令行模式下定位到dex2jar.bat所在目錄,運(yùn)行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar
Ubuntu系統(tǒng)下:
在終端下定位到dex2jar.sh所在目錄,運(yùn)行
sh dex2jar.sh classes.dex
則可生成classes.dex.dex2jar.jar
3.運(yùn)行JD-GUI工具(它是綠色無(wú)須安裝的)
打開(kāi)上面的jar文件,即可看到源代碼
==========================================
二.反編譯apk生成程序的源代碼和圖片、XML配置、語(yǔ)言資源等文件。
轉(zhuǎn)載自: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兩個(gè)包都要下。
步驟:
1.解壓縮下載的兩個(gè)文件包,apktool-install-windows-2.1_r01-1.zip解壓縮后得到的包里有aapt.exe 和apktool.bat.(注意要把a(bǔ)pktool-1.0.0.tar.bz2解壓后的一個(gè).jar 文件copy進(jìn)來(lái))
2.打開(kāi)命令窗口 (開(kāi)始 > 運(yùn)行,輸入cmd,回車。)進(jìn)入到apktool.bat的文件夾里。
輸入:
apktool d C:\***.apk C:\***文件夾
(命令行解釋:apktool d 要反編譯的文件 輸出文件夾)
特別注意:你要反編譯的文件一定要放在C盤(pán)的根目錄里,
3.打開(kāi) C:\***文件夾 就可以得到我們學(xué)院的各種資源了。
三.將反編譯完的文件重新打包成apk
很簡(jiǎn)單,只要輸入:
apktood b c:***文件夾(你編譯出來(lái)文件夾)
(更多內(nèi)容看原文)
=======================================================
《android-apktool》軟件軟件可以訪問(wèn)它的主頁(yè)http://code.google.com/p/android-apktool/下載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個(gè)包都要下。下載后解開(kāi),為了方便使用,按作者的推薦把得到的4個(gè)文件復(fù)制到C:\Windows文件夾里。
這個(gè)工具是Java寫(xiě)的,需要你的電腦安裝了JRE或者JDK,并在系統(tǒng)環(huán)境變量Path里加入java.exe所在路徑。
以上準(zhǔn)備工作做好后,就可以用它來(lái)反編譯APK了。這里我用動(dòng)態(tài)壁紙的APK來(lái)做示范。
如果用過(guò)動(dòng)態(tài)壁紙,你也許會(huì)發(fā)現(xiàn)在設(shè)置壁紙時(shí),界面的顯示有點(diǎn)問(wèn)題:“動(dòng)態(tài)壁紙”,在手機(jī)上中文顯示為“當(dāng)前壁紙”。這是“動(dòng)態(tài)壁紙選擇器”LiveWallpapersPicker.apk的翻譯錯(cuò)誤造成的。
(假設(shè)LiveWallpapersPicker.apk放在C盤(pán)根目錄)
開(kāi)始 > 運(yùn)行,輸入cmd,回車。
apktool d "C:\LiveWallpapersPicker.apk" "C:\LiveWallpapersPicker"
復(fù)制代碼
(命令行解釋:apktool d 要反編譯的文件 輸出文件夾)
這樣,LiveWallpapersPicker.apk就被反編譯了,輸出內(nèi)容在C:\LiveWallpapersPicker文件夾里。
打開(kāi)C:\LiveWallpapersPicker文件夾,我們發(fā)現(xiàn)里面有一些XML文件和一些文件夾。絕大部分情況下,語(yǔ)言和圖片資源都在res文件夾里,我們這個(gè)例子當(dāng)然不例外。
打開(kāi)res文件夾,可以其中又是很多文件夾。(又是)絕大部分情況下,語(yǔ)言資源都放在values*文件夾里。比如說(shuō)values放默認(rèn)語(yǔ)言(英語(yǔ)居多),values-de放德語(yǔ),values-fr放法語(yǔ)等等。一般我們關(guān)心的是values-zh-rCN(簡(jiǎn)體中文)和values-zh-rTW(繁體中文)。
打開(kāi)values-zh-rCN文件夾,其中有個(gè)strings.xml。打開(kāi)看看:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="application_name">動(dòng)態(tài)壁紙選擇器</string>
<string name="live_wallpaper_picker_title">當(dāng)前壁紙</string>
<string name="live_wallpaper_preview_title">當(dāng)前壁紙預(yù)覽</string>
<string name="configure_wallpaper">設(shè)置...</string>
<string name="wallpaper_instructions">設(shè)置壁紙</string>
<string name="live_wallpaper_empty">無(wú)當(dāng)前壁紙。</string>
<string name="set_live_wallpaper">設(shè)置壁紙</string>
<string name="wallpaper_title_and_author">%1$s提供者:%2$s</string>
<string name="live_wallpaper_loading">正在載入當(dāng)前壁紙…</string>
</resources>
很好,就是它了。把“當(dāng)前壁紙”都改為“動(dòng)態(tài)壁紙”,再檢查和修正標(biāo)點(diǎn)——中文內(nèi)容用中文標(biāo)點(diǎn)(強(qiáng)烈呼吁大家注意標(biāo)點(diǎn)問(wèn)題,目前馬大哈太多了)后,保存。
本例改這么多就夠了。其它復(fù)雜的APK建議把res文件夾里的內(nèi)容都檢查下,至少你關(guān)心的語(yǔ)言文件夾里的內(nèi)容都檢查下。
改完后,就可以重打包了。還是在cmd命令行里,輸入:
apktool b "C:\LiveWallpapersPicker"
復(fù)制代碼
(命令行解釋:apktool b 要打包內(nèi)容所在文件夾)
就可以了。生成的APK在C:\LiveWallpapersPicker\dist文件夾里,叫out.apk。
這個(gè)out.apk是沒(méi)有簽名的,所以不能直接裝到手機(jī)里。簽名工具和方法見(jiàn)http://www.hiapk.com/bbs/thread-21261-1-1.html,這里不說(shuō)了。
簽名后得到的APK,就是可以裝到手機(jī)里的了。
==========================================================
操練:去掉免費(fèi)版軟件的廣告條
[http://bbs.ophone8.net/viewthread.php?tid=18082]
打開(kāi)google code發(fā)現(xiàn)Apktool更新了,居然支持win了。。。。
那本文就是一篇介紹在windows環(huán)境下使用Apktool的筆記。
安裝
1.先裝JAVA環(huán)境,JDK/JRE都行,官網(wǎng)下載 裝過(guò)的就跳過(guò)吧
2.下載apktool.jar及相關(guān)文件,這里下apktool-1.0.0.tar.bz2 和apktool-install-windows-2.1_r01-1.zip
3.解壓apktool.jar到 C:\Windows 解壓apktool-install-windows.zip到任意文件夾(例如E盤(pán)根目錄)
4.Win+R 運(yùn)行CMD,用cd命令轉(zhuǎn)到apktool-install-windows所在文件夾,輸入apktool看看。會(huì)列出一些幫助的話就成功了。Apktool 命令
apktool d XXX.apk ABC 反編譯XXX.apk到文件夾ABC
apktool b ABC 從文件夾ABC重建APK,輸出到ABC\dist\out.apk
然后我們反編譯一枚軟件玩玩…
AutoMemoryManager的免費(fèi)版底部有一條廣告,去掉它吧。
把com.lim.android.automemman.apk放到同文件夾(我的就是E盤(pán)根目錄)
Win+R 運(yùn)行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…
現(xiàn)在文件被decode到E:\AMM了,打開(kāi)E:\AMM\res\layout\main.xml看,所有都可見(jiàn)了吧~
編輯第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 安裝
這樣廣告就不見(jiàn)了
再看,嘿嘿~很帥吧…
這其實(shí)就是改了AndroidManifest.xml里的ADmob廣告ID罷了
總結(jié)
以上是生活随笔為你收集整理的反编译apk文件,得到其源代码的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UWP_小说在线阅读器:功能要求与技术要
- 下一篇: WP8.1使用HttpClient类