怎樣反編譯安卓app(如何反編譯apk)
本篇文章給大家談?wù)勗鯓臃淳幾g安卓app,以及如何反編譯apk對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
如何反編譯android應(yīng)用以及重編譯,簽名和對(duì)齊優(yōu)化
首先,了解一下我們?yōu)槭裁葱枰淳幾gapk
大部分情況下,是由于想本地化一款優(yōu)秀的應(yīng)用,才需要做這事兒;又或者進(jìn)行少量的smali修改以達(dá)到想要的效果(如添加歸屬地,使3G版Nexus 7支持Wi-Fi熱點(diǎn))。
下面我們先準(zhǔn)備運(yùn)行環(huán)境和工具
建立工作目錄,如.\workspace\apktoolbox (下面同樣以此路徑為例)
必不可少的JDK:Oracle Java下載,安裝完成后把jdk-inst-path\bin添加到$PATH環(huán)境變量中
反編譯和重編譯工具apktool:Google Code下載,按平臺(tái)下載(一個(gè)apktool-install-platform-ver-tar.bz2,一個(gè)apktoolver.tar.bz2,下載完成后解壓至.\workspace\apktoolbox\bin
密鑰文件,共4組。test/shared/media/platform,從android source中獲取,分別對(duì)應(yīng)不同共享用戶(hù)ID時(shí)簽名所需(查看應(yīng)用AndroidManifest.xml第二行android:sharedUserId項(xiàng) ),放到.\workspace\apktoolbox\bin下
test - 無(wú)android:sharedUserId項(xiàng)
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
簽名工具signapk.jar,放到.\workspace\apktoolbox\bin下
對(duì)齊優(yōu)化工具zipalign(從android sdk中獲取,在tools目錄下),放到.\workspace\apktoolbox\bin下
準(zhǔn)備工作完成
接下來(lái)我們就要開(kāi)始工作了(以本地化工作為例)
把待反編譯的apk放到.\workspace\apktoolbox\apks下
在命令行模式下進(jìn)入.\workspace\apktoolbox\bin目錄,輸入以下命令進(jìn)行解包(反編譯)
apktool d ..\apks\apkfile.apk ..\apks\outdir
.\workspace\apktoolbox\apks\outdir\res下的values目錄(英文原版)和values-rlocale目錄(本地化)就是我們需要的對(duì)象。
本地化工作完成后,在命令行中輸入以下命令進(jìn)行重新打包(重新編譯)
apktool b ..\apks\outdir
.\workspace\apktoolbox\apks\outdir\dist目錄下會(huì)生成重新打包后的apk(未簽名,未對(duì)齊優(yōu)化)
重新打包完成后,在命令行中輸入以下命令進(jìn)行簽名(根據(jù)實(shí)際情況選用密鑰,這里以test密鑰為例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\outdir\dist\apkfile.apk ..\apks\apkfile_signed.apk
簽名完成后,在命令行中輸入以下命令進(jìn)行對(duì)齊優(yōu)化
zipalign -f -v 4 ..\apks\apkfile_signed.apk ..\apks\apkfile_zipaligned.apk
apkfile_zipaligned.apk就是我們最終需要的apk了。
完成
部分apk需要系統(tǒng)框架資源,沒(méi)有的話(huà)在重新打包時(shí)會(huì)報(bào)錯(cuò),這種情況下我們只需要先安裝一下對(duì)應(yīng)系統(tǒng)框架即可(從你目標(biāo)ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中輸入以下命令進(jìn)行安裝
apktool if ..\apks\framework-res.apk
如何反編譯一個(gè)app
下載apktool所需文件:
a、 apktool1.5.2.tar.bz2
b、apktool-install-windows-r05-ibot.tar.bz2 (windows系統(tǒng))
解壓剛剛下載的文件,并將解壓的文件放入C:\Windows目錄下
啟動(dòng)控制臺(tái),輸入apktool,回車(chē)可查看到apktool工具常用指令
新建一個(gè)文件夾,用于存放apk及待解壓的文件,這里筆者將文件夾建在D:\apk目錄,同時(shí)放入用于測(cè)試的android app包(test.apk)
控制臺(tái)輸入:apktool d D:\apk\test.apk D:\apk\test 進(jìn)行反編譯操作
中句話(huà)中“D:\apk\test.apk”指apk存放位置,“D:\apk\test”指反編譯后文件存放的位置 反編譯成功之后,進(jìn)入D:\apk\test文件目錄可以查看到反編譯后的文件
如何反編譯android應(yīng)用并重新打包
android應(yīng)用安裝到手機(jī)的是一個(gè)apk文件。apk是可以用工具進(jìn)行反編譯并重新打包的。本文將介紹下如何用apktool對(duì)apk進(jìn)行反編譯并重新打包。工具/原料apktoolautosign方法/步驟首先我們新建一個(gè)android項(xiàng)目,里面只有一個(gè)MainActivity,而且主界面只會(huì)顯示一個(gè)字符串:你好。下面,我們切換到這個(gè)項(xiàng)目生成的apk文件所在的目錄,可以看到有一個(gè)hellodemo.apk。在命令行輸入:apktoold-rhellodemo.apk??梢钥吹皆诋?dāng)前目錄下生成了一個(gè)hellodemo文件夾。進(jìn)入到hellodemo\smali\com\example\hello,打開(kāi)MainActivity.smali。找到:const-stringv1,"\u4f60\u597d",修改為:const-stringv1,"hello",然后在命令行輸入:apktoolbhellodemohellodemo1.apk。這回重新打包成hellodemo1.apk。然后給新生成的apk進(jìn)行簽名。把這個(gè)apk拷貝到autosign的目錄下面,然后切換過(guò)去,在命令行輸入:java-jarsignapk.jartestkey.x509.pemtestkey.pk8hellodemo1.apkhellodemo.apk。步驟閱讀把生成的hellodemo.apk安裝到手機(jī),可以看到主界面上已經(jīng)顯示的是hello,而不再是你好。說(shuō)明反編譯重新打包成功!
怎樣反編譯安卓app的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于如何反編譯apk、怎樣反編譯安卓app的信息別忘了在本站進(jìn)行查找喔。
掃描二維碼推送至手機(jī)訪(fǎng)問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。