成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

前言

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

常用工具介紹

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

代碼顯示效果:

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

此處將0改為4即可

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

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

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

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

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

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

總結

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

責任編輯:未麗燕 來源: 360安全播報
相關推薦

2010-08-31 16:01:18

CSS

2021-05-21 12:52:47

網絡安全Android App虛擬機

2020-08-24 14:21:27

app爬蟲Python

2021-11-02 10:40:51

內網穿透代理工具Linux

2013-12-30 16:27:43

Windows畫圖工具

2013-12-26 10:58:11

wifi共享精靈問題wifi

2010-02-23 16:59:55

CentOS wget

2016-08-31 09:56:58

云計算

2010-01-25 16:08:37

Android ADB

2012-08-17 09:38:55

日志管理syslogEvtSys

2016-01-05 15:20:02

Reverse逆向工具逆向工程

2022-09-26 00:00:01

java代碼開發

2017-04-27 20:30:33

Android動畫技巧

2010-01-28 13:12:47

Android使用An

2010-01-25 10:46:29

Android Spi

2014-10-28 16:11:37

AndroidApp性能優化

2024-01-24 13:22:40

Python調試工具技巧

2023-03-01 15:39:50

JavaScrip對象屬性ES6

2023-05-28 23:49:38

JavaScrip開發

2024-03-21 09:58:27

ExtractTypeScript工具類型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99热99| 国产视频日韩 | 狠狠插狠狠操 | 午夜视频网站 | 欧美激情 亚洲 | 精品视频一区二区三区四区 | 99精品在线观看 | 国产一区二区三区色淫影院 | 日本不卡免费新一二三区 | 久久免费精品视频 | 国产精品视频免费播放 | www.三级 | 欧美一区二区三区在线观看视频 | 精品国产一区二区三区av片 | 国产精品午夜电影 | 亚洲精品久久久久中文字幕二区 | 久久大陆 | 亚洲精品久久久一区二区三区 | 毛片久久久 | 黄色大片在线 | 色天天综合 | 国产精品一二三区 | 国产第一页在线观看 | 在线播放国产一区二区三区 | 免费激情 | 日韩三区在线观看 | 91精品国产91久久久久游泳池 | 蜜桃av一区二区三区 | 亚洲免费在线 | 成人一区二区三区在线 | 久久黄色精品视频 | 91资源在线观看 | 九七午夜剧场福利写真 | 欧美八区 | 青青草网站在线观看 | 美女拍拍拍网站 | 久久国产综合 | 国产成人一区二区三区 | 中文一区二区 | 亚洲精品高清视频在线观看 | 日日干夜夜操 |