首页
社区
课程
招聘
[原创]SVC的TraceHook沙箱的实现&无痕Hook实现思路
发表于: 2022-6-4 16:39 63801

[原创]SVC的TraceHook沙箱的实现&无痕Hook实现思路

2022-6-4 16:39
63801
收藏
免费 78
支持
分享
打赏 + 165.00雪花
打赏次数 4 雪花 + 165.00
 
赞赏  ch1   +5.00 2022/09/25 拨云见雾,受到启发,楼主继续努力!
赞赏  Editor   +150.00 2022/07/04 恭喜您获得“雪花”奖励,安全圈有你而精彩!
赞赏  Imyang   +5.00 2022/06/04
赞赏  菱志漪   +5.00 2022/06/04 大佬牛鼻
最新回复 (108)
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
76
不是这么用的。cmake支持asm 直接导入.S文件就可以了 ...... 
2023-1-16 23:46
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
77
珍惜Any 不是这么用的。cmake支持asm 直接导入.S文件就可以了 ......
可是32位的我这样用就没问题呀
2023-1-17 11:41
0
雪    币: 29
活跃值: (5652)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
78
万里星河 可是32位的我这样用就没问题呀[em_5]
标注一下naked函数,编译器自动生成的入口部分破坏了上下文
2023-1-17 11:48
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79
不吃早饭 标注一下naked函数,编译器自动生成的入口部分破坏了上下文

嗯 标注了naked还是有个坑 就是不支持不定长参数 目前这样可以用 但是感觉不够优雅

2023-1-17 18:05
0
雪    币: 29
活跃值: (5652)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
80
万里星河 嗯 标注了naked还是有个坑 就是不支持不定长参数 目前这样可以用 但是感觉不够优雅
那你为什么不试试把它定义成变长函数?
2023-1-17 19:15
0
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
81


创建一个.s文件,按照我这样写 。

2023-1-17 23:05
0
雪    币: 120
活跃值: (1597)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
82
mark
2023-1-17 23:07
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
83
不吃早饭 那你为什么不试试把它定义成变长函数?

变长参数始终不行 不知为啥

但是也不是完全不行 第一次的opnat的系统调用正常 紧接着的read系统调用出的问题

把参数都写出来的版本就没问题

最后于 2023-1-18 13:48 被万里星河编辑 ,原因:
2023-1-18 13:32
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
84
珍惜Any 创建一个.s文件,按照我这样写 。

报未定义的错误 应该是汇编文件没在cmakeLists.txt里配置好 但百度了一圈也没看到配置方法

2023-1-18 13:37
0
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
85
需要加一下ams支持,这个我在课程都讲过了,v296488320
2023-1-18 20:33
0
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
86

我看你源码里面没有这个头文件啊,你需要创建一个头文件,.....看我上面图片
2023-1-18 20:34
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
珍惜Any 我看你源码里面没有这个头文件啊,你需要创建一个头文件,.....看我上面图片
好的 我明白了 感谢大佬
2023-1-19 09:23
0
雪    币: 45
活跃值: (1359)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
88
珍惜Any 创建一个.s文件,按照我这样写 。
大佬,怎么样才能hook execve("ps",...) 过滤掉ps输出的部分内容?
2023-2-22 23:03
0
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
89
我这个文章写的很详细了,你可以在执行execve之前先生成一份文件,然后把参数换成cat你的文件
2023-2-23 10:18
0
雪    币: 225
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
90
666,mark 一下
2023-2-23 11:37
0
雪    币: 45
活跃值: (1359)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
91
珍惜Any 我这个文章写的很详细了,你可以在执行execve之前先生成一份文件,然后把参数换成cat你的文件
好思路,谢谢大佬
2023-2-23 15:50
0
雪    币: 45
活跃值: (1359)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
92
珍惜Any 我这个文章写的很详细了,你可以在执行execve之前先生成一份文件,然后把参数换成cat你的文件

再次感谢

最后于 2023-2-25 11:36 被樊辉编辑 ,原因:
2023-2-25 10:15
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
93
有没有开箱即用的tool啊
2023-3-10 18:03
0
雪    币: 404
活跃值: (959)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
94
mark
2023-3-12 22:47
0
雪    币: 207
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
95
tql
2023-3-20 13:04
0
雪    币: 116
活跃值: (1012)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
96
mark
2023-6-7 19:45
0
雪    币: 18
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
97
某些国产手机也是这样禁用了hook软件签名
2023-6-7 22:38
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
98
proot 修改svc返回值依赖于tracee->restart_how = PTRACE_SYSCALL;等待下一次syscall exit stop,这也是linux文档里写的用法。至于proot修改sp简单看了一下,只是为了恢复alloc_mem时对sp的修改,这能导致二次进入svc吗,从汇编来讲也没有道理
2023-6-14 14:24
0
雪    币: 3355
活跃值: (14008)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
99
mb_eubdckcw proot 修改svc返回值依赖于tracee->restart_how = PTRACE_SYSCALL;等待下一次syscall exit stop,这也是linux文档里写的用法。至于pr ...
你可以看看他seccomp.c里面的那个过滤after, 设计那块
2023-6-14 15:01
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
100
珍惜Any 你可以看看他seccomp.c里面的那个过滤after, 设计那块
BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_TRACE + flag)
seccomp.c after的逻辑就是这里吧,需要修改返回值的svc此处flag = FILTER_SYSEXIT,在触发enter stop时获取flag并判断是否需要exit stop,需要则tracee->restart_how = PTRACE_SYSCALL;。
或许我们看的不是同一个版本吗
2023-6-15 11:53
0
游客
登录 | 注册 方可回帖
返回
//