前言#
首先聲明一點,破解他人軟件是違法行為,本篇文章僅供技術(shù)交流!
應(yīng)朋友之邀,寫一篇關(guān)于android反編譯入門級相關(guān)的技術(shù)知識。俗話說的好,師傅領(lǐng)進門,修行靠個人。為什么是入門級,因為有些技術(shù)知識需要自己的體會和領(lǐng)悟,才會更好的去消化。本文針對破解的軟件,是無加固,無加殼。
主要內(nèi)容#
1、 配置Apktool環(huán)境。
2、通過軟件,apk查看其中的源碼。
3、實戰(zhàn)破解Apk軟件,修改其中內(nèi)容,并重新打包。
4、Apk軟件簽名。
環(huán)境搭建#
到Apktool的官網(wǎng)去下載最新工具,能看懂英文最好,很容易就完成配置。
Apktool的官網(wǎng): https://ibotpeaches.github.io/Apktool/install/

本人用的是Mac OS,其他操作系統(tǒng)按照步驟完成即可,所以按照上面六個步驟來即可。
- 第一步,下載腳本;
- 第二三步,下載最新jar包,并且重命名為apktool.jar;
- 第四五步,把腳本和jar移到指定目錄,并且指定權(quán)限
chmod +x apktool
chmod +x apktool.jar - 第六步,測試是否成功,終端輸入apktool,成功界面如下。

查看源碼#
通過查看apk本身的源碼,會更加方便去理解其中的實現(xiàn)原理,方便篡改其中的內(nèi)容,如果apk軟件本身混淆過,里面類名及方法閱讀性很差,這個要做好心理準備。主要通過dex2jar工具,將apk包中的dex轉(zhuǎn)換中可以用工具閱讀的jar包。
dex2jar的官網(wǎng): https://sourceforge.net/p/dex2jar/wiki/UserGuide/

- 很簡單,一步一步來,裝了JDK7的跳過,沒裝的自行補腦。第二步去網(wǎng)站https://sourceforge.net/projects/dex2jar/files/ 下載最新的dex2jar工具包。
- 最后下載一個jd-gui的jar包閱讀工具。
- 這次我破解的包是我上次寫的一個demo,https://github.com/yangxixi88/ProcessSuccessView 可以將其打包成apk簽名包。
解壓dex2jar包以后,根據(jù)用戶向?qū)Ю锩娴拿?,?zhí)行即可,這里注意一點,注意解壓的路徑,我的是這樣子的。

執(zhí)行成功之后會在相應(yīng)目錄出現(xiàn)一個jar包,用jd-gui工具打開即可。如果執(zhí)行命令的時候碰到權(quán)限問題,可以參這個方法解決。http://www.itdecent.cn/p/62dbdd67df90

破解軟件#
可以查看源碼之后,再修改相關(guān)代碼,就很方便,對照著來就是?,F(xiàn)在apktool工具就派上用場了。命令主要用到兩個如下:
apktool d xx.apk 反編譯apk
apktool b xx 往回編譯apk,會在xx目錄下面生成dist目錄,該目錄下面有未簽名的apk


smali是源碼編譯后后的地方,res是apk的資源文件。一般換皮換圖標(biāo)可以到res里面去完成,漢化等修改配置文件的也可以從里面去修改。而smali文件通常是用來修改代碼的地方。
關(guān)于smali語法,可以參考http://blog.csdn.net/chenrunhua/article/details/41250613
先看看軟件運行成功之后的界面,里面有個“手機很干凈”的詞語,我們想修改怎么辦,或者去掉,先看源碼。


分析源碼發(fā)現(xiàn),是動畫結(jié)束完畢之后,設(shè)置文字信息可見,如果想要不可見,有兩種方式,一種刪掉那行代碼,讓其不設(shè)置可見,或者修改setVisibility參數(shù),讓其永遠不可見。

刪掉紅色里面的方塊代碼即可,要刪的全,.line23范圍內(nèi)都刪除,否則會反編譯回去會報錯。

可以通過關(guān)鍵詞搜索,或者分析會找到MainActivity的布局文件,布局中發(fā)現(xiàn)有“手機很干凈”的詞語,這個時候,只需要改掉關(guān)鍵詞,或者變?yōu)榭?,也可以看不見。這里我們選擇刪除代碼,往回編譯。


目前這個apk是安裝不了的,因為沒有簽名
簽名APK#
給未簽名的apk簽名,先制作一個簽名證書,然后用jarsigner給apk簽名,可以參考這篇文章,這個比較靠譜,親測是沒有問題的http://www.itdecent.cn/p/e9a685c88258
按照文章里面的方式,生成簽名,然后再給apk簽名,簽名之后會生成一個processsuccess_sign.apk,這個時候,這個apk具有簽名,便可以安裝,可以看看運行之后的效果。


結(jié)語#
這篇文件是很粗淺的入門分享,想要更加細節(jié)的了解其中的技術(shù)點,需要花費點心思。目前的打包黨就是利用這種技術(shù),實現(xiàn)去廣告,添加廣告的形式賺錢廣告費,有組織有預(yù)謀的而且還賺不少,看看一篇文章,(月入150萬?揭秘APP"二次打包"的灰色利益鏈,http://tech.163.com/14/1211/01/AD5A0SIL000915BF.html)
在下不才,對去廣告這塊有一點的研究,以后時間會分析一下心得。
到這里,大致流程就介紹完了。有什么不足的,歡迎指出。
歡迎在下方評論和喜歡,謝謝,轉(zhuǎn)載請說明出處。