一些简单的反调试手动
ptrace检测
- ptrace自己: 如果一个进程已经被 ptrace 附加,则再次调用 ptrace(PTRACE_ATTACH, …) 会失败,返回 -1 并设置 errno 为 EPERM
- 检查
/proc/[pid]/status
文件里的TracerPid - 看看父进程是谁
/proc/self/stat
检查地址开头来判断hook
- native函数, 检查函数开头的几个字节, 是否跟常规的函数一致. 一般hook会修改成特定的跳转指令.
- native函数, 也可以对比so文件和内存中指令的一致性来判断是否被hook.
- 一些hook手段通过将ArtMethod函数通过修改accessflags转为native函数来进行劫持的hook, 检查方法属性可以判断.