我目前正在研究用C#开发的应用程序。 我们正在寻找保护我们的应用程序的方法。我知道防止反编译几乎是不可能的,但我想知道是否有办法防止重新编译。
我的意思是,如果有人反编译我的应用程序,更改源代码(例如跳过if语句,其中检查许可证)然后重新编译,他就赢了。 有没有办法避免重新编译?
答案 0 :(得分:1)
你无法真正阻止重新编译,因为它最终都是IL,并且可以很容易地进行逆向编译。
但是,一些混淆工具使用在C#中无效的属性和字段名称,这意味着重新编译代码是一个地狱。首先必须解决所有这些问题,我试图为我们自己的一个混淆的程序集做一个测试:几个小时后我停止了尝试,这表明它非常有效。
此外,混淆工具会以这样的方式扰乱您的代码,因此很难理解实际发生的情况,这样就很难找到并理解许可证系统。
答案 1 :(得分:1)
在实践中,如果您要分发您的(已编译的)代码,则无法执行任何(有用的)有关去/重新编译的任何内容。你最终会花费大量的时间/金钱来预防"它只是为了发现它无论如何都无法完成。
大公司花费大量资金来防止这种情况(例如Adobe),他们的产品仍然被破解。
你可以像帕特里克建议的那样尝试混淆,但这只会给破解者增加一点障碍,但真的搞乱你的堆栈痕迹。您将被迫存储和管理映射文件以解码(发布版本)堆栈跟踪。