安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断
?
From(?模擬器檢測(cè)實(shí)戰(zhàn)分析 ):https://www.bilibili.com/video/BV1UE411A7rW?p=65
怎樣過(guò) app 的模擬器檢測(cè):https://bbs.pediy.com/thread-249759.htm
Android 模擬器如何不被檢測(cè)思路:https://bbs.pediy.com/thread-227050.htm
Android 模擬器檢測(cè)常用方法:https://blog.csdn.net/sinat_33150417/article/details/51320228
如何判斷 Android 設(shè)備是真機(jī)還是模擬器?:https://www.zhihu.com/question/21355176/answer/272069337
檢測(cè) Android 模擬器的方法和代碼實(shí)現(xiàn):https://blog.csdn.net/earbao/article/details/82746605
一行代碼幫你檢測(cè)Android模擬器(更新至1.1.0):https://www.jianshu.com/p/434b3075b5dd
過(guò) apk 模擬器檢測(cè),關(guān)于特定模擬器檢測(cè)藍(lán)疊模擬器:https://www.52pojie.cn/thread-1039699-1-1.html
android-模擬器檢測(cè)方法:https://www.jianshu.com/p/ec99371f00ed
?
模擬器檢測(cè)
?
?
?
使用?AndroidStudio?動(dòng)態(tài)調(diào)試?smali?代碼?查找?檢測(cè)模擬器?代碼
?
在 入口點(diǎn)、入口頁(yè)面?看下 ,分析有沒(méi)有模擬器檢測(cè)。。。
使用?AndroidStudio?動(dòng)態(tài)調(diào)試?smali?代碼?查找?檢測(cè)模擬器?代碼:https://www.bilibili.com/video/BV1UE411A7rW?p=65
?
?
反調(diào)試檢測(cè)手段
( 其實(shí)有好多種檢測(cè),這里只列舉了:關(guān)鍵文件檢測(cè)、端口檢測(cè)、進(jìn)程名檢測(cè)? 來(lái)進(jìn)行簡(jiǎn)單說(shuō)明。。。)
IDA?Pro?動(dòng)態(tài)調(diào)試,分析檢測(cè)( 這里分析的是 "?可執(zhí)行文件 ",不是 so 庫(kù)?)
1.?關(guān)鍵文件檢測(cè)(?例如:android_server?文件檢測(cè)?):https://www.bilibili.com/video/BV1UE411A7rW?p=66
libc_init
?
相關(guān)端口檢測(cè),例如 23946?
?
進(jìn)程名稱檢測(cè)
?
2.?動(dòng)態(tài)輪詢檢測(cè)( 使用 ptrace?):https://www.bilibili.com/video/BV1UE411A7rW?p=67
libc_init 下斷點(diǎn)
源碼:
?
trackpid? ( cat /proc/進(jìn)程id/status? 、cat /proc/進(jìn)程id/cmdline?)
?
?
?
動(dòng)態(tài)調(diào)試 進(jìn)程名稱 檢測(cè)(?調(diào)試 可執(zhí)行程序 【不是?apk】?)
?
Android反調(diào)試方法總結(jié)以及源碼實(shí)現(xiàn)之檢測(cè)篇(一):https://blog.csdn.net/feibabeibei_beibei/article/details/60956307
安卓常見(jiàn)的反調(diào)試與對(duì)抗方案:https://www.52pojie.cn/thread-709669-1-1.html
視頻地址( 動(dòng)態(tài)調(diào)試 ELF ):https://www.bilibili.com/video/BV1UE411A7rW?p=68
安卓?反調(diào)試
可執(zhí)行文件源碼(?編譯成可執(zhí)行文件之后,adb push?傳到?手機(jī)上執(zhí)行,然后 動(dòng)態(tài)調(diào)試進(jìn)程?):
上傳可執(zhí)行文件到手機(jī),并運(yùn)行程序:
運(yùn)行 android_servers?
端口轉(zhuǎn)發(fā)(?在打開(kāi)一個(gè)?cmd?窗口,運(yùn)行?端口轉(zhuǎn)發(fā)命令 ):
執(zhí)行轉(zhuǎn)發(fā)命令
使用?IDA Pro?調(diào)試
注意:
- 調(diào)試 可執(zhí)行程序 是?Debugger --->?run?
- 調(diào)試?so?是?Debugger --->?attach
調(diào)試可執(zhí)行程序:
填寫(xiě)可執(zhí)行文件路徑、IP、和?端口號(hào)
點(diǎn)擊 OK 之后,會(huì)掛起程序,然后勾選 三項(xiàng)
因?yàn)槭菑?libc.so 加載的,所以直接點(diǎn)擊是跳轉(zhuǎn)不過(guò)來(lái)的,如圖所示:
點(diǎn)擊運(yùn)行加載 libc.so?
點(diǎn)擊進(jìn)入 libc.so ,然后再 libc.so? 里面搜索 libc,找到 libc_init,點(diǎn)進(jìn)去,下斷點(diǎn)
然后再點(diǎn)擊 "運(yùn)行",讓程序運(yùn)行到斷點(diǎn)處。。。
?
可執(zhí)行文件 的 導(dǎo)出函數(shù) 只有一個(gè) main,點(diǎn)擊去,可以找到?__libc_init ,這個(gè)函數(shù)有 4 個(gè)參數(shù),這4個(gè)是固定的
但是怎么找一個(gè)可執(zhí)行文件一開(kāi)始執(zhí)行的地方,其實(shí)就是 __libc_init 的第 3 個(gè)參數(shù),
即 R2 ,指向 main 函數(shù),即就是程序的入口點(diǎn)。。。
分析 main 函數(shù)即可看到 檢測(cè)邏輯代碼
?
?
libc_init? 下斷點(diǎn)
?
libc_init? 下斷點(diǎn):https://www.bilibili.com/video/BV1UE411A7rW?p=65
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓模拟器 Genymotion 安装
- 下一篇: CompletableFuture详解~