重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
反編譯得出的代碼,是JAVA文件在生成CLASS文件時(shí),做過(guò)優(yōu)化的代碼。
創(chuàng)新互聯(lián)從2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元清流做網(wǎng)站,已為上家服務(wù),為清流各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
所以跟你的原文件不一樣(比如:注釋全沒(méi)有,中文全變成Unicode碼,字符串連接全部用StringBuffer類(lèi)來(lái)代替,自動(dòng)增加else語(yǔ)句等等)。
所以,你要是想修改反編譯出來(lái)的代碼,可以:
1、將反編譯出的代碼復(fù)制到一個(gè)新建的類(lèi)文件里
2、運(yùn)行這個(gè)文件
3、根據(jù)錯(cuò)誤提示,進(jìn)行修改
以上是,我用過(guò)的方法。
工具/原料
電腦必須裝JAVA
JAVA電腦環(huán)境教程
apktool
方法/步驟
1. 配置好JAVA環(huán)境變量,下載:apktool 解壓的文件放在C盤(pán)根目錄的apktool文件夾里(apktool文件夾自己創(chuàng)立)
打開(kāi)命令提示符,(開(kāi)始-運(yùn)行-輸入cmd)
2. 輸入:cd \apktool 系統(tǒng)指令到了apktool文件夾(這里就是為什么要把解壓的apktool解壓的文件放到apktool文件夾的原因,當(dāng)然你也可以自命名文件夾的名稱(chēng),那么比如arc,那么指令就變成了:cd \arc 前提是你必須把a(bǔ)pktool解壓的文件放到這個(gè)文件夾里面)
3. 使用RE管理器把系統(tǒng)里面的framework-res.apk 與 SystemUI.apk 提取出來(lái)放在apktool文件夾里面
4. 如果只是想反編譯framework-res.apk
輸入apktool if framework-res.apk(框架的建立)
5. 開(kāi)始最重要的反編譯,輸入指令,apktool d framework-res.apk
(反編輯的APK一定要用沒(méi)換過(guò)圖片的,否則回編輯失敗)
6. 最后反編譯完成
7. 修改代碼完成后,輸入代碼:apktool d framework-res 即可完成回編譯
8. 如果反編譯的是系統(tǒng)文件,比如,SystemUI.apk 那么必須進(jìn)行掛載框架,反編譯時(shí),必須敲入一下命令:(然后再重復(fù)4-7步驟)
apktool if framework-res.apk
apktool if SystemUI.apk
9. 對(duì)于三星手機(jī)(比如9100、9108/9100G),如果反編譯SystemUI.apk要敲入一下命令進(jìn)行框架掛載apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
10. 回編譯的命令是 apktool b XXX (沒(méi)有后面的apk后綴)反編譯的命令是 apktool d xxx (有后面的apk)
安裝Java jdk后
看安裝目錄里有沒(méi)有jad.exe,沒(méi)有要下載,一般都有的
配置Java環(huán)境變量
開(kāi)始-運(yùn)行-cmd-回車(chē)-進(jìn)入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進(jìn)行反編譯:
例如:[2] jad -sjava example.class 回車(chē)
在目錄里可以看到example.java源文件
[1] 反編譯一個(gè)class文件:jad example.class,會(huì)生成example.jad,用文本編輯器打開(kāi)就是java源代碼
[2] 指定生成源代碼的后綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱(chēng),可以先使用-p將反編譯后的源代碼輸出到控制臺(tái)窗口,然后使用重定向,輸出到文件:jad -p example.class myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過(guò)你仍然會(huì)發(fā)現(xiàn)所有的源代碼文件被放到了同一個(gè)文件中,沒(méi)有按照class文件的包路徑建立起路徑
[7] 把packages目錄以及子目錄下的文件全部反編譯并建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當(dāng)重復(fù)使用命令反編譯時(shí),Jad會(huì)提示“whether you want to overwrite it or not”,使用-o可以強(qiáng)制覆蓋舊文件
[9] 還有其他的參數(shù)可以設(shè)置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個(gè)人做了簡(jiǎn)單的翻譯:jad命令總結(jié)
[10] 當(dāng)然,你會(huì)發(fā)現(xiàn)有些源文件頭部有些注釋信息,不用找了,jad沒(méi)有參數(shù)可以去掉它,用別的辦法吧。