【问题标题】:Hiding system calls from debugger从调试器隐藏系统调用
【发布时间】:2016-02-22 23:17:16
【问题描述】:

在 Eldad Eilam 的名为 Reversing 的书中,在第 11 章:打破保护中,有一个名为 Defender 的破解者。它是为 Windows 编写的,在执行开始时,用户模式操作系统组件通过搜索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 上使用的一样,从 gdb 隐藏 write 操作?

【问题讨论】:

    标签: linux gdb reverse-engineering


    【解决方案1】:

    不,这是不可能的。实现ptrace捕获系统调用的代码在内核中,而不是在用户空间中,所以没有办法避免。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多