Android反編譯apk修改版本號及重簽名流程

最近突然有個需求,將很久前的某個版本重新發(fā)布到線上聋迎,經(jīng)過長時間的迭代脂矫,gradle plugin的變遷以及插件化和模塊遠程依賴導(dǎo)致項目結(jié)構(gòu)發(fā)生了巨大的變化,想要直接找回某個版本的代碼成功的運行起來比較困難霉晕,不過還好只是修改版本號以及渠道庭再,所以想到了直接使用反編譯改完之后再回編的方式。這篇文章主要是記錄一下整個流程牺堰。

apktool

Apktool是一個逆向android非常有用的工具拄轻,可以用來反編譯apk文件,并且能在修改部分文件后萌焰,重新打包成一個新的apk哺眯,首選我們需要下載一個apktool的jar包,下載地址扒俯,下載之后把名稱改成apktool.jar奶卓,然后新建一個bat腳本,內(nèi)容是

if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
chcp 65001 2>nul >nul
java -jar -Duser.language=en -Dfile.encoding=UTF8 "%~dp0\apktool.jar" %* 

這樣準備工作就完成了

反編譯生成目標文件

然后我們準備一個apk文件撼玄,在同一個目錄下執(zhí)行下面的命令

apktool.bat d -o apk.out source.apk

apk.out是反編譯之后生成的文件夾夺姑,source.apk就是準備的原apk文件名稱,執(zhí)行命令之后生成的apk.out目錄如下

apk.out

修改版本號及Manifest文件

有了這個apk.out就能修改里面的東西了掌猛,最難修改的部分就是java代碼盏浙,這里對應(yīng)的是smali相關(guān)的文件夾,需要了解一些smali的語法才行荔茬。
修改應(yīng)用版本號只需要修改apktool.yml


apktool.yml

最下面的versionCode和versionName就是我們要修改的部分废膘,這里直接改動成最新的版本號和code就行,
另一個是渠道名慕蔚,這個存儲在Manifest文件夾下丐黄,Android的Manifest文件有兩個,一個是外面的AndroidManifest.xml孔飒,這個不是亂碼的,經(jīng)過了apktool的特殊處理,還有一個在original文件夾下的AndroidManifest.xml莉撇,這個和一般的解壓apk拿到的是一樣的先慷,打開會發(fā)現(xiàn)亂碼,這個是android的xml文件的特殊結(jié)構(gòu)導(dǎo)致的,可以自行下載一個AXMLPrinter2.S.jar,然后使用下面的命令就能生成一個非亂碼的文件xxx.txt

java -jar AXMLPrinter2.S.jar AndroidManifest.xml > xxx.txt

同樣的找到需要修改的渠道名key之后,將value改為想要修改的渠道名

回編apk

然后就是再使用下面的命令行逾柿,可以將我們的apk.out文件夾重新編成一個apk文件,也就是下面的dst.apk

apktool.bat b -o dst.apk apk.out

重簽名以及內(nèi)存對齊

拿到新的apk之后蛛勉,最后還需要兩步鹿寻,一是重簽名,直接把簽名的keystore拷貝過來诽凌,執(zhí)行下面的命令

jarsigner -verbose -keystore xxx.keystore -signedjar dst_signed.apk dst.apk keyAlias

然后輸入密碼就行毡熏,生成的簽名apk就是 dst_signed.apk
最后還有一個字節(jié)對齊的工具zipalign.exe,這個在sdk的build-tools的版本下面侣诵,zipalign主要是用來用APK文件提供優(yōu)化痢法,目的是確保所有未壓縮的數(shù)據(jù)以相對于文件的開始對齊。具體來說杜顺,它會導(dǎo)致APK中的所有未壓縮數(shù)據(jù)(如圖像或原始文件)在4字節(jié)邊界上對齊财搁。這允許所有的部分文件都能直接使用mmap進行訪問,即使是包含具有對齊限制的二進制數(shù)據(jù)躬络,這樣會減少運行應(yīng)用程序時消耗的內(nèi)存量尖奔。
zipalign的使用環(huán)節(jié)分為兩種情況,如果使用的是上面這種jarsigner穷当,那么就需要在簽名之后再進行對齊提茁,如果使用的是apksigner,那么就需要先執(zhí)行zipalign馁菜,然后再簽名茴扁,順序相反的話簽名就會失效,我們可以通過以下命令判斷一個apk汪疮,是否文件對齊

zipalign -c -v 4 dst.apk

執(zhí)行完之后峭火,會輸出一些數(shù)據(jù)


zipalign check

可以看到這個剛剛簽名之后的apk文件,并沒有驗證通過智嚷,內(nèi)部許多文件都是有問題的卖丸,然后我們執(zhí)行以下對齊

zipalign -v 4 dst_signed.apk dst_signed_align.apk
verification success

這樣就是文件對齊之后的正確版本,一整套的流程基本就結(jié)束了

最后

我們剛才通過修改apktool.yml文件修改了apk的版本號盏道,可以通過aapt工具看看新的apk的版本號是不是真的修改成功了

aapt dump badging dst_signed_align.apk

aapt的工具也在sdk的build-tools文件下面

aapt dump

可以看到版本號確實已經(jīng)修改了稍浆,通過這種方式就達到了修改apk的目的,當然如果想要修改java代碼,那么還需要學(xué)習(xí)smali相關(guān)的語法粹湃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泉坐,隨后出現(xiàn)的幾起案子为鳄,更是在濱河造成了極大的恐慌,老刑警劉巖腕让,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孤钦,死亡現(xiàn)場離奇詭異,居然都是意外死亡纯丸,警方通過查閱死者的電腦和手機偏形,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來觉鼻,“玉大人俊扭,你說我怎么就攤上這事∽钩拢” “怎么了萨惑?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仇矾。 經(jīng)常有香客問我庸蔼,道長,這世上最難降的妖魔是什么贮匕? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任姐仅,我火速辦了婚禮,結(jié)果婚禮上刻盐,老公的妹妹穿的比我還像新娘掏膏。我一直安慰自己,他們只是感情好隙疚,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布壤追。 她就那樣靜靜地躺著,像睡著了一般供屉。 火紅的嫁衣襯著肌膚如雪行冰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天伶丐,我揣著相機與錄音悼做,去河邊找鬼。 笑死哗魂,一個胖子當著我的面吹牛肛走,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播录别,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼朽色,長吁一口氣:“原來是場噩夢啊……” “哼邻吞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起葫男,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抱冷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梢褐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旺遮,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年盈咳,在試婚紗的時候發(fā)現(xiàn)自己被綠了耿眉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鱼响,死狀恐怖鸣剪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丈积,我是刑警寧澤西傀,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站桶癣,受9級特大地震影響拥褂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜牙寞,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一饺鹃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧间雀,春花似錦悔详、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至连锯,卻和暖如春归苍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背运怖。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工拼弃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摇展。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓吻氧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子盯孙,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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