c++ /CLI应用比c#应用更安全吗?

本文关键字:应用 安全 CLI c++ | 更新日期: 2023-09-27 18:11:30

对于破解者来说,用c++/CLI用/clr switch编写的应用程序比c#应用程序更复杂,这是真的吗?c++/CLI生成的应用程序通常更复杂,难以反汇编和破解吗?我知道这与你编写代码的方式有关,但我问的是破解者面临的一般困难情况。

c++ /CLI应用比c#应用更安全吗?

如果您混合使用本机代码和托管代码,是的,这更困难,因为他们需要知道x86汇编才能阅读您的代码。仍然可行,但比纯托管代码更难。

如果你只编译托管代码(你可以在c++/CLI中这样做),它都被编译成MSIL,可以很容易地用。net Reflector反汇编。托管代码在编译时都是一样的,从编译成MSIL形式的托管c++/CLI代码中重构c#代码(或f#等)相当容易。

你最好混淆你的代码,如果你想让它更难以破解。

Dotfuscator社区版包含在VS2010中。这将把某些类、方法、字段和属性名更改为随机字符。这类软件的付费版本包含了更强大的功能,它实际上会稍微改变程序的结构,使其更难以阅读。还有其他防止反汇编的技术,但它们太多了,无法在这里列出。

边注

这并不一定使您的代码安全。例如,您试图对自己编写的应用程序施加使用限制。也许你在一个不起眼的地方使用一个文件和/或一个注册表项来跟踪程序的使用次数。在他们购买之前,你要防止这个程序被使用超过30次。我可以打开进程监视器,加载你的程序,找到文件和注册表键,你跟踪这些信息,每次我想绕过你的限制时重置它。这根本不需要任何破解

你的安全性取决于你自己,反编译不是一切。

这完全有可能,但我想强调的是,"难以拆解"并不等于"安全"。

你以任何形式交付给第三方的代码都不应该被认为是"安全的"。这一切都是可破解的,你对此无能为力,所以你最好采用一种不依赖于它的商业模式。

实际上c#在防止缓冲区溢出方面应该更安全一些,缓冲区溢出可以用来将汇编代码注入堆栈。