问题标签 [address-space]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
454 浏览

unix - 将环境变量作为命令行参数传递时的内存分配

我正在尝试在 linux 中进行简单的缓冲区溢出攻击。我有一个接受命令行参数的易受攻击的程序。我有另一个程序,它设置了一个环境变量,其中包含一些我想要执行的代码(通常是 shellcode)。现在我试图用这个环境变量的地址溢出我易受攻击的程序的缓冲区。我有以下问题:

  1. 当我将环境变量作为命令行参数传递时,变量的内容是否被复制到易受攻击程序的 argv 中?

  2. 环境变量(命令行参数)将存储在进程的地址空间中的什么位置?它会在进程堆栈上还是在其他地方?

0 投票
1 回答
1390 浏览

python - Python:在linux下写入另一个进程的内存

如何在 Ubuntu Linux 下使用 python 写入另一个进程的地址空间?我的尝试:

1) 使用虚拟文件 /proc/$PID/mem 并寻找地址。我已成功使用它来读取内存,但尝试写入会导致 IOError:

输出:

2) 尝试按照其他线程中的建议使用 python-ptrace 库。但是,我找不到好的文档或示例代码。

注意:这不是权限问题,以 root 身份运行会产生相同的行为。

0 投票
1 回答
3729 浏览

bus - 可寻址性 vs 地址空间 vs 地址总线

您如何根据地址空间确定可寻址性?如何根据可寻址性确定地址总线的大小?前任。一台机器的寻址能力是32位,地址总线的大小是多少?

0 投票
1 回答
148 浏览

c++ - 代理成员访问

一个类在访问它的成员时是否有可能充当代理?最简单的方法当然是编写 getter/setter,但这既不灵活又不优雅,因为您必须自己编写所有的 setter,这会使代码膨胀。

问题是我想抽象出一些数据位于微控制器程序中的事实。基本上我想要那个

被翻译成类似的东西

在嵌入式 C 中,可以使用地址空间__flash来做类似的事情。不幸的是,C++ 不支持这一点。

所以我想到了重载operator->()。不幸的是operator->(),没有得到您要访问哪个成员的任何信息(顺便说一句:为什么是 wtf?-> 的唯一目的是访问一个成员,那么为什么有人要丢弃这些信息?)。.根本无法覆盖。

有人知道如何解决这个问题吗?当然,语法不一定是->。如果可以使用一些深奥的模板构造,我也会很高兴。我不太了解 C++,也许根本不可能。C++ 在元编程方面似乎有点不灵活。

编辑:从答案中得到灵感后,我现在决定使用包装类并覆盖强制转换运算符。

0 投票
1 回答
225 浏览

.net - dotnet 中每个逻辑处理器的堆是多少?

我有几个问题,包括两个案例的标题中的一个(在 dotnet 和一般情况下)

(1)是每个逻辑处理器的堆(我猜一般是肯定的)

(2)是每个逻辑处理器的地址空间(一般是?)

(3) 一个进程可以访问多个堆吗?(我猜对 dotnet 来说不,而一般来说是。如果一般来说是正确的。人们为什么以及什么时候会这样做?)

(4) 是每个 dotnet 框架的 GC。

谢谢

0 投票
0 回答
114 浏览

dll - 当您在内存中编辑 dll 时,其他应用程序是否看到更改?

假设我正在使用 Cheat Engine 编辑内存中的 kernel32.dll 代码。我想问一下,当我编辑它时,是否有其他程序使用加载该 dll 的相同地址空间?还是每个进程都获得 dll 的单独副本,并且您可以随意更改它,但可能发生的唯一崩溃将仅针对该进程?

0 投票
4 回答
2056 浏览

c - 将地址空间除以 8

我的问题是关于处理地址空间。

我有两个十六进制地址空间:0x7ffffff09 和 0x7fffff08。

我怎么知道它们是否可以被 8 或 8 字节对齐整除?就像检查在 C 或 C++ 代码中的样子一样。我知道您通常将 mod 用于常规数字,如果没有余数,那么您就知道它是可整除的。

编辑:地址空间可以是__8、__16、__32(8位、16位、32位)

0 投票
1 回答
54 浏览

windows - 在窗口中地址空间

如果硬盘中没有可用空间,当我运行应用程序时系统会做什么?在哪里创建分页文件?

0 投票
2 回答
1987 浏览

assembly - 当处理器试图访问一个不存在的物理地址时会发生什么?

想象一台 32 位 x86 计算机,其内存少于 3 GB,CPU 设置为禁用分页和平面段描述符(0x0作为基础,0xffffffff作为数据和代码的有效限制)。

当 ring0 中的一条指令试图使用一条mov指令来引用一个没有任何内存地址支持的物理地址时会发生什么?

QEMU 仿真只是因为“致命:尝试在 RAM 或 ROM 之外执行代码”之类的错误而停止。

这些异常与内存问题有关:

  1. 它不应该是“段不存在(#NP)”:它只在加载段寄存器时发生,但我实际上可以毫无问题地加载扁平段。
  2. #SS不应生成“堆栈错误( )”,因为代码不引用堆栈。
  3. “一般保护(#GP)”不应该发生,因为代码在 ring-0 中运行并且段被设置为允许访问每个物理地址。
  4. 分页被禁用,因此它也不是“页面错误(#PF)”。
  5. 而且这不是对齐问题,因此不应触发“对齐检查(#AC)”。

我没有选择,我不知道会发生什么。

0 投票
0 回答
133 浏览

linux - 计算进程内环境的内存地址

我从安全课程的讲座幻灯片中获得了以下代码。

该代码在其环境中调用带有 shellcode 的易受攻击的程序。shellcode 是外部文件中的一些汇编代码,它打开一个 shell,VULN 定义了易受攻击的程序的名称。

我的问题:shellcode地址是如何计算的

addr 变量保存 shellcode 的地址(它是环境的一部分)。谁能向我解释这个地址是如何确定的?所以:

  • 0xc0000000 - 4 来自哪里?
  • 为什么要减去 shellcode 的长度和程序名?

请注意,这段代码和易受攻击的程序都是这样编译的:

所以地址空间随机化被关闭。

我知道堆栈是进程内部的第一件事(最高内存地址)。堆栈按以下顺序包含:

  1. 环境数据。
  2. argv
  3. 氩气
  4. main的返回地址
  5. 帧指针
  6. main 中的局部变量
  7. ...ETC...

常量和全局数据不存储在堆栈中,这就是为什么我也不明白为什么 VULN 常量的长度会影响放置 shellcode 的地址。

希望你能帮我解决这个问题:-)

请注意,我们正在使用 intel x86 架构上的 unix 系统