-
-
[原创]【从源码过反调试】四、文件监控+启动时捕获进程
-
-
[原创]【从源码过反调试】四、文件监控+启动时捕获进程
native fork的进程还没包进去,再研究下,下篇帖子做个补充
文件监控
上一篇和文件过滤相同的位置,针对target开启log输出即可。fs/namei.c
1 2 3 4 5 6 7 8 9 10 11 12 | / / 如果文件监控功能开启
if ((is_target() || is_capture()) && is_file_monitor_start())
{
printk(KERN_INFO "[AntiLog][FileMonitor] File Access:%s.\n" , result - >uptr);
}
if (is_target() && is_str_in_filter_array(result - >uptr, &ecode))
{
/ / 如果在过滤列表
printk( "[AntiLog] dont access me result:%d\n" , ecode);
return ERR_PTR(ecode);
}
|
启动时捕获进程
对于要监控的目标,如果在目标启动后再开始监控,那就太晚了,目标进程读了什么文件可能都错过了。
这里开始打算设定监控一个目录,在这个目录下启动的进程会被自动监控。后来研究发现在内核做这个不太好。
原因:
安卓的应用绝大部分都是zygote fork出来的,然后在zygote进程里补充fork出来的进程信息比如进程名,dir,sid等的。但在内核里能看到的只是一个叫做main的进程fork一堆main进程,如图
原有的思路更适合在安卓源码里做。所以就降低下自动化,手动设置开关,在开启开关后所有被fork出来的,名字时main的进程都开启文件监控。在这个思路下代码就出现了:
1 2 3 4 5 6 7 8 | if (is_capture_proc())
{
if (strcmp(p - >comm, "main" ) = = 0 )
{
add_pid_to_pids(nr, 2 );
LOG( "Process:%s[%d] Add To Capture List." , p - >comm, nr);
}
}
|
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-6-2 12:31
被xxxlion编辑
,原因: 修改排版