在Eldad Eilam的书“Reversing”中,在第11章:破坏保护中,有一个名为Defender的裂缝。它是为Windows编写的,在执行开始时,用户模式OS组件通过搜索ntdll.dll
被复制到随机存储器地址。之后,通过此复制的代码访问操作系统,使用内核模式切换。这样,在调试时,任何用户模式API上的断点都不会被命中。
我想知道这是否可以在Linux上完成。我有一个简单的Hello World汇编代码:
section .data
msg db "hello, world!"
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, 13
syscall
mov rax, 60
mov rdi, 0
syscall
如果我在gdb
中加载相应的可执行文件,发出catch syscall write
并运行该程序,则会检测到write
系统调用。是否可以以与Windows上使用的方式类似的方式隐藏write
gdb
操作?
答案 0 :(得分:2)
不,这是不可能的。实现ptrace
捕获系统调用的代码在内核中,而不是在用户空间中,因此没有办法避免它。