首页
社区
课程
招聘
[原创]【从源码过反调试】四、文件监控+启动时捕获进程
发表于: 2023-6-2 12:27 8826

[原创]【从源码过反调试】四、文件监控+启动时捕获进程

2023-6-2 12:27
8826

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编辑 ,原因: 修改排版
收藏
免费 5
支持
分享
最新回复 (3)
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
期待楼主后面的帖子
2024-1-4 09:50
1
雪    币: 117
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
楼主,能加您个联系方式吗 如何实现自己编译内核,通过页表计算物理地址,然后把open从内核重新实现,不记录到inotify
2024-3-18 23:57
0
雪    币: 18
活跃值: (666)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
写的太好了.好好学习
2024-11-2 10:37
0
游客
登录 | 注册 方可回帖
返回
//