一、工具准備:apktool , dex2jar , jd-gui
二、使用dex2jar + jd-gui 得到apk的java源碼
1.用解壓工具從 apk包中取出 classes.dex 文件
用命令(dex2jar.bat classes.dex)得到一個 jar文件
2.用jd-gui反編譯工具將得到.jar文件反編譯成.java文件
三、使用apktool得到apk的xml文件
用命令(apktool d xxx.apk xxx_xml)反編譯xxx.apk包2.從 xxx_xml 文件夾得到xml文件四、第二步 得到的程序源代碼 和 第三步 得到的xml文件組合下,即可得到完整的apk源碼。
五、應用: 漢化/去廣告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr
1.在步驟三的文件夾xxx_xml/res/ 下, 建文件夾: values-zh-rCN,values-zh-rTW
2.1復制valuesstrings.xml 到 values-zh-rCN 並翻譯.
2.2 去廣告見;
3.重建APK,用命令(apktool b xxx) ,輸出到ABC/dist/out.apk
或命令( apktool b xxx out.apk)
詳細代碼
Ⅱ 如何反編譯Apk得到Java源代碼
具體步驟:
1.首先將apk文件後綴改為RAR並解壓。
2.解壓並擾棚rar文件,得到其中的classes.dex文件
3.我們需要用到dex2jar 把dex文件轉為jar文件。
3.1把解壓李渣得到的classes.dex文件放入dex2jar.bat 所在目錄 )
3.2打開DOS命令行,進入dex2jar所在目錄,運行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar
4.最後用jd-gui.exe打開生成的classes_dex2jar.jar我們絕則就能開到應用的源代碼了。
Ⅲ 怎麼從apk 中獲取r.java里的內容
R.java文件介紹
HelloWorld工程中的R.java文件
package com.android.hellworld;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
R.java文件中默認有attr、drawable、layout、string等四個靜態內部類,每個靜態內部類分別對應著一種資源,如layout靜態內部類對應layout中的界面文件,其中每個靜態內部類中的靜態常量分別定義一條資源標識符,如public static final int main=0x7f030000;對應的是layout目錄下的main.xml文件。
由於目前【drawable-*dpi】目錄下都只有icon.png一個圖片文件,因此此時不同詳述的同名的icon.png文件在drawable內部類總只有一個icon屬性。如果我們在【drawable-*dpi】目錄下再添加一幅圖片,則內部類中會自動的添加一個icon屬性。
PS:添加資源的命名規則:資源文件只能以小寫字母和下劃線做首字母,隨後的名字中只能出現 [a-z0-9_.] 這些字元,否則R.java文件不會自動更新,並且eclipse會提示錯誤。
理解了R.java文件中內容的來源,即當開發者在res/目錄中任何一個子目錄中添加相應類型的文件之後,ADT會在R.java文件中相應的匿名內部類中國自動生成一條靜態int類型的常量,對添加的文件進行索引。如果在layout目錄下再添加一個新的界面,那麼在public static final class layout中也會添加相應的靜態int常量。相反當我們在res目錄下刪除任何一個文件,其在R.java中對應的記錄會被ADT自動刪除。
R.java文件按除了有自動標示資源的索引功能之外,還有另外一個主要的功能,如果res目錄中的某個資源在應用中沒有被使用到,在該應用被編譯的時候系統就不會把對應的資源編譯到該應用的APK包中,這樣可以節省Android手機的資源。
如何通過R.java文件來引用到所需要的資源
1.在java程序中引用資源
按照java的語法來引用即:R.resource_type.resource_name
注意:resource_name不需要文件的後綴名
Android系統本身自帶了很多的資源,我們也可以進行引用,只是需要再前面加上「Android.」以聲明該資源來自Android系統,即:Android.R.resource_type.resouce_name
例:【drawable-*hpi】下的icon.png
該圖片在R.java文件的映射為drawable內部類下icon參數,則如果要獲取該資源,則寫法為:R.drawble.icon
2.在XML文件中引用資源
格式:@[package:]type/name
在xml文件中,如main.xml以及AndroidMainfest.xml文件中通過「@drawable/icon」的方式獲取。其中「@」代表的是R.java類。「drawable」代表的是R.java中的靜態內部類「drawable」,「/icon」代表靜態內部類「drawable」中的靜態屬性「icon」,而該屬性可以指向res目錄下的「drawable-*dpi」中的icon.png資源。其他類型的文件也比較類似。凡是在R文件中定義的資源都可以通過「@Static_inner_classes_name/resource_name」的方式獲取。如「@id/button」,「@string/app_name」。
如果訪問的是Android系統中自帶的文件,則要添加包名「Android:」。例如:android:textColor="@android:color/red"
在布局文件中當我們需要為一些組件添加Id屬性作為標識,可以使用如下的表達式:「@+id/string_name」,其中「+」表示在R.java的名為id的內部類中國添加一條記錄。例:「@+id/button」的含義是在R.java文件中的id這個靜態內部類添加一條常量名為button,該常量就是該資源的標識符。如果 id這個靜態內部類不存在,則會先生成它。
Ⅳ 如何反編譯Apk得到Java源代碼
1.下載反編譯工具
需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot
dex2jar:將apk中的classes.dex轉化成Jar文件。
JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。
apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。
apktool-install-windows-r05-ibot:輔助windows批處理工具。
2.解壓縮APK包
apk文件也是一種常見的zip,常用的壓縮軟體就可輕松地解壓apk文件。用壓縮軟體將apk文件中的文件解壓到一個文件夾中,得到APK中的資源包括XML文件和classes.dex文件,classes.dex就是java文件編譯再通過dx工具打包而成的。
3.反編譯dex文件
解壓apk文件後,你會發現res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理,dex2jar可以將dex文件轉換成普通的jar包。
解壓下載的dex2jar,把解壓後的文件夾放到系統盤跟目錄中並把這個目錄加到系統path變數中,就可以直接用:dex2jar.bat或dex2jar.sh轉換dex文件了。
DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。
將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。
4.反編譯jar包
得到jar包後,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便。
打開壓縮文件JD-GUI,運行jd-gui.exe,打開上面生成的jar包,即可看到源代碼了。
5.反編譯xml文件
打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設計界面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。
具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。把這個文件夾也放到系統盤的根目錄中並把這個目錄加到path變數中。以HelloWord.apk為例:
在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。
這樣就得到了可以得到編譯的源碼和XML資源。
注意:文件的路徑中最好不要出現中文!
Ⅳ 怎麼通過apk反編譯來找應用的數據存放路徑
一、Apk反編譯得到Java源代碼
下載上述反編譯工具包,打開apk2java目錄下的dex2jar-0.0.9.9文件夾,內含apk反編譯成java源碼工具,以及源碼查看工具。
apk反編譯工具dex2jar,是將apk中的classes.dex轉化成jar文件
源碼查看工具jdgui,是一個反編譯工具,可以直接查看反編譯後的jar包源代碼
具體步驟:
首先將apk文件後綴改為zip並解壓,得到其中的classes.dex,它就是java文件編譯再通過dx工具打包而成的,將classes.dex復制到dex2jar.bat所在目錄dex2jar-0.0.9.9文件夾。
在命令行下定位到dex2jar.bat所在目錄,運行
dex2jar.bat classes.dex
生成
classes_dex2jar.jar
然後,進入jdgui文件夾雙擊jd-gui.exe,打開上面生成的jar包classes_dex2jar.jar,即可看到源代碼了
二、apk反編譯生成程序的源代碼和圖片、XML配置、語言資源等文件
如果是漢化軟體,這將特別有用
首先還是要下載上述反編譯工具包,其中最新的apktool,請到google code下載
apktool(google code)
具體步驟:
下載上述反編譯工具包,打開apk2java目錄下的apktool1.4.1文件夾,內含三個文件:aapt.exe,apktool.bat,apktool.jar
註:裡面的apktool_bk.jar是備份的老版本,最好用最新的apktool.jar
在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool.bat d -f abc123.apk abc123
三、 圖形化反編譯apk
上述步驟一、二講述了命令行反編譯apk,現在提供一種圖形化反編譯工具:Androidfby
首先,下載上述反編譯工具包,打開Androidfby目錄,雙擊Android反編譯工具.exe,就可以瀏覽打開要反編譯的apk
Ⅵ [轉載]新手必學:如何解包apk得到裡面的源代碼!
准備的工具除了jdk還有以下內容(在Google官網都有):把apktool-install-windows-2.1_r01-1.zip,dex2jar-0.0.7-SNAPSHOT.zip 解壓到一個盤的根目錄下(這里我選擇H盤),同時把 AXMLPrinter2.jar,apktool.jar 和你想解包的apk軟體也放在同一個目錄下,然後「運行--cmd」打開控制台,輸入 cd /d h : /進入H盤的根目錄然後輸入以下內容( 控制台不要關,為了後面方便):其中apktool.jar 是解包工具,d表示解包, memo.apk是我要解包的軟體, memo表示解包後輸出到這個文件夾,等待片刻,就會生成memo文件夾,打開裡面會有res文件夾下的所有文件和 AndroidManifest.xml ,用記事本就可以查看了。 以上是獲得.xml文件和圖片,下面獲得裡面的.java源代碼:用winRar或者好壓打開memo.apk ,截圖如下:把裡面的classes.dex文件解壓到H盤根目錄下,然後重新打開控制台,輸入 dex2jar.bat classes.dex 得到一個名為 classes.dex.dex2jar.jar 的文件,此時用jd-gui.exe打開classes.dex.dex2jar.jar 就可以看到所有源代碼了! 如果想把反編譯好的文件變回apk文件,只要在控制台輸入 apktool.jar b memo就可以了其中b就是重新封包的意思, memo是你剛才解包出來的文件夾,前提是確保所有文件都在memo文件夾里!!
Ⅶ 怎麼查看反編譯出來的androidmanifest文件
apktool反編譯xml等資源文件:
a. 安裝java環境,下載文件件附件:apktool-1.3.1.tar.bz2,apktool-install-windows-2.2_r01-2.tar.bz2;把這兩個文件解壓到同一目錄下,該目錄cmd中運行apktool獲得幫助信息;
b. apktool d XXX.apk ABC : 反編譯XXX.apk到文件夾ABC
c. apktool b ABC :從反編譯後的文件夾ABC重建APK,輸出到ABC\dist\out.apk(該apk沒有簽名)
d. 這樣我們就可以把遠apk文件通過反編譯後,然後對裡面資源文件作修改,然後再重建為apk即可;
Ⅷ 反編譯後回編找不到生成的apk文件
你用什麼進行的反編譯呢?如果是apktool的話,你檢查一下回編譯的命令。
如果是是其他軟體,例如 apktool-gui的話,你可以直接到目錄下進行查找。
同時,如果提示你回編譯成功,你搜索一下apk文件,看是否能找到。
請採納,謝謝~~有問題繼續溝通~~
Ⅸ 如何查看安卓apk程序的源代碼
將apk文件拷貝至sdcard上。
命令順序如下:
進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,
其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:
在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:\classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!
Ⅹ APK文件怎麼打開 怎麼查看裡麵包含的信息
apk文件可以簡單的通過壓縮軟體進行打開,打開後有如下目錄:
1.assets(文件夾,內部可能有文件夾,這里也有資源、配置文件)
2.res(文件夾,resource的縮寫,存放圖片等數據,圖片解壓出來後可直接查看)
可能出現目錄:
①.anim(文件夾,存放動畫資源,未反編譯情況下為亂碼)
②.xml(文件夾,存放的xml文件,未反編譯情況下為亂碼)
③.raw(文件夾,存放資源文件)
3.classes.dex(文件,很重要的文件,可通過dex2jar.bat將其轉換為jar再通過jd-gui查看)
4.META-INF(文件夾,存放系統簽名文件)
5.resources.arsc(文件,編譯後的二進制資源文件的索引,用處不大,涉及漢化時考慮的文件)
6.lib(文件夾)
①.armeabi(子目錄,存放的是一些so文件)
7.AndroidManifest.xml(xml文件,描述了應用的名字、版本、許可權、引用的庫文件等信息)
註:上訴中的亂碼可以使用apktool進行反編譯後查看,請勿反編譯別人的程序用作盈利或者其他商業用途