android apk的反編譯和再發(fā)布基本思路

準(zhǔn)備工作

1投慈、從手機(jī)上準(zhǔn)備好一個(gè)待反編譯的app荧降,也就是apk文件傳到電腦上(鄙人是通過qq的文件傳輸完成的)专挪;
2及志、準(zhǔn)備好Android中常用的反編譯工具有三個(gè):dex2jarjd-guiapktool(需要安裝好jdk和jre并配置好環(huán)境變量)寨腔。

dex2jar:將apk中的classes.dex文件轉(zhuǎn)換成jar文件速侈。
jd-gui:查看由dex2jar轉(zhuǎn)換成的jar文件,以界面的形式展示反編譯出來的Java源代碼迫卢。
apktool:反編譯生成smali字節(jié)碼文件倚搬,提取apk中的資源文件。
(以上三個(gè)工具的資源鏈接:http://pan.baidu.com/s/1pLjwinD 密碼:jhvk)
UltraEdit工具:編輯器(方便替換包名)乾蛤。

開始反編譯

3每界、查看源代碼

3.1、更改apk文件的后綴名為zip家卖,通過解壓得到其中的classes.dex文件放在dex2jar工具的目錄下眨层,然后將命令行cd到dex2jar目錄下執(zhí)行如下命令:

./d2j-dex2jar.bat classes.dex

得到classes-dex2jar.jar文件。
3.2上荡、然后通過jd-gui.exe趴樱,將class-dex2jar.jar文件拖進(jìn)去,就可以看到反編譯出來的源代碼(反編譯的代碼和原本的代碼差別不大酪捡,主要差別是原來的資源引用全都變成了數(shù)字)叁征。

4、修改源代碼

4.1沛善、將最開始的apk文件再?gòu)?fù)制一份到apktool目錄下航揉,將命令行cd到apktool目錄下執(zhí)行:

./apktool.bat d 123_old.apk

其中d是decode的意思〗鸬螅可能會(huì)因?yàn)閍pktool的版本比較落后的原因報(bào)如下的錯(cuò):

image.png

成功后就會(huì)對(duì)應(yīng)生成一個(gè) xxx文件夾帅涂,在文件夾中议薪,你會(huì)看到有androidManifest.xml文件還有res資源文件夾,這時(shí)候的文件都可以清晰的看到源碼了媳友。還有一個(gè)重要的文件夾smali斯议,我們破解就是去修改這個(gè)文件夾中的內(nèi)容。
4.2醇锚、開始修改資源(只介紹簡(jiǎn)單的幾種):

  • 如果要修改包名(防止與原文件發(fā)生簽名沖突)哼御,先修改123_old文件夾里的AndroidManifest.xml文件:package參數(shù)如“com.wwq.project”修改為“com.wwq.test”,同時(shí)修改activity對(duì)應(yīng)的Activity聲明所指向的package焊唬; 再修改smali文件夾里的文件夾名和文件:對(duì)應(yīng)包名將project文件夾名改為test, 使用UltraEdit工具恋昼,選擇在文件中替換,在設(shè)置里面勾選搜索子目錄赶促,將查找和替換指向smail文件夾液肌,點(diǎn)擊開始便可以將所有smail文件夾下的所有文件進(jìn)行替換。
  • 如果要修改代碼邏輯鸥滨,則需要找到需要修改的文件smali文件夾下對(duì)應(yīng)的smali文件(主要是簡(jiǎn)單的直接修改嗦哆,復(fù)雜的方法需要另談)(另外需要了解一點(diǎn)smali文件的基本語(yǔ)法)。
  • 如果需要修改apk的名字婿滓,則需要到res文件夾下找到\values\strings.xml文件老速,修改如下部分即可修改名字:

<string name="app_name">Joe</string>

  • 如果需要修改apk的圖片,則需要進(jìn)入res文件夾下找到\mipmap-hdpi-v4\下的圖片文件(可能位置會(huì)有不同凸主,需要自己再res文件夾下找一會(huì))橘券。
  • 如果需要改變apk的權(quán)限(比如獲取通訊錄,發(fā)信息什么權(quán)限的)卿吐,依然是在123_old文件夾里的androidManifest.xml文件里面注釋或者刪除如下代碼部分(以獲取通訊錄為例):

<uses-permission android:name="android.permission.READ_CONTACTS"/>

4.3约郁、打包簽名(沒有簽名的話,則需要使用jdk中的keytool.exe生成自己的生成Keystore):

4.3.1但两、重新打包:
在apktool的目錄下使用

./apktool.bat b 123_old

就會(huì)在123_old目錄下生成兩個(gè)文件夾:build 文件夾里面是一些中間文件(classes.dex等內(nèi)容),dist 文件夾里面存放著重新打包出來的apk文件供置。
4.3.2谨湘、生成簽名
先cd到apktool的目錄下使用:

keytool -genkey -alias demo1.keystore -keyalg RSA -validity 40000 -keystore demo1.keystore
說明:
-genkey 產(chǎn)生密鑰
-alias demo.keystore 別名 demo.keystore
-keyalg RSA 使用RSA算法對(duì)簽名加密
-validity 40000 有效期限4000天
-keystore demo.keystore
執(zhí)行命令后會(huì)出現(xiàn)下面步驟:
輸入keystore密碼:[密碼不顯示,輸入密碼按回車即可開
再次輸入新密碼:[密碼 不顯示芥丧,輸入密碼按回車即可開
您的名字與姓氏是什么紧阔?
[Unknown]: **www **
您的組織單位名稱是什么?
[Unknown]: http://www.eqwe.com
您的組織名稱是什么续担?
[Unknown]: http://www.eqwewq.com
您的組織名稱是什么擅耽?
[Unknown]: http://www.eqwewq.com
您所在的城市或區(qū)域名稱是什么?
[Unknown]: New York
您所在的州或省份名稱是什么物遇?
[Unknown]: New York
該單位的兩字母國(guó)家代碼是什么
[Unknown]: CN
CN=abc, OU=www.eqwewq.com, O=www.eqwewq.com, L=New York, ST
=New York, C=CN 正確嗎乖仇?
[否]: Y
輸入<abc.keystore>的主密碼
(如果和 keystore 密碼相同憾儒,按回車)。

成功后將會(huì)在apktool的目錄 下產(chǎn)生一個(gè)名為demo1.keystore的文件乃沙。
4.3.3起趾、重新簽名
將生成的demo1.keystore剪切到123_old生成的dist文件夾下,并cd到此目錄下警儒,使用以下命令:

jarsigner -verbose -keystore demo1.keystore -signedjar 123_new.apk 123.apk demo1.keystore

完成舊apk的反編譯和新版apk的再發(fā)布训裆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蜀铲,隨后出現(xiàn)的幾起案子边琉,更是在濱河造成了極大的恐慌,老刑警劉巖记劝,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件变姨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡隆夯,警方通過查閱死者的電腦和手機(jī)钳恕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹄衷,“玉大人忧额,你說我怎么就攤上這事±⒖冢” “怎么了睦番?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)耍属。 經(jīng)常有香客問我托嚣,道長(zhǎng),這世上最難降的妖魔是什么厚骗? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任示启,我火速辦了婚禮,結(jié)果婚禮上领舰,老公的妹妹穿的比我還像新娘夫嗓。我一直安慰自己,他們只是感情好冲秽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布舍咖。 她就那樣靜靜地躺著,像睡著了一般锉桑。 火紅的嫁衣襯著肌膚如雪排霉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天民轴,我揣著相機(jī)與錄音攻柠,去河邊找鬼球订。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辙诞,可吹牛的內(nèi)容都是我干的辙售。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼飞涂,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼旦部!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起较店,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤士八,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后梁呈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體婚度,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年官卡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝗茁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寻咒,死狀恐怖哮翘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毛秘,我是刑警寧澤饭寺,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站叫挟,受9級(jí)特大地震影響艰匙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抹恳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一员凝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奋献,春花似錦绊序、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抚官。三九已至扬跋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凌节,已是汗流浹背钦听。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工洒试, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人朴上。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓垒棋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親痪宰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叼架,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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