首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C ptrace断点

C ptrace断点
EN

Stack Overflow用户
提问于 2020-05-01 01:12:28
回答 1查看 330关注 0票数 1

我一直在使用this教程来尝试在C中设置一个调试器。我已经设置了一个测试程序,如下所示:

代码语言:javascript
复制
#include<stdio.h>

int main()
{
    printf("BEFORE");

    printf("AFTER"); 
}

main函数的dissasembly如下所示:

但是,如果我尝试使用下面的代码在0x64a打印数据,我会得到输出ffffffffffffffff

代码语言:javascript
复制
long address = 0x64a;
long data = ptrace(PTRACE_PEEKTEXT, status, (void *) address, NULL);
printf("%lx", data);

另外,这是我附加测试程序的代码:

代码语言:javascript
复制
char* args[] = {"test", NULL};
if(pid == 0)
{
    ptrace(PTRACE_TRACEME, 0, NULL, NULL);
    execve("./test", args, NULL);
    //execl("./test", "test", NULL);
}
EN

回答 1

Stack Overflow用户

发布于 2020-05-01 07:49:35

你有一个与位置无关的可执行文件。因此,ASLR使其从内存中的随机地址开始。在ptrace期间检查rip寄存器,并从那里转储代码,而不是从可执行文件的地址转储。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61529044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档