1. 程式人生 > >反編譯常見工具及用法(一)

反編譯常見工具及用法(一)

首先把baksmali-1.4.1.jar和smali-1.4.1.jar檔案放到Android sdk安裝路徑下的tools裡面,把apk用WinRAR解壓並提取classes.dex檔案,也放入tools裡面,然後用命令列,cd tools目錄下,輸入Java命令:

  1. java -jar baksmali-1.4.1.jar -o classout/ classes.dex   
前提是你的path路徑中有你的Java安裝目錄下的bin資料夾路徑,這樣才可以在任意路徑下使用java 命令,還有classout/後要加個空格。執行成功後你會發現tools目錄下多了一個classout資料夾,裡面就是smali型別的檔案,裡面是反編譯出的程式碼,但是不是java程式碼,還是能看出變數和方法的。

2. 我們還可以配合用apktool+dex2jar+jd_gui反編譯apk檔案,來學習人家的架構及介面等。

apktool: 可以解析資原始檔,比如佈局檔案xml等,方便檢視。

dex2jar:可以將dex檔案轉換成jar檔案,用法: (1)將apk檔案字尾改成rar,然後解壓,取出其中的classes.dex,放到任意位置; (2)進入cmd,cd到dex2jar所在資料夾,輸入命令dex2jar.bat %classes.dex所在目錄%\class.dex (3)命令完成後在%class.dex所在目錄%就會生成jar檔案 3. jd_gui:能夠將jar檔案反編譯成java程式碼,開啟jd_gui,然後將jar包拖放到主介面,就可以看到原始碼了。用jd_gui來看反編譯出的Java程式碼,這樣便於尋找自己想要改的東西,找到後可以到baksmali classout下去修改相應的地方。然後是利用smali編譯回去,命令如下:
  1. java -jar smali-
    1.4.1.jar classout/ -o classes.dex  
把classout下編譯成classes.dex然後把classes.dex放回apk下覆蓋原來的classes.dex檔案。