小编lon*_*Bit的帖子

如何在 x86_64 中使用 clang-8 的“影子调用堆栈”功能?

最近,我正在尝试在 x86_64 中测试 clang-8 的“影子调用堆栈”功能。但是当我运行“shadowed”程序时,即使它是一个“Hello_World”程序,它也会不断抛出分段错误。我的编译命令是“clang-8 -fsanitize=shadow-call-stack normal.c”。“normal.c”只是一个简单的 hello_world c 程序:

#include <stdio.h>
int main(int argc, char *argv[])
{
    printf("Hello World!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

main函数的汇编代码在这里:

   0x0000000000401130 <+0>: mov    (%rsp),%r10
   0x0000000000401134 <+4>: xor    %r11,%r11
   0x0000000000401137 <+7>: addq   $0x8,%gs:(%r11)
   0x000000000040113c <+12>:    mov    %gs:(%r11),%r11
   0x0000000000401140 <+16>:    mov    %r10,%gs:(%r11)
   0x0000000000401144 <+20>:    push   %rbp
   0x0000000000401145 <+21>:    mov    %rsp,%rbp
   0x0000000000401148 <+24>:    sub    $0x20,%rsp
   0x000000000040114c <+28>:    movl   $0x0,-0x4(%rbp)
   0x0000000000401153 <+35>:    mov    %edi,-0x8(%rbp)
   0x0000000000401156 <+38>:    mov    %rsi,-0x10(%rbp)
   0x000000000040115a <+42>:    movabs $0x402004,%rdi
   0x0000000000401164 <+52>:    mov    $0x0,%al
   0x0000000000401166 <+54>:    callq  0x401030 …
Run Code Online (Sandbox Code Playgroud)

c assembly callstack x86-64 clang

4
推荐指数
1
解决办法
288
查看次数

标签 统计

assembly ×1

c ×1

callstack ×1

clang ×1

x86-64 ×1