gpt4 book ai didi

linux - 在 Linux 2.6.x 下访问任何内存位置

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:05 25 4
gpt4 key购买 nike

我在 x86 机器上使用 Slackware 12.2。我正在尝试通过转储特定的内存部分来调试/找出问题。不幸的是,我对 Linux 内核的了解非常局限于编程/渗透测试所需的知识。

所以这是我的问题:有没有办法访问内存中的任何点?我试着用一个字符指针来做这件事,这样它就只有一个字节长。然而,程序崩溃了,并吐出一些具有这种性质的东西:“无法访问内存位置”。现在我指着 0x00000000 位置,系统存储它的中断向量(除非它改变了),这应该无关紧要。

现在我的理解是内核将内存(数据、堆栈、堆等)分配给一个程序,并且该程序将无法去任何其他地方。所以我在考虑使用 NASM 来告诉 CPU 直接获取我需要的东西,但我不确定这是否可行(我需要弄清楚如何将 MASM 转换为 NASM)。

好吧,这是我冗长的独白。基本上我的问题是:“有没有办法实现这个目标?”。

无论如何...

最佳答案

如果您的程序在用户模式下运行,那么您的进程内存之外的内存将无法通过 Hook 或骗子访问。使用 asm 无济于事,任何其他方法也无济于事。这是根本不可能的,并且是任何以保护模式运行的操作系统(即过去 20 多年的所有操作系统)的核心安全/稳定性功能。 Here's a brief overview of Linux kernel memory management.

探索计算机整个内存空间的唯一方法是使用内核调试器,它允许您访问任何物理地址。然而,即使这样也不能让您同时查看每个进程 的内存,因为某些进程将被换出主内存。此外,即使在内核模式下,物理地址也不一定与进程可见的地址相同。

关于linux - 在 Linux 2.6.x 下访问任何内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239291/

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