日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

非常詳細的android so庫逆向調試教程

瀏覽:127日期:2023-12-08 18:36:58
目錄前言應用環境準備創建默認的native application修改stringFromJNI方法,便于調試修改androidManifest文件修改CMakeLists.txt編譯運行,獲取sohook環境準備使用ida pro進行hookadb與手機的準備ida pro的工作準備使用ida pro進行調試進行調試結束前言

好久沒有寫博客了,最近的精力全放在逆向上面。目前也只是略懂皮毛。

android java層的逆向比較簡單,主要就是脫殼 、反編譯源碼,通過xposed進行hook。

接下來介紹一下,如何去調試hook native層的源碼,也就是hook so文件。

應用環境準備

首先,為了方便學習,一上來就hook第三方app難度極大,因此我們自己來創建一個native的項目,自己來hook自己的項目作為學習的練手點。

創建默認的native application

打開as,選擇File -> new project -> naive c++ 創建包含c++的原生工程。

非常詳細的android so庫逆向調試教程

默認的native工程,幫我們實現了stringFromJNI方法,那我們就來探索如何hook這個stringFromJNI,并修改他的值。

修改stringFromJNI方法,便于調試

as默認實現的stringFromJNI只有在Activity onCreate的時候調用,為了便于調試,我們增加一個點擊事件,每次點擊重新調用,并且返回一個隨機的值。

java代碼增加如下方法:

binding.sampleText.setOnClickListener {Log.e('MainActivity', 'stringFromJNI')binding.sampleText.text = stringFromJNI()}

修改native-lib.cpp代碼:

#include <jni.h>#include <string>using namespace std;int max1(int num1, int num2);#define random(x) rand()%(x)extern 'C' JNIEXPORT jstring JNICALLJava_com_noober_naticeapplication_MainActivity_stringFromJNI(JNIEnv* env,jobject /* this */) { int result = max1(random(100), random(100)); string hello = 'Hello from C++'; string hello2 = hello.append(to_string(result)); return env->NewStringUTF(hello2.c_str());}int max1(int num1, int num2){ // 局部變量聲明 int result; if (num1 > num2)result = num1; elseresult = num2; return result;}

修改的代碼很簡單,相信不會 c++ 的同學也看得懂,就是隨機輸入兩個數,取其中小的那一位拼接在“Hello from C++”后面,并返回。主要目的是讓我們每次點擊的時候,返回內容可以動態。

修改androidManifest文件

在application中增加下面兩行代碼:

android:extractNativeLibs='true' android:debuggable='true'

android:debuggable: 讓我們可以對apk進行調試,如果是第三方已經打包好了app,我們需要對其manifest文件進行修改,增加這行代碼,然后進行重打包,否則無法進行so的調試。

android:extractNativeLibs: 很多人在進行調試的時候發現ida pro一切正常,但是卻一直沒有加載我們的libnative-lib.so, 是因為缺少這行代碼。如果不加,可能會使so直接自身的base.apk進行加載,導致ida pro無法識別。

修改CMakeLists.txt

在cmakelists中增加下面代碼。so文件生成路徑,這樣編譯之后就可以在main-cpp-jniLibs目錄下找到生產的so文件。

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/jniLibs/${ANDROID_ABI})編譯運行,獲取so

上述工作做好之后,直接編譯運行,同時會生成4個so文件,我們取手機運行時對應使用的那個so進行hook。我這邊使用的是arm64-v8a目錄下的libnative-lib.so。

非常詳細的android so庫逆向調試教程

hook環境準備 系統:windows 10 64位 工具ida pro 7.5 java8環境 android sdk tools和adb工具 arm64-v8a目錄下的libnative-lib.so android 真機使用ida pro進行hookadb與手機的準備

1、首先找到ida pro的dbgsrv文件夾,里面有很多server文件

非常詳細的android so庫逆向調試教程

64代表的含義是64位,否則就是32位,我們根據我們需要調試的so的指令集進行選擇。因為我這邊調試的是arm64-v8a,這里我們就選擇android_server64的文件。連接真機后,打開cmd,輸入以下指令:

adb push 'MacHomeDesktopIDA PRO 7.5 (x86, x64, ARM, ARM64)dbgsrvandroid_server64' /data/local/tmp

2、如果是真機,則需要輸入su,模擬器不需要

#真機 su

3、修改權限

chmod 777 /data/local/tmp/android_server64

4、運行

/data/local/tmp/android_server64

非常詳細的android so庫逆向調試教程

5、新打開一個cmd,在本地執行adb 做端口轉發

adb forward tcp:23946 tcp:23946ida pro的工作準備

1、打開ida pro,因為我們的so是64位的,所以打開ida64.exe。點擊new,選擇libnative-lib.so。

2、選擇debugger-select debugger

非常詳細的android so庫逆向調試教程

3、選擇Remote ARM Linux/Android debugger

非常詳細的android so庫逆向調試教程

4、點擊debugger-Debugger options

勾選Suspend on process entry point ,也就是在斷點處進行掛起暫停

非常詳細的android so庫逆向調試教程

5、點擊debugger-Process options

填寫hostname為localhost

非常詳細的android so庫逆向調試教程

6、找到exports標簽,ctrl+f,搜索java關鍵字,找到我們要hook的函數。

非常詳細的android so庫逆向調試教程

7、雙擊打開,按F5,進行反匯編操作。這樣就可以看到反匯編之后的c ++代碼了。然后我們隨便加上斷點進行調試。

非常詳細的android so庫逆向調試教程

8、執行adb命令,進入調試狀態,也就是打開我們要調試的app的啟動activity,我這邊如下:

adb shell am start -D -n com.noober.naticeapplication/com.noober.naticeapplication.MainActivity

9、點擊debugger-Attach to process

選擇我們需要調試的進程。

非常詳細的android so庫逆向調試教程

10、adb 執行如下命令,關聯運行的so與本地要調試的so。

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

11、此時ida卡在libc.so的位置,點擊繼續執行,彈出如下界面,關聯so到本地,選擇same。如果沒有彈出則需要通過快捷鍵ctrl+s, 打開所有已經加載的so,找到我們的libnative-lib.so

非常詳細的android so庫逆向調試教程

12、此時就會自動進入斷點。

非常詳細的android so庫逆向調試教程

使用ida pro進行調試

ida pro 常用調試快捷鍵

F2下斷點 F7單步步入 F8單步步過 F9執行到下個斷點 G調到函數地址 Debugger-debugger windows-locals 查看變量進行調試

簡單分析反匯編代碼,我們發現返回值是v5,通過f8,執行到return的上一行。打開locals, 獲取所有變量的值。

非常詳細的android so庫逆向調試教程

復制bytes的地址0x7FFE2CDEB9LL,切換到代碼界面,輸入快捷鍵g,輸入地址跳轉。這樣我們便從內存中得到了數據結果,可以看出本次返回的值就是'Hello from c++89'

非常詳細的android so庫逆向調試教程

當然我們也可以在locals中直接修改值,這樣就達到了我們hook so動態修改數據的目的。

結束

以上就是所有文章內容,主要是為了給沒有接觸過so調試的同學學習,以及自己記錄。關于如何去進一步so hook,會在后面的研究后繼續分享。

到此這篇關于android so庫逆向調試的文章就介紹到這了,更多相關android so庫逆向調試內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品网址| 国产精品va| 国产精品宾馆| 精品国产a一区二区三区v免费| 国产精品啊啊啊| 中文在线资源| 999国产精品999久久久久久| 久久国产主播| 噜噜噜躁狠狠躁狠狠精品视频| 日韩一级网站| 日韩国产欧美三级| 青青草精品视频| 国产精品久久久久久妇女| 久久精品999| 国产第一亚洲| 91精品成人| 深夜福利视频一区二区| 亚洲高清久久| 日韩和欧美一区二区| 精品丝袜久久| 久久婷婷丁香| 日韩精品国产欧美| 久久99视频| 激情久久五月| 免费精品视频最新在线| 日韩二区在线观看| 欧美精品资源| 蜜桃视频第一区免费观看| 久久精品99国产精品日本| 国产精品美女在线观看直播| 天堂а√在线最新版中文在线| 亚洲精品一区二区在线看| 国产精品探花在线观看| 亚洲国产日韩欧美在线| 国产午夜精品一区在线观看| 日韩在线观看不卡| 日本中文字幕不卡| 国产日韩欧美三区| 亚洲精品91| 亚洲欧洲美洲av| 欧美一区=区三区| 性色av一区二区怡红| 日韩啪啪电影网| 麻豆91精品| 国内精品麻豆美女在线播放视频| 欧美午夜精彩| 国产欧美日韩一级| 黄色日韩在线| 久久青草久久| 水蜜桃久久夜色精品一区| 亚洲精品网址| 亚洲激情中文| 婷婷激情图片久久| 日韩精品电影| 国产私拍福利精品视频二区| 91亚洲人成网污www| 亚洲欧美日本日韩| 给我免费播放日韩视频| 亚洲一区二区成人| 久久久天天操| 久久精品午夜| 极品日韩av| 亚洲国产欧美日本视频| 精品久久不卡| 国产suv精品一区二区四区视频 | 国产精品久久| 日本成人在线一区| 日韩午夜一区| 亚洲先锋成人| 亚洲精品电影| 国产美女精品| 男人的天堂久久精品| 久久一区二区三区喷水| 国产精品字幕| 日韩一区二区久久| 日韩精品一区二区三区中文在线| 视频一区视频二区中文字幕| 中文字幕一区二区三区四区久久| 日本一不卡视频| 老牛国内精品亚洲成av人片| 国产一区二区三区四区大秀| 成人小电影网站| 亚洲午夜天堂| 免费久久精品视频| 免费在线看一区| 国产精品九九| 国产精品九九| 欧美不卡高清| 蜜臀久久精品| 日本不卡免费高清视频在线| 激情自拍一区| 欧美精品三级在线| 黄色aa久久| 免费成人性网站| 九九九精品视频| 91久久国产| 国产精品久av福利在线观看| 亚洲网站视频| 久久国产免费看| 香蕉视频亚洲一级| 亚洲精品自拍| 久久久精品久久久久久96| 日本在线一区二区三区| 久久97视频| 久久高清免费观看| 中文字幕成在线观看| 欧美日韩一视频区二区| 久久精品欧美一区| 久久精品女人| 91九色综合| 蜜臀av亚洲一区中文字幕| 欧美日韩视频网站| 精品国产精品国产偷麻豆| 日韩高清不卡在线| 国产精品毛片一区二区三区| 丝袜诱惑一区二区| 91欧美在线| av资源中文在线天堂| 91欧美精品| 日韩欧美在线精品| 亚洲人成在线影院| 久久亚洲电影| 人人精品人人爱| 亚洲综合专区| 亚洲精品国模| 91大神在线观看线路一区| 日韩av一区二区三区四区| 中文字幕日韩亚洲| 日本不卡一区二区| 欧美日本精品| 美女毛片一区二区三区四区最新中文字幕亚洲| 亚洲精品国产日韩| 国产欧美欧美| 国产区精品区| 精品理论电影在线| se01亚洲视频 | 欧美亚洲在线日韩| 亚洲国产综合在线看不卡| 婷婷精品在线| 日韩不卡视频在线观看| 男女性色大片免费观看一区二区 | 美女国产一区| 亚洲精品系列| 欧美国产极品| 亚洲2区在线| 国产乱码精品一区二区三区四区| 国产午夜久久av| 国产精品chinese| 久久一区二区三区电影| 亚洲精品动态| 国产中文在线播放| 国产视频一区三区| 国产精品中文| 狠狠色综合网| 日韩av资源网| 亚洲精品国产嫩草在线观看| 国产高清一区二区| 国产精品色在线网站| 最近国产精品视频| 麻豆一区二区三| 亚洲综合小说| 尤物tv在线精品| 国产精品欧美日韩一区| 精品在线播放| 亚洲一区免费| 成人在线免费观看91| 亚洲aa在线| se01亚洲视频 | 九色porny丨国产首页在线| 蜜桃免费网站一区二区三区| 超碰99在线| 国产伦精品一区二区三区视频 | 欧美激情综合| 久久久精品国产**网站| 中文在线一区| 欧美激情国产在线| 欧美日韩亚洲一区三区| 欧美另类综合| 日韩在线观看| 精品国产亚洲日本| 91麻豆精品| 日欧美一区二区| 美女国产精品| 久久蜜桃av| 中文在线а√在线8| 精品72久久久久中文字幕| 亚洲一区欧美二区| 成人精品视频| 九九久久国产| 鲁大师精品99久久久| 日本午夜免费一区二区| 亚洲网址在线观看| 国产日韩专区| 性欧美长视频| 日韩专区欧美专区| 日韩一区二区免费看| 在线一区免费观看| 性色av一区二区怡红| 在线看片不卡| 精品91久久久久|