? ? ?????今天是年一,新年快樂,被爆竹聲吵醒,莫名想起最近老大讓重構的項目,由于對方暫時沒提供源碼,自己嘗試反編譯下.反編譯三部曲,需要Apktool,dex2jar,JD-GUI.第一個可以拿到apk資源,第二個把apk里面class文件變為jar,第三個可以直接觀看jar代碼.
? ??????Apktool:http://ibotpeaches.github.io/Apktool/install/?
????????dex2jar:?https://github.com/pxb1988/dex2jar?
? ? ? ? JD-GUI:?http://jd.benow.ca/?
1.如果沒有沒有homebrew的話 ,進行安裝:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
(有的人肯定疑惑,為啥要裝這個,下面就知道了)
2.
這是官網的操作步驟,照著上面的來
(1)點擊進去第一個網址,把里面的內容全部復制到一個文本,不要后綴名,其實是下載一個shell腳本,保存名為"apktool"
(2)下載apktool的jar包,并且改名為"apktool.jar"
(3)將shell腳本”apktool”和”apktool.jar”放到 “/usr/local/bin”目錄下?
(4)修改這兩個文件可執行權限終端中輸入:chmod a+x? yourFileName
(5)終端中輸入shell apktool(你apktool存放的地方,貌似可以跳過此步驟)
(6)輸入apktool 查看信息
3.下載另外兩個軟件,其中?JD-GUI這個官網下載后如果無法安裝,那可以通過最開始我們下載的homebrew去安裝 指令:brew cask install jd-gui?
4.自己在你想反編譯輸出的地方建立文件夾,我這邊就放桌面了 ,把下載好的dex2jar-2.0也放進去.cd 到這個文件夾,然后執行apktool d? yourApkName,運行后會在當前文件目錄路徑生成一個文件夾,以apk的名字命名,只是沒有后綴.apk.然后apktool b?yourFileName(就是那個生成的文件夾名) 把apk重新生成,在新生成的dist文件下面.這個apk是沒有簽名的,把apk改后綴名.zip,然后解壓拿到里面的classes.dex文件,將這個文件復制到dex2jar-2.0目錄下.最后運行.sh d2j-dex2jar.sh classes.dex.成功后用jd-gui就可以查看文件了
5. 如果在執行sh d2j-dex2jar.sh classes.dex命令時提示類似“d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied”的錯誤,可以執行sudo chmod +x d2j_invoke.sh命令來增加可執行權限