在 C/C++ 中,是不是可以通过使用指针更改“重要”内存地址的值来创建简单的恶意软件?
Posted
技术标签:
【中文标题】在 C/C++ 中,是不是可以通过使用指针更改“重要”内存地址的值来创建简单的恶意软件?【英文标题】:In C/C++, is it possible to create simple malware by using pointers to change values of "important" memory addresses?在 C/C++ 中,是否可以通过使用指针更改“重要”内存地址的值来创建简单的恶意软件? 【发布时间】:2018-08-05 03:43:33 【问题描述】:我只是在学习 C/C++ 中的指针,我了解到未初始化的指针本质上指向某个随机内存地址。是否可以以指向某个“重要”内存地址的方式声明指针,然后擦除/更改存储在该地址中的数据,从而导致计算机性能出现问题?
【问题讨论】:
不适用于任何好的操作系统。如果您尝试访问该位置,您将收到段错误 没有 C/C++ 这样的东西。 @n.m. C/C++ == C 或 C++,很高兴我能把事情弄清楚 :)。 @Blondie -- 当然,就像那些老牌 C/Fortran 和 C/Haskell 一样。 @DavidBowlingC or C++
对于 C proof 的所有合法值都是微不足道的。
【参考方案1】:
您的操作系统负责对您的内存进行分段,以使应用程序无法访问它们不应访问的内存。
因此,当您尝试访问这些受限的内存区域时,会发生运行时错误(即分段错误)。
【讨论】:
【参考方案2】:如果主机操作系统允许您的程序访问所述内存地址,这是可能的。大多数现代操作系统;但是,使用虚拟内存系统,每个进程都获得分配的内存,操作系统透明地将其映射到机器的真实物理内存。在操作系统强加的范围之外访问、读取或写入内存(比如对其他进程的内存或内核本身)将导致分段错误运行时错误,并且通常会立即终止程序。
【讨论】:
以上是关于在 C/C++ 中,是不是可以通过使用指针更改“重要”内存地址的值来创建简单的恶意软件?的主要内容,如果未能解决你的问题,请参考以下文章