使用apktool、keytool脂凶、jarsigner反編譯并打包apk

記錄一下解壓一個(gè)apk宪睹,替換未加密的資源文件,然后再打包成apk蚕钦,并簽名的過(guò)程亭病。

操作環(huán)境與工具

環(huán)境:

  • Windows 7 SP1
  • Java SE 1.8.0_111-b14

工具:

需要準(zhǔn)備的文件:

  • apktool_2.2.1.jar (上面下載完成罪帖,獲得的就是這個(gè)文件)
  • app.apk (這個(gè)是一個(gè)用來(lái)測(cè)試的apk,代碼已加密邮屁,資源未加密)
  • mykey.keystore (這是一個(gè)使用keytool生成的簽名文件胸蛛,可以參照博客來(lái)生成)

解壓apk

我們先創(chuàng)建一個(gè)文件夾dir,將上面需要準(zhǔn)備的文件全部放到這個(gè)文件夾dir內(nèi)樱报。然后打開(kāi)cmd窗口葬项,將使用cd命令,將當(dāng)前工作目錄切換到新目錄dir下迹蛤,方便操作民珍。

當(dāng)前目錄內(nèi)容:

apktool_2.2.1.jar
app.apk
mykey.keystore

完成上面的準(zhǔn)備工作之后。在cmd中使用如下命令:

java -jar apktool_2.2.1.jar decode app.apk

命令的參數(shù)decode表示解碼(可以用d表示)盗飒,app.apk是需要解析的apk文件嚷量。

提示:執(zhí)行jar文件,需要使用命令 java -jar [jar文件]

等待幾秒逆趣,命令執(zhí)行完成后蝶溶,會(huì)看到目錄dir下看到新增了一個(gè)文件夾app

打開(kāi)app文件夾,可以看到目錄如下:

assets
lib
original
res
smali
unknown
AndroidManifest.xml
apktool.yml

我解壓的這個(gè)apk包抖所,資源是未加密的梨州,所以如果我想改資源,直接在res文件夾中去替換就好了田轧。
注意:apktool.yml這個(gè)文件暴匠,在使用ApkTool壓縮成apk時(shí)是需要用到的,(如果是直接把a(bǔ)pp.apk的后綴改為zip傻粘,然后用壓縮工具解壓出來(lái)的每窖,就不會(huì)有這個(gè)apktool.yml了,也不能用apktool再壓縮成apk)弦悉。


打包apk

上面進(jìn)行完需要的修改(例如替換資源窒典,修改配置數(shù)據(jù)等)之后。我們現(xiàn)在可以再使用ApkTool來(lái)打包這個(gè)app文件夾稽莉,生成新的apk崇败。

繼續(xù)在cmd中進(jìn)行操作,cmd的工作目錄仍然在我們?cè)诘谝徊叫陆ǖ膁ir中肩祥,不需要改動(dòng)。

在cmd中執(zhí)行以下命令:

java -jar apktool_2.2.1.jar build -o myapp.apk app

命令的參數(shù)build表示打包(可以用b表示)缩膝,-o 后接生成的apk名稱(路徑)混狠,最后是需要打包成apk的文件夾,也就是我們上一步解壓出來(lái)的app目錄

等待命令執(zhí)行完成疾层,目錄dir中多出來(lái)了一個(gè)myapp.apk将饺,這個(gè)就是打包生成的apk了。

現(xiàn)在這個(gè)apk文件是不能安裝的痛黎,我在小米3上測(cè)試予弧,安裝時(shí)會(huì)提示解析包錯(cuò)誤。


給apk包簽名

上一步打包出來(lái)的apk文件在真機(jī)上無(wú)法安裝湖饱,需要對(duì)apk包簽名過(guò)之后才能使用掖蛤。簽名時(shí),我們需要知簽名文件mykey.keystore的別名Alias(知道密碼是前提)井厌。

在知道密碼的前提下蚓庭,想要看到簽名文件中的內(nèi)容可以使用命令:

keytool -v -list -keystore mykey.keystore

然后輸入密碼,此時(shí)密碼是無(wú)回顯的仅仆,看不到輸入的過(guò)程器赞,輸入完回車就行。

使用簽名文件mykey.keystore對(duì)上一步生成的myapp.apk進(jìn)行簽名墓拜,可以在cmd中輸入如下命令:

jarsigner -verbose -keystore mykey.keystore -signedjar signed_myapp.apk myapp.apk myAlias

命令的參數(shù)-verbose 表示簽名時(shí)輸出詳細(xì)信息,-keystore mykey.keystore指明需要使用的簽名文件港柜,-signedjar signed_myapp.apk指明生成的簽名過(guò)的apk的名稱(路徑),后面的myapp.apk表示未簽名的apk文件咳榜,末尾的myAlias表示簽名文件mykey.keystore的別名(在生成這個(gè)簽名文件的時(shí)候配置的屬性)夏醉。

等待命令執(zhí)行完成爽锥,可以看到我們的文件夾dir下新增了一個(gè)文件signed_myapp.apk,這個(gè)就是對(duì)上一步生成的myapp.apk進(jìn)行簽名之后生成的文件了授舟,這個(gè)文件可以直接在手機(jī)上安裝了(前提是app.apk可用救恨,而且在解壓過(guò)后沒(méi)有進(jìn)行一些錯(cuò)誤的修改操作)。


總結(jié)

使用到的命令:

  • 解壓apk: java -jar apktool_2.2.1.jar decode app.apk
  • 查看keystore: keytool -v -list -keystore mykey.keystore
  • 打包apk: java -jar apktool_2.2.1.jar build -o myapp.apk app
  • 簽名: jarsigner -verbose -keystore mykey.keystore -signedjar signed_myapp.apk myapp.apk myAlias

其實(shí)通常下載到的apk都會(huì)進(jìn)行資源壓縮加密释树,代碼混淆加密肠槽。這里只是使用一個(gè)apk來(lái)進(jìn)行流程的測(cè)試,真正去進(jìn)行資源和代碼的反編譯奢啥、解密等要分具體情況來(lái)看秸仙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市桩盲,隨后出現(xiàn)的幾起案子寂纪,更是在濱河造成了極大的恐慌,老刑警劉巖赌结,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捞蛋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡柬姚,警方通過(guò)查閱死者的電腦和手機(jī)拟杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)量承,“玉大人搬设,你說(shuō)我怎么就攤上這事∷汉矗” “怎么了拿穴?”我有些...
    開(kāi)封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)忧风。 經(jīng)常有香客問(wèn)我默色,道長(zhǎng),這世上最難降的妖魔是什么狮腿? 我笑而不...
    開(kāi)封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任该窗,我火速辦了婚禮,結(jié)果婚禮上蚤霞,老公的妹妹穿的比我還像新娘酗失。我一直安慰自己,他們只是感情好昧绣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布规肴。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拖刃。 梳的紋絲不亂的頭發(fā)上删壮,一...
    開(kāi)封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音兑牡,去河邊找鬼央碟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛均函,可吹牛的內(nèi)容都是我干的亿虽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼苞也,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洛勉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起如迟,我...
    開(kāi)封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤收毫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后殷勘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體此再,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年玲销,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了输拇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡痒玩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出议慰,到底是詐尸還是另有隱情蠢古,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布别凹,位于F島的核電站草讶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏炉菲。R本人自食惡果不足惜堕战,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拍霜。 院中可真熱鬧嘱丢,春花似錦、人聲如沸祠饺。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至缀旁,卻和暖如春记劈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背并巍。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工目木, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懊渡。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓刽射,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親距贷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柄冲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容