安卓逆向_20 --- 模拟器检测、反调试检测、ELF动态调试、__libc_init 下断
From( 模拟器检测实战分析 ):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 设备是真机还是模拟器?:https://www.zhihu.com/question/21355176/answer/272069337
检测 Android 模拟器的方法和代码实现:https://blog.csdn.net/earbao/article/details/82746605
一行代码帮你检测Android模拟器(更新至1.1.0):https://www.jianshu.com/p/434b3075b5dd
过 apk 模拟器检测,关于特定模拟器检测蓝叠模拟器:https://www.52pojie.cn/thread-1039699-1-1.html
android-模拟器检测方法:https://www.jianshu.com/p/ec99371f00ed
模拟器检测
使用 AndroidStudio 动态调试 smali 代码 查找 检测模拟器 代码
在 入口点、入口页面 看下 ,分析有没有模拟器检测。。。
使用 AndroidStudio 动态调试 smali 代码 查找 检测模拟器 代码:https://www.bilibili.com/video/BV1UE411A7rW?p=65
反调试检测手段
( 其实有好多种检测,这里只列举了:关键文件检测、端口检测、进程名检测 来进行简单说明。。。)
IDA Pro 动态调试,分析检测( 这里分析的是 " 可执行文件 ",不是 so 库 )
1. 关键文件检测( 例如:android_server 文件检测 ):https://www.bilibili.com/video/BV1UE411A7rW?p=66
libc_init
相关端口检测,例如 23946
进程名称检测
2. 动态轮询检测( 使用 ptrace ):https://www.bilibili.com/video/BV1UE411A7rW?p=67
libc_init 下断点
源码:
trackpid ( cat /proc/进程id/status 、cat /proc/进程id/cmdline )
动态调试 进程名称 检测( 调试 可执行程序 【不是 apk】 )
Android反调试方法总结以及源码实现之检测篇(一):https://blog.csdn.net/feibabeibei_beibei/article/details/60956307
安卓常见的反调试与对抗方案:https://www.52pojie.cn/thread-709669-1-1.html
视频地址( 动态调试 ELF ):https://www.bilibili.com/video/BV1UE411A7rW?p=68
安卓 反调试
可执行文件源码( 编译成可执行文件之后,adb push 传到 手机上执行,然后 动态调试进程 ):
上传可执行文件到手机,并运行程序:
运行 android_servers
端口转发( 在打开一个 cmd 窗口,运行 端口转发命令 ):
执行转发命令
使用 IDA Pro 调试
注意:
- 调试 可执行程序 是 Debugger ---> run
- 调试 so 是 Debugger ---> attach
调试可执行程序:
填写可执行文件路径、IP、和 端口号
点击 OK 之后,会挂起程序,然后勾选 三项
因为是从 libc.so 加载的,所以直接点击是跳转不过来的,如图所示:
点击运行加载 libc.so
点击进入 libc.so ,然后再 libc.so 里面搜索 libc,找到 libc_init,点进去,下断点
然后再点击 "运行",让程序运行到断点处。。。
可执行文件 的 导出函数 只有一个 main,点击去,可以找到 __libc_init ,这个函数有 4 个参数,这4个是固定的
但是怎么找一个可执行文件一开始执行的地方,其实就是 __libc_init 的第 3 个参数,
即 R2 ,指向 main 函数,即就是程序的入口点。。。
分析 main 函数即可看到 检测逻辑代码
libc_init 下断点
libc_init 下断点:https://www.bilibili.com/video/BV1UE411A7rW?p=65
相关文章
- 安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程
- 安卓逆向_9 --- log 插桩、Toast 弹窗、smali代码编写和植入 ( 好搜小说 )
- uni-app - 最新自定义连接安卓模拟器配置到 MUMU 模拟器运行程序(将uni-app运行到MuMu模拟器上进行调试,配置电脑手机模拟器 MUMU 运行测试)
- 安卓入门基础(九)-对应用结构进行分析
- C#编写WINNT服务,随便解决安卓开发遇到的5037被众多程序无节操占用的问题
- 安卓程序如何保证低内存下依然存在
- unreal 安卓打包出现 LogHttp: Warning: 000001D09B0C8F00: request failed, libcurl error 哇塞 真的是爆炸 不知道为啥巨慢
- 解决安卓SDK无法更新其他版本问题。
- 我和谷歌共成长-资深安卓开发的转型之路
- 安卓开发者们受邀为Chrome OS做好准备
- 安卓Android碎片fragment实现静态加载
- 安卓混合开发——原生Java和H5交互,保证你一看就懂!
- 安卓设备的这个致命弱点让谷歌也是束手无策