概述
修改安卓内核源码,绕过对/proc/$pid/state的State和TracerPid字段,以及/proc/$pid/wchan的反调试检测
目标文件
打开内核源码目录,/fs/proc下的base.c和array.c
修改点
base.c
proc_pid_wchan函数
最后一个else分支改成
1 | else |
因为/proc/pid/wchan 和 /proc/pid/task/pid/wchan在调试状态下,里面内容为ptrace_stop, 非调试的状态下为ep_poll
array.c
1. task_state_array字符数组
将4和8对应的字符("T (stopped)"和"t (tracing stop)")
都改成"S (sleeping)"
2. task_state函数
与前文(逆向修改安卓内核 x64 过TracerPID反调试)目的一致,置TracerPid为0
将参数tpid改为0即可
1 | seq_printf(m, |
效果
使用调试器附加后,cd到/proc/$pid/,执行以下命令:head -8 statuscat wchan