C# 编译器标志

约翰

我知道 C# 可以编译成类似于 Java 的字节码,但是是否有任何编译器标志,例如适用于 C# 的 C/C++ 的 safeseh 或 gs 标志?我不确定它们是否有必要,因为大概所有这些东西都在 CLR 中实现了?

沙纳托斯

我记得在 C# 编译器中没有安全标志,如果我们排除/unsafe禁止使用原始 C 指针编写 C# 代码的可能性。即使没有该标志,您通常也可以以其他方式编写等效的“不安全”代码以进行编译,因此该标志是一个红鲱鱼。

由于字符串和数组的处理方式,.NET 中免费提供了针对缓冲区溢出和类似攻击的保护。您不能在数组结尾之后写入(并且几乎所有其他 .NET 集合在内部都基于数组),并且您不能写入strings(它们是不可变的,当您分配它们时,您分配它们其内容的“正确”大小,这是在创建string)时决定和固定的

请注意,您仍然可以轻松地使 C# 程序崩溃(例如,通过传递非法数据......当需要数字时发送文本),但是这种崩溃(实际上通常是一个Exception)不允许您控制机器,或覆盖内存片段。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是-D编译器标志C ++(clang,GNU,MSVC)

来自分类Dev

为C源指定编译器标志

来自分类Dev

什么是-D编译器标志C ++(clang,GNU,MSVC)

来自分类Dev

添加C ++编译器,在ubuntu中将链接器标志链接到nsight eclipse 6.5

来自分类Dev

查看从 Objective-C 生成的纯 C 代码的编译器标志是什么?

来自分类Dev

是否有与Visual Studio C ++编译器等效的-ffast-math标志

来自分类Dev

在Bazel中,如何防止某些C ++编译器标志传递给外部依赖项?

来自分类Dev

C ++编译器输出

来自分类Dev

Linux C编译器

来自分类Dev

如何可靠地修改构建配置并在C / C ++ RPM文件中添加编译器标志?

来自分类Dev

在Ubuntu上禁用堆栈保护以防止缓冲区溢出而没有C编译器标志

来自分类Dev

无法在 Solaris 的最新编译器中使用带有新 c+11 标志的 xercesc

来自分类Dev

使用 Visual Studio 2017 构建 SSDT 项目时如何将 /unsafe 标志传递给 C# 编译器

来自分类Dev

编译为cortex-m0时unsigned int不是uint32_t-可能的C编译器标志问题

来自分类Dev

C / C ++编译器(Windows)

来自分类Dev

C / C ++编译器(Windows)

来自分类Dev

C编译器错误或程序错误?

来自分类Dev

用来引导C编译器的内容

来自分类Dev

了解MSVS C ++编译器优化

来自分类Dev

C#编译器优化

来自分类Dev

C编译器标识未知

来自分类Dev

从Java程序调用C编译器

来自分类Dev

编译器选项以禁用C ++“功能”

来自分类Dev

C,编译器错误和指针

来自分类Dev

跨不同编译器的C ++库

来自分类Dev

C编译器的默认行为与常量

来自分类Dev

找不到C编译器,Ubuntu

来自分类Dev

C代码过于依赖编译器

来自分类Dev

小巧的C编译器臂

Related 相关文章

热门标签

归档