真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

AndroidApp常見(jiàn)逆向工具和使用技巧是什么

本篇文章給大家分享的是有關(guān)Android App常見(jiàn)逆向工具和使用技巧是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),文縣企業(yè)網(wǎng)站建設(shè),文縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,文縣網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,文縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

前言

主要介紹個(gè)人在Android App逆向分析時(shí)常用到的一些工具和小技巧。說(shuō)起Android  逆向,就不得不提到常用的逆向分析神器了,IDA,jadx,Android Killer,JEB。

常用工具介紹

jadx是一款非常不錯(cuò)的apk反編譯工具,可以直接將apk轉(zhuǎn)換成java源碼,代碼還原度高,且支持交叉索引等等,以一款開(kāi)源工具為例,反編譯后結(jié)構(gòu)圖

Android App常見(jiàn)逆向工具和使用技巧是什么

代碼顯示效果:

Android App常見(jiàn)逆向工具和使用技巧是什么

排除混淆的影響外,整體看來(lái)代碼的顯示效果基本是跟原工程一樣的,非常有邏輯感,右鍵還可以查看方法和變量的引用,但是jadx的缺點(diǎn)也很多,速度較慢,且不支持變量,方法重命名等等,在針對(duì)混淆代碼分析時(shí)有些力不從心,這里就推薦另一款工具JEB。

JEB是一款非常不錯(cuò)的Android逆向分析工具,新版的JEB也已經(jīng)支持了app動(dòng)態(tài)調(diào)試,但由于不穩(wěn)定性,暫時(shí)還不推薦使用,本文使用版本1.5,由于大部分人都接觸過(guò)JEB,也知道JEB的常見(jiàn)特性,本文就主要講解JEB的另一個(gè)功能,腳本功能,示例app為RE管理器。反編譯后可以看到:

Android App常見(jiàn)逆向工具和使用技巧是什么

方法中多數(shù)字符串已經(jīng)被轉(zhuǎn)換成了byte數(shù)組,這在逆向分析時(shí)會(huì)比較頭大,為了解決這一問(wèn)題,我們可以嘗試寫(xiě)個(gè)腳本來(lái)還原這些字符串,打開(kāi)idea,新建一個(gè)java工程,導(dǎo)入jeb.jar(該文件在JEB目錄下可以找到),***步,需要知道JEB需要遍歷的方法是什么,這里調(diào)用了new  String方法將byte數(shù)組轉(zhuǎn)換成string,那這里就需要匹配new String這個(gè)方法,如下

Android App常見(jiàn)逆向工具和使用技巧是什么

接下來(lái)需要讓JEB枚舉所有方法

Android App常見(jiàn)逆向工具和使用技巧是什么

這里主要就是利用JEB的插件功能枚舉所有引用到該簽名的方法,好處就是節(jié)省后面匹配替換的時(shí)間,找到關(guān)鍵處后自然就開(kāi)始替換和解密操作了。

Android App常見(jiàn)逆向工具和使用技巧是什么

這里主要就是遍歷和迭代所有方法中的元素,取到元素后首先需要進(jìn)行過(guò)濾,因?yàn)槭莕ew  String,所以需要判斷當(dāng)前類型是否為New,是的話再去匹配簽名值是否跟上面設(shè)置的一致,當(dāng)匹配成功后就可以在元素中取值了,取到值后還需要進(jìn)行相應(yīng)的處理,將類型轉(zhuǎn)換成我們需要的byte數(shù)組,今后再進(jìn)行解密和替換,整體邏輯和實(shí)現(xiàn)并不復(fù)雜,上面的截圖也都做了詳細(xì)的備注,丟張?zhí)幚砗蟮慕貓D:

Android App常見(jiàn)逆向工具和使用技巧是什么

這樣分析起來(lái)就輕松多了,當(dāng)然這里只是簡(jiǎn)單的舉了個(gè)new  String的例子,同樣該腳本稍作修改可以解密如des,aes,base64等加密編碼操作。

當(dāng)然說(shuō)到逆向工程,不得不提的工具當(dāng)然是IDA,作為一個(gè)適應(yīng)多種平臺(tái)的逆向分析工具,在安卓上的使用率也非常高,強(qiáng)大的反匯編功能以及F5轉(zhuǎn)偽C代碼功能都給分析者提供了便捷,下面以某個(gè)CrackeMe演示:

Android App常見(jiàn)逆向工具和使用技巧是什么

常見(jiàn)的native方法有靜態(tài)注冊(cè)和動(dòng)態(tài)注冊(cè)兩種形式,靜態(tài)注冊(cè)均已java開(kāi)頭,以類的路徑命名,所以可以很輕松的找到,雙擊該方法即可來(lái)到匯編代碼處,F(xiàn)5后發(fā)現(xiàn)代碼丟失了很多,如下圖:

Android App常見(jiàn)逆向工具和使用技巧是什么

在匯編代碼狀態(tài)下按下空格鍵即可切換至流程圖,如下:

Android App常見(jiàn)逆向工具和使用技巧是什么

發(fā)現(xiàn)該方法被識(shí)別出了兩個(gè)入口點(diǎn),從而導(dǎo)致很多代碼未被識(shí)別到,找到***個(gè)分支的結(jié)束地方

Android App常見(jiàn)逆向工具和使用技巧是什么

選擇菜單欄的Edit->function->removefunction  tail,之后在修改過(guò)后的地方點(diǎn)擊菜單欄Edit->other->forceBL call 即可,之后再此F5即可正常顯示所有代碼

Android App常見(jiàn)逆向工具和使用技巧是什么

而動(dòng)態(tài)注冊(cè)方法較靜態(tài)注冊(cè)在尋找關(guān)鍵點(diǎn)時(shí)稍加麻煩一點(diǎn),而動(dòng)態(tài)注冊(cè)勢(shì)必會(huì)在jni_Onload中去處理這些函數(shù),以某so為例,F(xiàn)5后代碼如下

Android App常見(jiàn)逆向工具和使用技巧是什么

這里會(huì)看到很多的偏移地址,其實(shí)是指針在jniEnv中的相對(duì)位置,此時(shí)可以通過(guò)導(dǎo)入jni頭文件來(lái)自動(dòng)識(shí)別,在網(wǎng)上可以很容易下載到這個(gè)文件,導(dǎo)入后右鍵Convert  to Struct后代碼如下:

Android App常見(jiàn)逆向工具和使用技巧是什么

這里已經(jīng)看的很清晰了,調(diào)用了RegisterNatives方法注冊(cè)了兩個(gè)方法,off_8004則是記錄了該方法的偏移地址,雙擊進(jìn)入:

Android App常見(jiàn)逆向工具和使用技巧是什么

這里已經(jīng)看到了兩個(gè)方法對(duì)應(yīng)的內(nèi)容,_Z10verifySignP7_JNIENVP8_jobect和_Z13getentyStringv,雙擊即可跳轉(zhuǎn)到該方法中,當(dāng)然這些對(duì)于ida來(lái)說(shuō)根本都是基礎(chǔ)功能,而且新版本的IDA支持直接對(duì)字節(jié)碼進(jìn)行patch,無(wú)需像之前一樣記錄修改地址,使用16進(jìn)制編輯器對(duì)字節(jié)碼進(jìn)行修改,示例如下:

Android App常見(jiàn)逆向工具和使用技巧是什么

在000025C6處我調(diào)用了一個(gè)檢測(cè)當(dāng)前是否處于調(diào)試狀態(tài)的方法,如果程序被調(diào)試器連接上,則會(huì)自動(dòng)崩潰,而readStatus是個(gè)void方法,本身不帶參數(shù)和返回值,思路很簡(jiǎn)單,nop掉該方法再重新打包即可正常調(diào)試,選擇菜單欄上的Options->General

Android App常見(jiàn)逆向工具和使用技巧是什么

此處將0改為4即可

Android App常見(jiàn)逆向工具和使用技巧是什么

此時(shí)每條指令對(duì)應(yīng)的機(jī)器碼已經(jīng)顯示出來(lái),可以看到readStatus是個(gè)arm指令,修改方法很簡(jiǎn)單,常見(jiàn)的nop方法可以使用全0替換機(jī)器碼

Android App常見(jiàn)逆向工具和使用技巧是什么

點(diǎn)擊到修改指令后選擇菜單欄的Edit->patch program->changebyte,修改前4個(gè)字節(jié)為00 00 00  00即可,效果如下:

Android App常見(jiàn)逆向工具和使用技巧是什么

可以看到反調(diào)試方法已經(jīng)被清除掉了,那么如何保存修改后的文件呢,也很簡(jiǎn)單,點(diǎn)擊菜單欄的Edit->patchprogram->Apply  patches to Input  file,直接點(diǎn)擊ok即可,當(dāng)然ida的小技巧還有很多,比如在動(dòng)態(tài)調(diào)試時(shí)改變android_server的默認(rèn)端口即可過(guò)濾掉反調(diào)試對(duì)端口23946的檢測(cè),命令為-p123  ,123為端口號(hào),記得-p和端口號(hào)之間是沒(méi)有空格的。

***要介紹的就是Android Killer了,ak是一款不錯(cuò)的apk反編譯集成工具,有良好的smali顯示效果和編輯功能

Android App常見(jiàn)逆向工具和使用技巧是什么

當(dāng)然作為一個(gè)反編譯工具,這些都是最基本的功能,ak有一項(xiàng)強(qiáng)大的功能是代碼插入,可以對(duì)代碼進(jìn)行稍加的封裝,即可實(shí)現(xiàn)快速插入代碼,比如個(gè)人實(shí)現(xiàn)的log插樁插件,是在開(kāi)源項(xiàng)目LogUtils的基礎(chǔ)上轉(zhuǎn)換成了smali插件,支持一鍵輸出任意基本類型的數(shù)據(jù)以及json,Intent等數(shù)據(jù)類型,使用方式也很簡(jiǎn)單,右鍵選擇插入代碼即可

Android App常見(jiàn)逆向工具和使用技巧是什么

代碼就1句話,其中p0是需要打印的寄存器,在靜態(tài)方法中p0代表是是第一個(gè)入?yún)?,在逆向工程上,代碼插樁可以很好的幫助我們進(jìn)行數(shù)據(jù)的分析,這些插件我都發(fā)布到了網(wǎng)絡(luò)上,都可以下載到。

以上就是Android App常見(jiàn)逆向工具和使用技巧是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前題目:AndroidApp常見(jiàn)逆向工具和使用技巧是什么
分享網(wǎng)址:http://weahome.cn/article/gsddpj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部