Android逆向

今天我們來(lái)說(shuō)一下Android逆向槐脏,這玩意在日常工作中用的比較少,但是作為一個(gè)Android開(kāi)發(fā)者撇寞,還是要學(xué)會(huì)的顿天,比如我們可以破解反編譯別人的APP堂氯,然后進(jìn)行學(xué)習(xí)分析,甚至還可以反編譯后進(jìn)行修改再次打包等等牌废,總之咽白,廣闊天地,大有作為鸟缕!

1晶框、獲取dex文件

工具:解壓縮工具
我們都知道,Android會(huì)把class文件打包成dex文件然后存放于apk中懂从,我們第一步就是要獲取dex文件授段,其實(shí)辦法非常簡(jiǎn)單:將apk安裝包后綴“.apk”更改為“.zip”,然后用解壓縮工具進(jìn)行解壓即可番甩,畢竟apk也是一種壓縮包格式嘛侵贵!

2、資源文件xml破解

工具:AXMLPrinter2.jar
上面解壓縮后缘薛,除了獲取到dex文件外窍育,還有res資源文件夾,里面有布局文件啊宴胧,drawable啊等等漱抓,圖片資源是可以直接查看了,但布局文件和AndroidManifest.xml等xml格式的打開(kāi)后都會(huì)出現(xiàn)亂碼牺汤,我們接下來(lái)以AndroidManifest.xml為例進(jìn)行破解辽旋,AXMLPrinter2.jar和AndroidManifest.xml至于相同目錄下,在當(dāng)前目錄按住shift鍵點(diǎn)擊鼠標(biāo)右鍵檐迟,選擇“在此處打開(kāi)命令窗口”(win7系統(tǒng))或“在此處打開(kāi)Powershell窗口”(win10系統(tǒng))补胚,輸入命令:

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

注意:“AXMLPrinter2.jar”為可執(zhí)行文件,需要安裝jave運(yùn)行庫(kù)(JRE)才能運(yùn)行追迟。
至此溶其,我們得到了AndroidManifest.txt,可正常打開(kāi)查看敦间。

3瓶逃、將dex文件轉(zhuǎn)換為jar文件

工具:dex2jar-2.0
把上面獲取到的dex文件——classes.dex放到 dex2jar-2.0 根目錄中,然后在 dex2jar-2.0 根目錄下打開(kāi)命令行窗口廓块,然后輸入命令:

d2j-dex2jar.bat classes.dex

執(zhí)行完畢后厢绝,會(huì)生成一個(gè)classes-dex2jar.jar文件

4、查看classes-dex2jar.jar

工具:jd-gui
直接打開(kāi)jd-gui.exe带猴,然后在工具中打開(kāi)上面生成的classes-dex2jar.jar文件昔汉,圖形化界面非常nice,操作也非常簡(jiǎn)單拴清,至此我們直接可以查看class文件了靶病,如下圖所示:

jd-gui工具查看class文件
5会通、反編譯修改

工具:apktool
將待反編譯的apk文件與apktool.bat、apktool.jar置于同一目錄下娄周,在當(dāng)前目錄打開(kāi)命令行窗口涕侈,輸入命令:

apktool.bat d -r test.apk -o test 
說(shuō)明:apktool.bat d -r [待反編譯的apk] -o [反編譯之后存放文件夾] 
反編譯結(jié)果

注意到上面紅色箭頭smali目錄,里面所有文件都是以“.smali”為后綴的煤辨,這是反編譯后的格式裳涛,如果你需要對(duì)其進(jìn)行修改的話,你需要學(xué)一部分smali語(yǔ)法掷酗,這里就不做展開(kāi)了调违。

6、二次打包

工具:apktool泻轰、360簽名工具
上面反編譯后技肩,你做了修改后當(dāng)然希望能夠再次打包成apk文件,我們同樣是用apktool工具浮声,同樣在上面目錄下打開(kāi)命令行窗口虚婿,輸入命令:

 apktool.bat b test
說(shuō)明:test為反編譯后存放的文件夾

這里需要注意一點(diǎn):如果你電腦裝的是360,在執(zhí)行上述命令過(guò)程會(huì)有彈窗詢問(wèn)是否允許操作泳挥,請(qǐng)放行然痊。如果你電腦裝的是騰訊電腦管家,則應(yīng)該是直接被攔截了屉符,在命令行窗口會(huì)報(bào)如下錯(cuò)誤:

Exception in thread “main” brut.androlib.AndrolibException: java.nio.file.FileAlreadyExistsException...

沒(méi)辦法剧浸,請(qǐng)退出騰訊電腦管家方可正常執(zhí)行。
二次打包后會(huì)在上面的test文件中生成一個(gè)dist文件夾矗钟,打包后的apk文件便存放在里面唆香。
當(dāng)然,上面這完成了打包吨艇,我們還需對(duì)其進(jìn)行簽名才可以安裝躬它,為了簡(jiǎn)單方便,可直接使用360簽名工具东涡,這里就不作說(shuō)明了冯吓,基本就是傻瓜式操作了。

7疮跑、360等加固后脫殼

工具:FDex2组贺、Xposed(VirtualXposed)
之所以寫(xiě)這個(gè),那是因?yàn)楣P者之前在去某公司面試前祖娘,想反編譯他們家的APP看看锣披,用上面方法將dex轉(zhuǎn)jar后發(fā)現(xiàn)好幾M的dex文件只生成一個(gè)幾十K的jar包,這明顯就不正常嘛,然后用gui查看jar包雹仿,結(jié)果顯示如下:

360加固后無(wú)法查看

很明顯,這就是360加固的結(jié)果整以!
這不開(kāi)玩笑嗎胧辽?還真被360難住了不成?不應(yīng)該的公黑,一個(gè)字——干 邑商!
首先,說(shuō)一下360加固凡蚜,360提供了相應(yīng)的加固工具人断,直接去官網(wǎng)下了個(gè)360加固工具,然后對(duì)APP進(jìn)行加固(注意設(shè)置簽名)朝蜘,基本上也是傻瓜式操作恶迈,沒(méi)什么好說(shuō)的,加固完效果就跟上面一樣一樣的了谱醇。
接著暇仲,我們看看如何進(jìn)行加固后脫殼?其實(shí)很明顯副渴,就是dex文件的問(wèn)題奈附,我們破解的最終目的是生成脫殼后的dex文件。

在此之前煮剧,我們先簡(jiǎn)單介紹一下Android的 Xposed 框架斥滤,它能讓你使用各種“模塊”,像外掛一樣去修改系統(tǒng)或 APP 來(lái)獲得不同的新功能特性勉盅,不得不說(shuō)因?yàn)檫@東東使得Android比iOS更加好玩O(∩_∩)O~
Xposed 框架很棒佑颇,但問(wèn)題需要設(shè)備進(jìn)行root,我們都知道現(xiàn)在高版本的Android系統(tǒng)要root已經(jīng)沒(méi)那么容易的菇篡,所以出現(xiàn)了VirtualXposed漩符,這個(gè)可牛逼了,可以讓我們?cè)诜莚oot的環(huán)境下運(yùn)行驱还,簡(jiǎn)直棒棒噠嗜暴!

好啦,介紹完畢议蟆,然而筆者這次破解用的不是VirtualXposed闷沥,畢竟不大敢用手機(jī)來(lái)玩,怕到時(shí)變磚就尷尬了咐容,還是用夜神模擬器來(lái)吧舆逃,感謝夜神提供的Xposed框架適配般:https://www.yeshen.com/faqs/Skp9zgXeZ

根據(jù)你自己的夜神版本下載對(duì)于的Xposed進(jìn)行安裝,操作也非常簡(jiǎn)單,按上面教程來(lái)就行路狮。
安裝完畢后虫啥,再安裝FDex2,最后在Xposed模塊中是長(zhǎng)這個(gè)樣子的:

Xposed模塊中的FDex2

然后在上面這個(gè)節(jié)目中打開(kāi)FDex2奄妨,會(huì)出現(xiàn)當(dāng)前手機(jī)的應(yīng)用列表涂籽,然后選中你需要破解的APP(也就是說(shuō)你需把要破解的apk包先裝到模擬器上),如下圖我們選中了“DK播放器”(紅色顯示):

選中破解的APP

然后點(diǎn)擊OK砸抛,我們重新打開(kāi)目標(biāo)APP评雌,這會(huì)你將發(fā)現(xiàn)APP啟動(dòng)很慢,甚至有一種錯(cuò)覺(jué)APP好像卡死了一般直焙,其實(shí)是因?yàn)檫@會(huì)后臺(tái)正在生成脫殼的dex文件景东,所以會(huì)顯得很卡,最終脫殼后的dex文件會(huì)存放在這個(gè)路徑下:/data/data/目標(biāo)APP的包名/:

脫殼后生成的dex文件

如上圖所示奔誓,我們獲取了多個(gè)脫殼后的dex文件斤吐,然后我們按上面的方法便可查看到各個(gè)class文件了。

好啦丝里,目前筆者遇到的關(guān)于Android逆向方面的也就這些了曲初,上面所用到的各個(gè)工具都可在網(wǎng)上搜得到,若有需要的話也可留言提供杯聚!

最后臼婆,溫馨提醒:Android逆向大有可為,但僅限于學(xué)習(xí)幌绍,千萬(wàn)不要用來(lái)干壞事颁褂,否則會(huì)親人淚兩行的!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傀广,一起剝皮案震驚了整個(gè)濱河市颁独,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伪冰,老刑警劉巖誓酒,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贮聂,居然都是意外死亡靠柑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)吓懈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)歼冰,“玉大人,你說(shuō)我怎么就攤上這事耻警「舻眨” “怎么了甸怕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腮恩。 經(jīng)常有香客問(wèn)我梢杭,道長(zhǎng),這世上最難降的妖魔是什么秸滴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任式曲,我火速辦了婚禮,結(jié)果婚禮上缸榛,老公的妹妹穿的比我還像新娘。我一直安慰自己兰伤,他們只是感情好内颗,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著敦腔,像睡著了一般均澳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上符衔,一...
    開(kāi)封第一講書(shū)人閱讀 51,287評(píng)論 1 301
  • 那天找前,我揣著相機(jī)與錄音,去河邊找鬼判族。 笑死躺盛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的形帮。 我是一名探鬼主播槽惫,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辩撑!你這毒婦竟也來(lái)了界斜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤合冀,失蹤者是張志新(化名)和其女友劉穎各薇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體君躺,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡峭判,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晰洒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朝抖。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谍珊,靈堂內(nèi)的尸體忽然破棺而出治宣,到底是詐尸還是另有隱情急侥,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布侮邀,位于F島的核電站坏怪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绊茧。R本人自食惡果不足惜铝宵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望华畏。 院中可真熱鬧鹏秋,春花似錦、人聲如沸亡笑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仑乌。三九已至百拓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晰甚,已是汗流浹背衙传。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厕九,地道東北人蓖捶。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像止剖,于是被迫代替她去往敵國(guó)和親腺阳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

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

  • 1. Android APK文件結(jié)構(gòu)問(wèn)題:Android APK的入口函數(shù)是什么穿香?Android 系統(tǒng)歷史2. S...
    MagicalGuy閱讀 5,019評(píng)論 0 5
  • 分析APK文件 要分析APK文件亭引,首先要了解APK打包過(guò)程 打包資源文件(aapt)檢查Manifest合法性將r...
    黃怡菲閱讀 16,513評(píng)論 1 19
  • 好久沒(méi)有更新博客了。一直在想要更新點(diǎn)什么樣子的干貨皮获。 最近看了一點(diǎn)有關(guān)于逆向的文章焙蚓,感覺(jué)還不錯(cuò)。 對(duì)于“安卓開(kāi)發(fā)沒(méi)...
    楊阿楊阿陽(yáng)閱讀 1,417評(píng)論 2 18
  • 0.寫(xiě)在前面 本文是筆者自學(xué)筆記洒宝,以破解某目標(biāo)apk的方式進(jìn)行學(xué)習(xí)购公,中間輔以原理性知識(shí),方便面試需求雁歌。參考文章的原...
    普通的程序員閱讀 11,604評(píng)論 0 41
  • 微信的賦格 它躲在巴掌大的玻璃里我們天天刷我們上午下午刷我們夜里刷我們刷啊刷最愛(ài)戳開(kāi)那撩人的一點(diǎn)紅它是安裝在身體中...
    俗然閱讀 413評(píng)論 3 8