记录一下安卓的SElinux导致ida无法远程动态调试无响应
本帖最后由 白云点缀的蓝 于 2021-11-6 10:56 编辑用到的静态动态分析调试工具ida下载地址
链接:https://pan.baidu.com/s/1NKrismXg1JHWgcE_lc7-sg
提取码:8888
因为要动态调试,所以首先要把android server放入安卓手机里
那么多个android server 应该选哪个?
得按照cpu架构来选择
查看cpu架构的命令
cat/proc/cpuinfo
我们可以看到架构为ARMv7
所以在这里我选择android server
x64对应x64的cpu架构,x86对应x86的架构
x64还有x86一般是模拟器的架构,因为pc电脑一般都是x64或者x86
然后放入手机,放入手机的命令是
adb push I:\x64_idapronw_hexarm64w_hexarmw_hexmipsw_hexppc64w_hexppcw_hexx64w_hexx86w_210427\dbgsrv\android_server /data/local/tmp/as
然后给这个as文件赋予777权限,所有用户可读,可写,可执行。
先adb shell进入安卓命令行,然后su获取超级用户权限
C:\Users\35108>adb shell
shell@cancro:/ $ su
root@cancro:/ #
然后执行修改权限命令,因为文件在/data/local/tmp目录下,所以执行如下命令
chmod 777 /data/local/tmp/as
root@cancro:/ # chmod 777 /data/local/tmp/as
chmod 777 /data/local/tmp/as
然后我们执行
./data/local/tmp/as
root@cancro:/ # ./data/local/tmp/as
./data/local/tmp/as
IDA Android 32-bit remote debug server(ST) v7.6.27. Hex-Rays (c) 2004-2021
Listening on 0.0.0.0:23946...
必须转发端口,否则ida连接直接拒绝
adb forward tcp:23946 tcp:23946
转发后,我们开始动态调试
点击attach,然后选择如下图
选择需要调试的进程
发现直接无响应了
这里我猜测应该是SElinux的原因,因为之前在进行frida hook的时候因为SElinux无法运行frida
查看一下SElinux状态,要在su权限下进行获取,否则会提示权限解决
如下可以看到SElinux的状态是Enforcing状态,也就是开启的状态。
getenforce
root@cancro:/ # getenforce
getenforce
Enforcing
这边尝试把他关闭
关闭命令如下
|root@cancro:/ # setenforce 0
setenforce 0
查看是否关闭成功,可以看到Permissive表示关闭成功
root@cancro:/ # getenforce
getenforce
Permissive
同时ida也从无响应状态变为了运行状态
因为程序有反调试的原因,所以直接关闭了
到此,ida已可以正常调试手机里的程序
这边试了下附加其他应用程序,是没有问题的
小白觉得有点深奥 感谢大佬分享 谢谢分享 我觉得楼主这帖很强! 刚好需要 谢谢大佬 看着很不错,回复一个看看 感谢楼主 谢谢分享 这个不错谢谢,看一下