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

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

2023-6-2 12:27
7141

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);
    }
}

图片描述


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2023-6-2 12:31 被xxxlion编辑 ,原因: 修改排版
收藏
点赞5
打赏
分享
最新回复 (2)
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ldbucrik 2024-1-4 09:50
2
0
期待楼主后面的帖子
雪    币: 103
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_zborcmcb 2024-3-18 23:57
3
0
楼主,能加您个联系方式吗 如何实现自己编译内核,通过页表计算物理地址,然后把open从内核重新实现,不记录到inotify
游客
登录 | 注册 方可回帖
返回