關於有的Apk無法反編譯的探究


Android的apk包,其實就是zip包,只不過后綴名換了而已!使用“好壓”等解壓縮工具解壓,就可以看到里面的內容了。簡單介紹一下吧。

以下就是解壓出來的apk的內容:

關於有的Apk無法反編譯的探究
其中:

assets                 對應工程目錄下的 assets目錄,存放附加資源。

lib                    對應工程目錄下的 lib目錄,存放程序引用庫。

META-INF               存放apk簽名信息。

res                    對應工程目錄下的res目錄,存放程序資源,如圖片等

AndroidManifest.xml    程序的聲明文件,包括SDK版本、Activity聲明,權限聲明等。

classes.dex            java字節碼,即代碼文件。

resources.arsc         資源標識文件,存放字符串等內容。

關於反編譯的方法,百度一搜就一大堆,這個我就不多說了!

附上幾個鏈接吧:

1、Android APK反編譯詳解(附圖)

http://blog.csdn.net/sunboy_2050/article/details/6727581

2、真正強大的APK反編譯工具 DoAPK 1.0 發布!圖形化操作,有圖有真相

http://bbs.hiapk.com/thread-1226617-1-1.html

第1種方法,

通過使用“dex2jar”工具,

把“classes.dex”文件轉換為“classes.dex.dex2jar.jar”,

然后再使用“JD-GUI”工具直接打開“classes.dex.dex2jar.jar”文件,

就可以看到詳細的Java代碼了。

 

通常會有3種情況:

1、如果開發者沒有使用代碼混淆的話,那么,你將看到100%的源代碼。

2、如果開發者加入了代碼混淆的話,那么,你將看到a,b,c,d之類的名字的代碼。

3、還有一種情況是,你什么都看不到。這也是我寫這篇文章的重點所在。

針對這個問題,我在網上搜索了三天,均沒有任何相關的解決方法。

今天早上,偶爾看到有人說是系統問題,在win7下無法查看,但在xp下又可以查看。

於是,我就試着用虛擬機的windows 2003系統看看,結果,還是不行。

后來,仔細一想,懷疑是dex2jar工具版本有問題

於是在2003我安裝了新的dex2jar,版本為0.9.8

結果,真的可以看到JAVA代碼了。

下圖是使用dex2jar 0.9.8的效果:

關於有的Apk無法反編譯的探究



下圖是dex2jar 0.7.0的效果:

 

關於有的Apk無法反編譯的探究



由此可知:

有的apk無法反編譯,是因為dex2jar的版本太低了!

 

建議:

在使用dex2jar工具的時候,最好使用最新版,以確保反編譯的成功。

 

 

 

后來補充:

有些朋友喜歡使用apktool來進行反編譯,操作過程中經常會出現各種問題,無法順利反編譯。

一般來說,這種APK在發布的時候動了手腳(比如加殼、增加特殊代碼讓apktool出異常……)

解決方法是,

1、首先確保apktool用了最新版本;

2、然后看看apktool出了什么錯誤,打開apktool.jar,定位到具體代碼查看原因

 

這種情況比較復雜,也比較麻煩,有興趣的朋友可以去“看雪論壇”多看看。

首先說APK反編譯個人經驗,2.0之后的APKTOOL(目前任何一款反編譯工具都是基於APKTOOL)需要JDK1.8以上的兼容性。第二點,APK的路徑是否包含中文,或空格。最好在磁盤盤符根目錄下反編譯編譯。第三點,可以試着刪除錯誤提示中的字行,重新編譯。還有就是升級APKTOOL.JAR文件。

最新解決,apktool用的是apktool_2.0.0rc3.jar解決了這個問題,謝謝

 

 

apktool反編譯時經常會出現下面的信息

 

 

1.Input file  was not found or was not readable.

2.Destination directory (C:\Users\user\a) already exists. Use -f switch if you want to overwrite it.

 

3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c fil..........

 

 

 

解決方案:

 

1和2是因為apktool升級到2.0以上時,使用方式已經替換,格式為:apktool d [-s] -f <apkPath> -o <folderPath>,參數具體的意思可以直接打apktool回車(windows)查看幫助

 

3是因為apktool版本過低導致,請升級到最新版本,地址:https://bitbucket.org/iBotPeaches/apktool/downloads, 我使用的apktool是2.0版本,生成的xml文件沒有亂碼。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM