出版软件
我正在开发一款软件,我想最终出售它。现在我很乐意与有兴趣使用它并测试它的人分享它,也许在网页上作为 alpha 版本。但我不希望人们窃取我的代码。代码混淆器可以完成这项工作吗?我是否也应该对它或类似的东西进行版权保护?我真的不知道从哪里开始,所以任何帮助都会有所帮助。
I'm working on a piece of software I would like to sell eventually. Right now I'm fine with sharing it with people that are interested in playing with it and testing it, perhaps on a web page as an alpha version. But I don't want people to steal my code. Will a code obfuscator do the job? Should I also copyright it or stuff like that? I really have no idea where to start, so any help will help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的程序被编译为托管可执行文件(例如 .net),并且您不希望人们窥探您的代码,则可能需要对其进行混淆处理。如果您非常担心人们窃取您的代码,为什么不仅以邀请的形式发布 alpha 测试(人们通过留下评论、姓名、电子邮件、电话号码、地址等来请求邀请,然后您决定是否允许他们)。这样您就知道谁下载了您的程序,并且可以更轻松地跟踪其使用情况。
编辑:我在此处找到了一篇关于软件许可的精彩文章,您可能也想阅读它们。
If your program is compiled as managed executable (such as .net), you might want to obfuscate it if you don't want people poking on your code. If you worry so much about people stealing your code, why not release the alpha testing as invitation only (people request invitation by leaving comment, name, email, phone number, address and so on and you decide whether to allow them or not). That way you know who download your program and it would be easier to track its usage.
Edit: I found a great article about software licensing here, you might want to read them too.
如果您只发布可执行文件,唯一可以做的就是对其进行逆向工程。
If you publish just your executable, the only thing that could be done is reverse engineer it.
回答您的两个问题,具体是关于窃取源代码的:
如果您使用的是托管语言(例如 C# 或 Java),则可以使用打包程序(例如 Themida 或免费的 MPress)将可执行文件打包到加密的包装应用程序中。这将减慢攻击者使用 .NET Reflector 等工具的速度,而且在我看来,这是一种比使用混淆更易于维护的方法。
To answer your 2 questions, which are specifically about stealing source code:
If you're using a managed language such as C# or Java, you can use a packer such as Themida or the free MPress to pack your executable into an encrypted wrapper application. This will slow down attackers using tools like .NET Reflector, and IMO is a more maintainable approach than using obfuscation.