在 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 一样。 @DavidBowling C or C++ 对于 C proof 的所有合法值都是微不足道的。 【参考方案1】:

您的操作系统负责对您的内存进行分段,以使应用程序无法访问它们不应访问的内存。

因此,当您尝试访问这些受限的内存区域时,会发生运行时错误(即分段错误)。

【讨论】:

【参考方案2】:

如果主机操作系统允许您的程序访问所述内存地址,这是可能的。大多数现代操作系统;但是,使用虚拟内存系统,每个进程都获得分配的内存,操作系统透明地将其映射到机器的真实物理内存。在操作系统强加的范围之外访问、读取或写入内存(比如对其他进程的内存或内核本身)将导致分段错误运行时错误,并且通常会立即终止程序。

【讨论】:

以上是关于在 C/C++ 中,是不是可以通过使用指针更改“重要”内存地址的值来创建简单的恶意软件?的主要内容,如果未能解决你的问题,请参考以下文章

C/C++中的指针

在 C++ 中更改字符串或字符指针的某些字符

C/C++编程笔记:什么是不透明指针?一文带你明白!

指针常量&常量指针&指向常量的指针常量

(C/C++)区别:数组与指针,指针与引用

使用空指针是不是意味着某些内存始终未被使用?