自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android App常見逆向工具和使用技巧

移動開發(fā) Android
本文將主要介紹個人在Android App逆向分析時常用到的一些工具和小技巧。說起Android 逆向,就不得不提到常用的逆向分析神器了,IDA,jadx,Android Killer,JEB。

前言

本文將主要介紹個人在Android App逆向分析時常用到的一些工具和小技巧。說起Android 逆向,就不得不提到常用的逆向分析神器了,IDA,jadx,Android Killer,JEB。

常用工具介紹

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

代碼顯示效果:

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

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

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

接下來需要讓JEB枚舉所有方法

 

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

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

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

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

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

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

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

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

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

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

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

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

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

此處將0改為4即可

此時每條指令對應(yīng)的機器碼已經(jīng)顯示出來,可以看到readStatus是個arm指令,修改方法很簡單,常見的nop方法可以使用全0替換機器碼

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

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

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

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

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

總結(jié)

本文主要介紹了Android App逆向時常用的工具和他們的一些使用小技巧,但逆向單靠一樣工具和常見的技巧往往還是不夠的,需要大家的嘗試和耐心以及自身對逆向的鉆研精神。

責(zé)任編輯:未麗燕 來源: 360安全播報
相關(guān)推薦

2010-08-31 16:01:18

CSS

2021-05-21 12:52:47

網(wǎng)絡(luò)安全Android App虛擬機

2020-08-24 14:21:27

app爬蟲Python

2021-11-02 10:40:51

內(nèi)網(wǎng)穿透代理工具Linux

2013-12-26 10:58:11

wifi共享精靈問題wifi

2010-02-23 16:59:55

CentOS wget

2013-12-30 16:27:43

Windows畫圖工具

2010-01-25 16:08:37

Android ADB

2016-08-31 09:56:58

云計算

2016-01-05 15:20:02

Reverse逆向工具逆向工程

2012-08-17 09:38:55

日志管理syslogEvtSys

2017-04-27 20:30:33

Android動畫技巧

2022-09-26 00:00:01

java代碼開發(fā)

2010-01-25 10:46:29

Android Spi

2010-01-28 13:12:47

Android使用An

2014-10-28 16:11:37

AndroidApp性能優(yōu)化

2024-01-24 13:22:40

Python調(diào)試工具技巧

2023-03-01 15:39:50

JavaScrip對象屬性ES6

2023-05-28 23:49:38

JavaScrip開發(fā)

2011-05-30 14:36:06

Android 在線開發(fā) App Invent
點贊
收藏

51CTO技術(shù)棧公眾號