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