gpt4 book ai didi

c - Linux内核模块复制进程的.text段

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:43 27 4
gpt4 key购买 nike

我正在尝试读取访问内核 API 的进程的代码段。我使用 mm_struct 来获取所述进程的代码段的第一个和最后一个地址。(引用:http://www.makelinux.net/books/lkd2/ch14lev1sec1)。然后我尝试使用 copy_from_user() 函数复制地址的内容,代码如下:

 char code[10];
unsigned long copy_ans;
copy_ans = copy_from_user(code, current->mm->start_code, 10);
//10 is the number of bytes that should be copied.

它似乎真的复制了十个字节,并且“代码”的值始终是:

\x7fELF\x02\x01\x01

我开始怀疑这甚至是从地址中读取的,而不仅仅是将地址的值转换为 char。如果有人能为我指出问题,我会很高兴 :)

谢谢

最佳答案

start_code 只是映射为代码的流程部分。这可能会超出流程的实际代码。特别是,大多数可执行文件将映射到它们自己的文件头(ELF 头)中作为代码段的一部分。这就是您在缓冲区中看到的内容。

阅读更多字节,您最终将开始看到实际代码。

关于c - Linux内核模块复制进程的.text段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com