淺談Android應(yīng)用安全防護(hù)和逆向分析之a(chǎn)pk反編譯
概述
這里是Mac環(huán)境,如果是window環(huán)境的同學(xué),在環(huán)境搭建和工具上可以選擇Window環(huán)境的。先看看需要到的工具;
1、apktool:https://ibotpeaches.github.io/Apktool/install/
2、dex2jar:https://github.com/pxb1988/dex2jar
3、jd-gui:http://jd.benow.ca
注意:工具一定要是當(dāng)前最新版本的,否則很容易出現(xiàn)一些莫名其妙的錯(cuò)誤。
先看一下項(xiàng)目的包結(jié)構(gòu)
然后在簡(jiǎn)單看MainActivity中的內(nèi)容。(這里給出該類的內(nèi)容,只是為了后期和反編譯出來(lái)的內(nèi)容做個(gè)對(duì)比)
好了,下面開始我們的反編譯之路了 。我們一個(gè)一個(gè)工具來(lái)說(shuō)。
安裝apktool
當(dāng)我們下載好apktool.jar以后,可能有的人會(huì)有后綴名,都改為apktool.jar,然后終端輸入命令open /usr/local/bin,然后將apktool和apktool.jar移到/usr/local/bin文件夾下,就OK了,判斷apktool是否安裝成功,可以通過(guò)命令:apktool 來(lái)判斷
如果出現(xiàn)紅色圈的這一大片,則說(shuō)明安裝成功。
注意:dex2jar和jd-gui不需要安裝,直接解壓即可。
使用apktool反編譯
1、首先使用命令:cd xxx/xxx/xxx (xxx/xxx/xxx代表apk的存放路徑)
2、使用命令:apktool d app-debug.apk (app-debug.apk是你的apk名稱)
到這一步以后,會(huì)在你存放apk包的路徑下生成一個(gè)文件夾
進(jìn)入文件夾,你會(huì)發(fā)現(xiàn),有我們項(xiàng)目的資源文件和xml文件。那么代碼呢???沒(méi)有看到,別急
在執(zhí)行一個(gè)命令:apktool b xxx (xxx代表剛剛我們生成的文件夾的名稱)
執(zhí)行完上面的命令以后,可以看到文件夾中多了一個(gè)build文件夾,而這個(gè)build文件夾下的classes.dex文件就是我們最終需要的。
好了,apktool的工作到這里就結(jié)束了,下面我們需要另外兩個(gè)工具dex2jar,jd-gui。
dex2jar
1、使用命令:cd xxx/xxx/xxx (xxx/xxx/xxx代表dex2jar的路徑)
2、使用命令:sh d2j-dex2jar.sh -f xxx/xxx/xxx (xxx/xxx/xxx代表classes.dex的路徑)
然后在dex2jar文件夾下會(huì)生成classes-dex2jar.jar的架包,這個(gè)包,就是我們的Java文件代碼。
那么怎么看代碼呢?jd-gui上場(chǎng)了。打開jd-gui,直接將classes-dex2jar.jar拖進(jìn)來(lái),就可以可以看到了。
對(duì)比一下最前面的MainActivity代碼全部被反編譯出來(lái)了。
很多人就會(huì)說(shuō),你這個(gè)項(xiàng)目是demo,并沒(méi)有做混淆,所以可以反編譯出來(lái)??但是,需要知道的是,如果做了混淆,一樣可以反編譯出來(lái),只不過(guò)說(shuō)里面的很多類名,方法名,變量名等等都是以a,b,c這樣的形式存在,但是這種并不影響能過(guò)看出你的代碼邏輯,只是給閱讀增加了一絲的難度而已。所以,項(xiàng)目做混淆,只是最基礎(chǔ)的一種方式,還有很多很多我們需要考慮的。
以上就是淺談Android應(yīng)用安全防護(hù)和逆向分析之a(chǎn)pk反編譯的詳細(xì)內(nèi)容,更多關(guān)于Android應(yīng)用安全防護(hù)和逆向分析之a(chǎn)pk反編譯的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android實(shí)現(xiàn)EditText中添加和刪除bitmap的方法
這篇文章主要介紹了Android實(shí)現(xiàn)EditText中添加和刪除bitmap的方法,實(shí)例分析了Android中EditText控件的bitmap操作技巧,需要的朋友可以參考下2016-01-01Android多點(diǎn)觸控技術(shù)實(shí)戰(zhàn) 針對(duì)圖片自由縮放和移動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android多點(diǎn)觸控技術(shù)實(shí)戰(zhàn),自由地對(duì)圖片進(jìn)行縮放和移動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android巧用Fragment解耦onActivityResult詳解
這篇文章主要給大家介紹了關(guān)于Android巧用Fragment解耦onActivityResult的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Android實(shí)現(xiàn)儀表盤控件開發(fā)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)儀表盤控件開發(fā),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05Android屏幕旋轉(zhuǎn)之橫屏豎屏切換的實(shí)現(xiàn)
這篇文章主要介紹了Android屏幕旋轉(zhuǎn)之橫屏豎屏切換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Android仿開心消消樂(lè)大樹星星無(wú)限循環(huán)效果
這篇文章主要為大家詳細(xì)介紹了Android仿開心消消樂(lè)大樹星星無(wú)限循環(huán)效果,自定義view實(shí)現(xiàn)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android實(shí)現(xiàn)可點(diǎn)擊的幸運(yùn)大轉(zhuǎn)盤
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可點(diǎn)擊的幸運(yùn)大轉(zhuǎn)盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02