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

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

2022-6-4 16:39
56061
收藏
点赞71
打赏
分享
打赏 + 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 大佬牛鼻
最新回复 (103)
雪    币: 1929
活跃值: (12830)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2023-1-16 23:46
76
0
不是这么用的。cmake支持asm 直接导入.S文件就可以了 ...... 
雪    币: 62
活跃值: (518)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2023-1-17 11:41
77
0
珍惜Any 不是这么用的。cmake支持asm 直接导入.S文件就可以了 ......
可是32位的我这样用就没问题呀
雪    币: 29
活跃值: (5105)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
不吃早饭 2023-1-17 11:48
78
0
万里星河 可是32位的我这样用就没问题呀[em_5]
标注一下naked函数,编译器自动生成的入口部分破坏了上下文
雪    币: 62
活跃值: (518)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2023-1-17 18:05
79
0
不吃早饭 标注一下naked函数,编译器自动生成的入口部分破坏了上下文

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

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


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

雪    币: 121
活跃值: (1517)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xxRea 2023-1-17 23:07
82
0
mark
雪    币: 62
活跃值: (518)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2023-1-18 13:32
83
0
不吃早饭 那你为什么不试试把它定义成变长函数?

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

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

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

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

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

雪    币: 1929
活跃值: (12830)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2023-1-18 20:33
85
0
需要加一下ams支持,这个我在课程都讲过了,v296488320
雪    币: 1929
活跃值: (12830)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2023-1-18 20:34
86
0

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

再次感谢

最后于 2023-2-25 11:36 被樊辉编辑 ,原因:
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_foyotena 2023-3-10 18:03
93
0
有没有开箱即用的tool啊
雪    币: 414
活跃值: (934)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
Andy_877594 2023-3-12 22:47
94
0
mark
雪    币: 217
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
憨豆爆发 2023-3-20 13:04
95
0
tql
雪    币: 62
活跃值: (518)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万里星河 2023-6-7 19:45
96
0
mark
雪    币: 18
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
winte 2023-6-7 22:38
97
0
某些国产手机也是这样禁用了hook软件签名
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_eubdckcw 2023-6-14 14:24
98
0
proot 修改svc返回值依赖于tracee->restart_how = PTRACE_SYSCALL;等待下一次syscall exit stop,这也是linux文档里写的用法。至于proot修改sp简单看了一下,只是为了恢复alloc_mem时对sp的修改,这能导致二次进入svc吗,从汇编来讲也没有道理
雪    币: 1929
活跃值: (12830)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
珍惜Any 2 2023-6-14 15:01
99
0
mb_eubdckcw proot 修改svc返回值依赖于tracee->restart_how = PTRACE_SYSCALL;等待下一次syscall exit stop,这也是linux文档里写的用法。至于pr ...
你可以看看他seccomp.c里面的那个过滤after, 设计那块
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_eubdckcw 2023-6-15 11:53
100
0
珍惜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;。
或许我们看的不是同一个版本吗
游客
登录 | 注册 方可回帖
返回