C#与C++的安全性
C# vs C++ security
我正在和一个懂C#的朋友一起写一个应用程序。我想用最难反编译的代码来编译它。C#和C++之间的安全性区别是什么?(就在编译的可执行文件中查看代码而言)
很简短,解释起来很简单,假设版本构建没有调试信息:
C/C++:
你会得到汇编代码,仅此而已。基于反编译的知识,这可能很容易理解,也可能根本不可能。这里并没有一般的答案,因为这也取决于代码本身的复杂性(即"它实际上在做什么?")。
C#:
对于所有.NET语言来说,反编译要容易得多,因为生成的二进制文件基本上只包含即时语言代码,您可以将其反编译为可读代码。这不一定会产生与最初相同的代码(变量名可能会丢失,没有注释,优化可能会模糊一些代码),但最终会更容易理解和修改。
有一些代码混淆器可以让阅读反编译的.NET代码变得更难理解,但总的来说,你应该假设总有人能够理解和反向工程你的代码,即使你的代码只是一个黑匣子。
相关文章:
- 类与私有变量的其他类之间的线程安全性
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 有关图像处理应用程序的硬件和软件安全性的建议
- 易失性sig_atomic_t的内存安全性
- 如何使用OpenDDS 3.13安全性
- 避免使用指针时C++的性能和安全性
- 在内核级别安全性下隐藏文件
- 调用socket.remote_endpoint(提升 asio 库)线程安全性
- 使用对象的生命周期作为设置器的安全性
- 重载新阵列运算符的安全性如何?
- std::lock_guard 似乎提供了线程安全性,尽管作用域块
- C++中向量和列表的非写入成员函数的线程安全性
- 从不同QThread访问QOBject方法的安全性
- C++ 对 32 位和 64 位处理器强制对齐的安全性
- 线程安全性和静态变量/成员功能
- 界面设计:超载功能的安全性采用字符串和字符阵列
- 是仅使用get或toplown的原始类型的线程安全性的威胁
- 使用固定整数类型的安全性
- 提高 ASIO stream_descriptor和事件 FD 线程安全性
- 将整数解释为字节数组的安全性