Beh*_*der 13 .net c# cracking decompiler
我真的很难过,因为几天前我们推出了在.Net 4.0(桌面应用程序)中开发的软件.3天后,它的裂缝在互联网上可用.我们试图保护软件不受此影响,但不知何故,人们逃脱了它.
下面是场景:当应用程序第一次启动时,它会与Web服务器通信并检查用户传递的凭据.如果凭据正确,则软件会将值保存在注册表中,将MachineID发送回服务器并将其存储在数据库中.
现在,黑客用"return true"取代了Server通信.声明(我用Telrik JustDecompile检查过).他已经在互联网上上传了破解的软件.
现在,以下是我的问题:
1-如何确保.Net应用程序不会被破解?
2-黑客现在知道我的代码,因为他已完成修改.我应该采取什么措施?
3-我在网上看到 - 混淆器.但黑客知道我的代码该怎么办?
4-我可以使用任何其他专业提示,以避免软件破解?
5-我不确定但这些反射器软件是否也能用敏感数据反编译App.Config?
Sco*_*ain 16
1-如何确保.Net应用程序不会被破解?
如果计算机可以运行您的代码+黑客可以在比您更高的权限级别运行自己的代码,那么没有什么可以100%防止您的应用程序被破解.即使他们只是可以访问可执行文件而不是目标平台,他们仍然可以逐步完成并模仿目标平台将要执行的操作,并弄清楚保护是如何完成的.
2-黑客现在知道我的代码,因为他已完成修改.我应该采取什么措施?
完全重写身份验证部分,因此他们必须从头开始,但他们会再次获得它,这只是一个问题的长短.
3-我在网上看到 - 混淆器.但黑客知道我的代码该怎么办?
由于他们有非混淆的代码,jinni已经不在瓶子里了.除非你彻底重写软件所以你必须从头开始,否则你无能为力.混淆器不会阻止一个坚定的攻击者,他们只能阻止它将二进制文件从他们手中夺走.
4-我可以使用任何其他专业提示,以避免软件破解?
我所看到的唯一一个在任何时间段内远程延迟的复制保护是Ubisoft对刺客信条:兄弟会所做的事情.他们用游戏磁盘加密了它的级别,它必须在需要的时候从互联网上下载解密密钥(这就是让二进制文件不受他们的影响).但这并不是永远有效的,最终黑客确实将这些级别解密,并且完全破解了.这种方法正是我认为在没有法律参与的情况下花费最长时间才能到达的方法(见底部的第2点)
5-我不确定但这些反射器软件是否也能用敏感数据反编译App.Config?
所有反射器软件需要做的是查找加载App.config的部分并读取默认值.有没有存储在电脑上的信息不完全掌控安全的地方.如果它在计算机上,则可以读取.如果可以读取,则可以进行逆向工程.
我能看到的防止盗版的唯一真正解决方案是两种选择之一.
这个人永远不会得到你的应用程序,它是从你控制下的服务器流式传输的,他们永远不会看到二进制文件.您发送它们的唯一方法是它们驱动UI所需的信息.这是所有MMO工作的方法.人们可以对您发送到用户界面的内容进行逆向工程,并模仿服务器上正在进行的逻辑,但是他们永远无法直接看到它正在做什么,如果您的软件足够复杂,那么攻击者可能无法做到这一点.重新创建服务器端代码.这种方法的缺点是你需要托管服务器供你的用户连接,这将是一个重复出现的成本,你需要一种方法来重新发动.通常,此方法称为"富客户端"或"瘦客户端",具体取决于客户端执行了多少处理以及服务器端执行了多少处理.请参见" Microsoft应用程序体系结构指南,第2版 "的第22章.具体来说,我正在描述图4和图5中所示的内容
第二种选择是,无论您销售软件的人是谁,都要签署一份不分发软件的合法合同(不是EULA,必须由客户签署的实际合同).在该合同中,对泄露软件的人员进行大额罚款,然后用购买软件的人独有的指纹来捣乱您的程序,以便在程序泄露时您可以看到是谁做的.(这是供应商Hex-Rays用于反汇编IDA的方法.快速谷歌搜索无法打开任何比6.1更新的破解版本,它们在6.3).这种方法不会阻止盗版,但它可能会阻止副本首先泄露.这也可以让您恢复与首先泄露的程序相关的一些损失的成本.一个问题是你需要放置大量的指纹并且它们需要是微妙的,如果攻击者可以获得两个程序副本并且可以比较两者之间的文件他将能够告诉识别信息是什么并且只是放入他们想要的东西,这样他们就无法分辨出他们是从谁那里得到的.实现这一目标的唯一方法是放入许多红色鲱鱼,不仅可以被剥离或随机化,还可以使识别代码对于运行软件不重要,如果他们不必努力破解它他们更有可能留下它.
更新:在重新审视此答案以链接到另一个问题之后,我想到了实现#2解决方案的简单方法.
您需要做的就是通过一个obfuscateor运行您的代码,并让它为您销售软件的每个人重命名您的类(我仍然会让他们签署许可协议,而不是单击EULA以便您可以强制执行下一部分) .然后创建一个混淆映射的数据库,当你在互联网上看到一个泄露的副本时,你只需要在项目的任何地方找到一个类,在数据库中查找它,你就会知道是谁泄露它并知道你需要谁寻求法律赔偿.
Mar*_*ell 15
1:你做不到.你可以混淆,但防止这种情况的唯一方法是:不要给任何人exe.看看公司在这方面花了多少钱; 他们也没有解决它.
2:混淆,将有助于一点点,虽然它是模糊处理和去模糊处理之间的军备竞赛
3:为时已晚,无法撤回并撤消,但混淆将在未来减慢它们的速度
5:app.config通常非常易读; 你在这里做的不多; 如果密钥在您的应用程序中并且因此可获得,则加密将仅使它们减慢一点