概述
修改安卓内核源码,绕过对/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 status
cat wchan