Android由于其代碼是放在dalvik虛擬機上的托管代碼,所以能夠很容易的將其反編譯為我們可以識別的代碼。
之前我寫過一篇文章反編譯Android的apk包到smali文件 然后再重新編譯簽名后打包實現(xiàn)篡改apk的功能。
見http://blog.csdn.net/Zengyangtech/archive/2010/08/12/5807517.aspx
最近又有一種新的方法來實現(xiàn)直接從Android apk包里的classes.dex文件,把dex碼反編譯到j(luò)ava的.class二進制碼,然后從.class二進制碼反編譯到j(luò)ava源碼想必就不用我來多說了吧。
首先我們需要的工具是dex2jar和jd-gui
其中第一個工具dex2jar是用來把classex.dex文件也就是dex二進制碼轉(zhuǎn)化為java的標(biāo)準(zhǔn).class二進制碼,然后jd-gui是把標(biāo)準(zhǔn)的.class二進制碼再反編譯為java源碼。
首先從apk包里面提取出classes.dex
放到dex2jar目錄下
然后在命令行下執(zhí)行
dex2jar.bat classes.dex
這時執(zhí)行成功后會生成一個classes.dex.dex2jar.jar文件
這個文件再用jd-gui打開,如下圖
幾乎跟我自己寫的這個程序的源碼一樣
提供這個反編譯方法主要用于大家學(xué)習(xí)與研究,有問題可以與我郵件討論。
希望大家不要用這個方法從事惡意的活動,畢竟,別人辛辛苦苦寫程序也不容易,用這個方法可以大致的學(xué)習(xí)到別人寫的程序的邏輯,架構(gòu),希望對大家有所幫助
聯(lián)系客服