每个过程在记忆中都有自己的乌托邦部分吗?

Fra*_*nko 1 memory stack-overflow assembly buffer-overflow

通过cat /proc/*some PID*/maps对机器上的多个进程执行一些操作,我注意到它们在内存地址方面都有相同的起点0x8048000.这是否意味着每个进程都有"它自己的内存空间,包括堆栈,堆等".在运行时?

如果是这样,攻击者如何区分一个进程的内存地址到另一个进程?

因此,如果一台机器有2GB的RAM,并且有几个进程同时运行 - 我们如何知道我们所针对的内存地址?或者我把这一切都弄错了,攻击开始于查看过程本身然后从那里前进?

请原谅初学者的问题,我刚刚进入大会并且正在同时阅读5个教程,并且有点难以理解这一切.

请注意这个问题是放在这里,而不是IT安全,因为我确实提到了大会方面.

eth*_*han 5

每个进程都有自己的"虚拟内存",它存储自己的堆栈,堆,指令等.每个进程可以独立于任何其他进程使用整个32/64位地址空间.内核管理每个进程虚拟内存和机器物理RAM之间的映射.维基百科更详细地介绍了这一点.

大多数攻击都针对特定进程中的内存.攻击者使用他们所针对的进程的地址空间中的地址.正如您所观察到的,许多可执行文件加载到标准虚拟地址,使攻击者更容易预测进程的内存布局.