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

您的位置:首頁技術(shù)文章
文章詳情頁

非常詳細(xì)的android so庫逆向調(diào)試教程

瀏覽:125日期:2023-12-08 18:36:58
目錄前言應(yīng)用環(huán)境準(zhǔn)備創(chuàng)建默認(rèn)的native application修改stringFromJNI方法,便于調(diào)試修改androidManifest文件修改CMakeLists.txt編譯運行,獲取sohook環(huán)境準(zhǔn)備使用ida pro進行hookadb與手機的準(zhǔn)備ida pro的工作準(zhǔn)備使用ida pro進行調(diào)試進行調(diào)試結(jié)束前言

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

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

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

應(yīng)用環(huán)境準(zhǔn)備

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

創(chuàng)建默認(rèn)的native application

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

非常詳細(xì)的android so庫逆向調(diào)試教程

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

修改stringFromJNI方法,便于調(diào)試

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

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++ 的同學(xué)也看得懂,就是隨機輸入兩個數(shù),取其中小的那一位拼接在“Hello from C++”后面,并返回。主要目的是讓我們每次點擊的時候,返回內(nèi)容可以動態(tài)。

修改androidManifest文件

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

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

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

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

修改CMakeLists.txt

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

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

上述工作做好之后,直接編譯運行,同時會生成4個so文件,我們?nèi)∈謾C運行時對應(yīng)使用的那個so進行hook。我這邊使用的是arm64-v8a目錄下的libnative-lib.so。

非常詳細(xì)的android so庫逆向調(diào)試教程

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

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

非常詳細(xì)的android so庫逆向調(diào)試教程

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

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

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

#真機 su

3、修改權(quán)限

chmod 777 /data/local/tmp/android_server64

4、運行

/data/local/tmp/android_server64

非常詳細(xì)的android so庫逆向調(diào)試教程

5、新打開一個cmd,在本地執(zhí)行adb 做端口轉(zhuǎn)發(fā)

adb forward tcp:23946 tcp:23946ida pro的工作準(zhǔn)備

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

2、選擇debugger-select debugger

非常詳細(xì)的android so庫逆向調(diào)試教程

3、選擇Remote ARM Linux/Android debugger

非常詳細(xì)的android so庫逆向調(diào)試教程

4、點擊debugger-Debugger options

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

非常詳細(xì)的android so庫逆向調(diào)試教程

5、點擊debugger-Process options

填寫hostname為localhost

非常詳細(xì)的android so庫逆向調(diào)試教程

6、找到exports標(biāo)簽,ctrl+f,搜索java關(guān)鍵字,找到我們要hook的函數(shù)。

非常詳細(xì)的android so庫逆向調(diào)試教程

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

非常詳細(xì)的android so庫逆向調(diào)試教程

8、執(zhí)行adb命令,進入調(diào)試狀態(tài),也就是打開我們要調(diào)試的app的啟動activity,我這邊如下:

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

9、點擊debugger-Attach to process

選擇我們需要調(diào)試的進程。

非常詳細(xì)的android so庫逆向調(diào)試教程

10、adb 執(zhí)行如下命令,關(guān)聯(lián)運行的so與本地要調(diào)試的so。

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

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

非常詳細(xì)的android so庫逆向調(diào)試教程

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

非常詳細(xì)的android so庫逆向調(diào)試教程

使用ida pro進行調(diào)試

ida pro 常用調(diào)試快捷鍵

F2下斷點 F7單步步入 F8單步步過 F9執(zhí)行到下個斷點 G調(diào)到函數(shù)地址 Debugger-debugger windows-locals 查看變量進行調(diào)試

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

非常詳細(xì)的android so庫逆向調(diào)試教程

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

非常詳細(xì)的android so庫逆向調(diào)試教程

當(dāng)然我們也可以在locals中直接修改值,這樣就達(dá)到了我們hook so動態(tài)修改數(shù)據(jù)的目的。

結(jié)束

以上就是所有文章內(nèi)容,主要是為了給沒有接觸過so調(diào)試的同學(xué)學(xué)習(xí),以及自己記錄。關(guān)于如何去進一步so hook,會在后面的研究后繼續(xù)分享。

到此這篇關(guān)于android so庫逆向調(diào)試的文章就介紹到這了,更多相關(guān)android so庫逆向調(diào)試內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
乱人伦精品视频在线观看| 婷婷色综合网| 亚洲精品第一| 欧美va天堂在线| 老牛国内精品亚洲成av人片| 成人av二区| 国产在线看片免费视频在线观看| 日韩高清在线一区| 亚洲激情不卡| 涩涩av在线| 亚洲三级精品| 综合精品一区| 日韩精品久久理论片| 91精品蜜臀一区二区三区在线| 久久国产精品免费精品3p| 日韩三区在线| 在线日韩电影| 97国产精品| 亚洲制服一区| 国产视频一区免费看| 99国产精品一区二区| 欧美国产另类| 久久只有精品| 电影91久久久| 麻豆mv在线观看| 亚洲精品影视| 亚洲综合五月| 欧美激情视频一区二区三区免费| 日韩二区三区四区| 国产精品极品在线观看| 国产日韩欧美三级| 久久99国产精品视频| 亚洲福利免费| 欧美1区2区3| 国产精品中文字幕制服诱惑| 欧美国产另类| 精品久久影院| 亚洲在线久久| 国产日产精品_国产精品毛片| 日韩中文视频| 毛片不卡一区二区| 久久国内精品| 99久久视频| 亚洲资源网站| 国产精品一区二区av日韩在线| 国产日本久久| 欧美~级网站不卡| 丝袜美腿亚洲色图| 精品一区91| 日韩电影免费网站| 综合一区二区三区| 久久麻豆视频| 国产精品成久久久久| 国产精品av一区二区| 国产精品成人一区二区网站软件| 日本精品影院| 久久gogo国模啪啪裸体| 日韩欧美中文在线观看| 日韩大片在线播放| 欧美国产另类| 日本视频一区二区| 中文字幕在线视频久| 日本vs亚洲vs韩国一区三区二区| 日韩.com| 国产精品99久久免费观看| www成人在线视频| 日韩在线卡一卡二| 最新中文字幕在线播放 | 亚洲精品影视| 精品国产一级| 日韩黄色在线观看| 亚洲一区二区小说| 欧美亚洲国产激情| 精品视频国内| 中文字幕亚洲在线观看| 亚洲主播在线| 香蕉视频成人在线观看| 亚洲欧美日本视频在线观看| 99久久夜色精品国产亚洲1000部| 日韩欧美中文字幕在线视频| 视频一区视频二区中文| 国产videos久久| 中文字幕日本一区| 欧美一区二区三区久久| 欧美1级日本1级| 日本中文字幕视频一区| 伊人国产精品| 国产精品毛片| 日韩 欧美一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 亚洲一区免费| 欧美精品一区二区久久| 欧美69视频| 一区二区视频欧美| 亚洲欧洲av| 视频一区中文字幕| 亚洲精品韩国| 国产在线不卡一区二区三区| 精品久久国产一区| 亚洲二区免费| av一区二区高清| 老鸭窝亚洲一区二区三区| 丝袜美腿亚洲一区二区图片| 亚洲影视一区二区三区| 精品不卡一区| 1024精品一区二区三区| 亚洲天堂日韩在线| 精品国产99| 亚洲欧美日韩高清在线| 久久99性xxx老妇胖精品| 成人影视亚洲图片在线| 久久理论电影| 婷婷成人av| 午夜在线一区二区| 国产麻豆久久| 久久福利在线| 国产情侣一区| 日精品一区二区三区| 中文精品电影| 伊人精品在线| 亚洲一级少妇| 精品久久久亚洲| 久久国产免费看| 亚洲毛片一区| 啪啪亚洲精品| 亚洲日产av中文字幕| 午夜精品影院| 水蜜桃久久夜色精品一区的特点| 九九综合九九| 婷婷激情久久| 欧美~级网站不卡| 亚洲成人精品| 99视频在线精品国自产拍免费观看| 香蕉人人精品| 神马久久午夜| 毛片在线网站| 国产精品亚洲一区二区三区在线观看| 精品国产第一福利网站| 久久精品国产www456c0m| 欧美精品黄色| 日韩午夜av在线| 91精品国产91久久久久久黑人| 日韩欧美看国产| 久久影院一区| 婷婷成人综合| 在线成人直播| 亚洲欧美视频一区二区三区| 日韩欧美在线精品| 韩国女主播一区二区三区| 国产精品一区二区99| 欧美aⅴ一区二区三区视频| 免费看久久久| 精品一区二区三区中文字幕视频 | 日本不卡一区二区三区| 日韩av成人高清| 久久伊人亚洲| 精品日韩视频| 亚洲乱码视频| 国产videos久久| 日韩中文字幕一区二区三区| 99在线精品免费视频九九视 | 蜜桃久久精品一区二区| 999国产精品视频| 综合日韩av| 欧美日韩一区二区国产| 日韩av首页| 中文字幕一区二区三区四区久久 | 久久精品亚洲人成影院| 一区二区国产在线| 黑人精品一区| 欧美日韩伊人| 精品一区二区三区中文字幕在线| 亚洲大全视频| 欧美亚洲色图校园春色| 99精品视频在线| 国产精品久久久久av蜜臀| 国产欧美一区二区精品久久久| 成人亚洲欧美| 亚洲免费一区三区| 久久精品一区二区三区中文字幕| 视频一区视频二区中文| 成人羞羞视频播放网站| 日本a口亚洲| 高潮久久久久久久久久久久久久| 蜜臀av国产精品久久久久| 国产成人久久精品麻豆二区 | 久久av偷拍| 欧美大黑bbbbbbbbb在线| 国产精品一区二区免费福利视频| 免费av一区| 亚洲最新无码中文字幕久久| 欧美午夜三级| 婷婷精品在线| 欧美日本一区| 日韩国产欧美视频| 四虎国产精品免费久久| 欧美日韩国产探花| 影视先锋久久| 激情欧美一区二区三区| 婷婷综合五月|