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