成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:99日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产字幕视频一区二区| 国产精品久久久久久模特| 黄色欧美日韩| 久久久精品天堂| 风流少妇一区二区| 欧美日韩高清一区二区不卡| 日本伊人精品一区二区三区观看方式| 在线综合亚洲| 亚洲欧美电影院| 日韩网站在线| 亚洲乱码中文字幕| 一本色道久久综合| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美综合亚洲图片综合区| 亚洲国产另类av| 国产伦精品一区二区三区| 亚洲综合小说图片| 国产精品免费看| 亚洲成人手机在线| 男人的天堂亚洲在线| 亚洲制服丝袜一区| 香蕉成人久久| 亚洲成人一区在线| 久久最新视频| 免费观看久久久4p| 欧美视频第二页| 久久99国产精品麻豆| 欧美乱熟臀69xxxxxx| 国产成人综合网| 日韩欧美一区在线| 国产一区二区中文字幕| 日韩一区二区麻豆国产| 国产69精品久久久久毛片| 日韩一级片在线观看| jvid福利写真一区二区三区| 国产午夜精品一区二区三区四区| 欧美日韩喷水| 亚洲精品日产精品乱码不卡| 久久成人国产| 乱一区二区av| 欧美电影免费观看完整版| 成人午夜电影小说| 国产精品三级在线观看| 在线日韩视频| 五月天网站亚洲| 精品视频一区三区九区| 国产成人在线观看免费网站| 欧美成人一区二区| 欧美激情视频一区二区三区在线播放 | 粉嫩av一区二区三区在线播放| 精品国产免费一区二区三区四区| 91浏览器入口在线观看| 成人欧美一区二区三区视频网页 | 欧美一区二区免费观在线| 懂色av噜噜一区二区三区av| 国产三级欧美三级| 99re66热这里只有精品4| 奇米精品一区二区三区四区| 欧美性视频一区二区三区| 丰满亚洲少妇av| 国产精品美女www爽爽爽| 国产精品免费区二区三区观看| 麻豆精品一区二区| 精品久久久久久久人人人人传媒 | 欧美xxxxx裸体时装秀| 欧美久久一区| 亚洲一区视频在线| 在线看日本不卡| 国产成人综合在线观看| 中文字幕免费不卡| 国产精品日韩| 欧美亚男人的天堂| 欧美激情麻豆| 免费一区二区视频| 精品久久一二三区| 国产欧美日韩亚洲| 韩国女主播一区| 国产精品嫩草99a| 91国偷自产一区二区使用方法| 国产成人免费xxxxxxxx| 国产精品天天看| 色综合久久天天| 成人av手机在线观看| 亚洲永久免费视频| 日韩欧美一区二区三区在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产精品久久久久9999吃药| 久久天堂精品| www.日韩精品| 亚洲国产欧美另类丝袜| 7777精品伊人久久久大香线蕉的 | 久久岛国电影| 国产成人午夜视频| 亚洲色图在线播放| 欧美美女网站色| 国产一区美女| 久久国产精品色婷婷| 欧美国产成人在线| 在线观看成人小视频| 欧美激情亚洲| 老司机精品视频在线| 亚洲欧洲日产国码二区| 欧美老年两性高潮| 亚洲国产专区| 成人一区二区三区视频在线观看 | 一区在线中文字幕| 91精品在线观看入口| 99综合精品| 风间由美中文字幕在线看视频国产欧美| 亚洲女人****多毛耸耸8| 欧美一级欧美三级| 免费看的黄色欧美网站| 欧美一区1区三区3区公司| 五月综合激情日本mⅴ| 国产精品视频麻豆| 欧美精品久久天天躁| 亚洲三级免费| 99久久久久久| 国产成a人亚洲精| 日韩高清不卡在线| 中文字幕一区二区三区四区不卡 | 国产成人免费视| 亚洲一区二区三区在线播放| 久久亚洲二区三区| 欧美亚洲国产一卡| 精品国精品自拍自在线| 在线观看av一区二区| 国产精品久久久对白| 欧美女激情福利| 国产盗摄视频一区二区三区| 日韩精品一级二级| 亚洲欧美综合色| 久久一区二区三区四区| 欧美日韩一区精品| 美女视频黄免费的久久 | 国产精品久久久久一区| 欧美一区二区性放荡片| 欧美成人综合| 国内精品在线播放| 亚洲欧美日韩在线不卡| 精品国产电影一区二区| 精品婷婷伊人一区三区三| 亚洲在线一区| 亚洲精品日本| 99精品欧美一区| 国产精品综合二区| 强制捆绑调教一区二区| 亚洲一级电影视频| 亚洲人成亚洲人成在线观看图片| 精品电影一区二区三区| 777色狠狠一区二区三区| 欧美在线一区二区| 久久国产精品高清| 国产欧美一区二区色老头| 国产一区日韩欧美| 91视频一区二区三区| 国产一区二区h| 麻豆极品一区二区三区| 日韩电影在线观看电影| 一区二区三区精品久久久| 国产精品伦一区| 久久精品无码一区二区三区| 日韩一区二区视频在线观看| 色噜噜狠狠一区二区三区果冻| 国产一区二区久久久| 亚洲区一区二区三区| 欧美日韩国产欧| 国产精品swag| 国产在线日韩| 尤妮丝一区二区裸体视频| 含羞草久久爱69一区| 国内精品自线一区二区三区视频| 久久超级碰视频| 麻豆国产精品一区二区三区| 免费欧美在线视频| 久久精品999| 亚洲一区二区三区美女| 一区二区三区中文字幕精品精品 | 午夜国产一区| 成人福利视频网站| 成人一级片在线观看| 成人黄页毛片网站| 大胆欧美人体老妇| 成人黄色在线视频| 91丨九色丨国产丨porny| 91亚洲午夜精品久久久久久| 97精品久久久午夜一区二区三区| 91视频观看视频| 不卡电影一区二区三区| 99精品欧美一区二区三区综合在线| 不卡视频一二三| 欧美成人国产| 合欧美一区二区三区| 国产精品分类| 亚洲国产专区校园欧美| 国产乱码精品| 久久人人精品| 欧美日韩免费不卡视频一区二区三区| 91麻豆精品国产| 欧美岛国在线观看|