中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-26 14:02:59 來源:億速云 閱讀:374 作者:柒染 欄目:移動開發

本篇文章給大家分享的是有關Android App常見逆向工具和使用技巧是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

前言

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

常用工具介紹

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

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

代碼顯示效果:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

發現該方法被識別出了兩個入口點,從而導致很多代碼未被識別到,找到***個分支的結束地方

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

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

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

而動態注冊方法較靜態注冊在尋找關鍵點時稍加麻煩一點,而動態注冊勢必會在jni_Onload中去處理這些函數,以某so為例,F5后代碼如下

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

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

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

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

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

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

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

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

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

此處將0改為4即可

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

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

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

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

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

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

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

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

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

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

代碼就1句話,其中p0是需要打印的寄存器,在靜態方法中p0代表是是第一個入參,在逆向工程上,代碼插樁可以很好的幫助我們進行數據的分析,這些插件我都發布到了網絡上,都可以下載到。

以上就是Android App常見逆向工具和使用技巧是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭州市| 凤凰县| 屯门区| 金山区| 靖西县| 玛沁县| 登封市| 巧家县| 盐山县| 城固县| 长泰县| 财经| 黎城县| 江陵县| 介休市| 津市市| 镇赉县| 会理县| 陇西县| 安徽省| 通城县| 鄂托克前旗| 定日县| 习水县| 三台县| 石城县| 长宁区| 安国市| 伊通| 汶川县| 定南县| 德清县| 中阳县| 乌鲁木齐市| 伊宁市| 彭山县| 永年县| 龙陵县| 阿荣旗| 鱼台县| 麻江县|