c#怎么有效保护代码

问题描述

学c#的时候不知道,到现在才知道c#编译的程序很容易的反编译,虽然自己是菜鸟,写的代码也没有什么好保护的,但是还是想知道怎么能有效的保护自己的程序,算是为以后想想吧。本以为.NETReactor怪强,但是最近听群里的一位大神说经过.NETReactor4.9.9.0加密的程序他们那个小组的人都会反编译

解决方案

解决方案二:
从本质上讲没办法,只要你的程序代码100%地在客户机上运行,人家都能破解。
解决方案三:
.NETReactor5.0暂时还可以不过和2楼说的那样,一般都是可以反编译的,这就是所谓的“防君子不防小人”。论坛里讨论过很多次这样的话题,最终都是一句话:写自己的代码,让别人看去。但,我觉得既然是自己写的东西,哪怕是初级的,我也希望得到保护。所以其实还有一些方案,值得参考的。比如ConfuserEx的源码,这类的加密,可以自己适当修改一些过程(C#),除非是非常熟悉编译的人,否则现成的工具是没法直接反编译的。
解决方案四:
这个反编译其是也不是那么容易的,并不是说你写一段代码别人反编译后就是你原来写的内容,只是根据反编译软件的思维来的,大致没错,但是很多GOTO语句。前阵子也反编译过别人项目的服务和WEB,几万行的代码,全改成你自己的,也是累。所以,“写自己的代码,让别人看去吧”。先把基本功练好吧!
解决方案五:
代码混淆,加壳,用别的语言改写
解决方案六:
不得不说这是一个所有人都纠结过、思考过的问题,同样的,大多数看上去似乎无法解决的问题,最终的状态都是释然的。因为永远不可能有破解不了的问题,关键是看你的程序价值有多高、破解难度有多高、破解获利有多大,这些都是制约破解和反破解的因素。举个例子:我做了一个Test程序,里面只有了了几句代码,没有调用关系,同时故意使用基址来存储变量的值,等等,我精心为破解者制造成功的环境,但很可惜,不会有人来破解,那么我可以宣布,我这个程序实际上破解率为0%从心理学和机会成本上来说,当一个破解者要话费10人工/时×100元来破解一个最终获利不会超过500元的小产品时,他会选择放弃。当想明白这些后,我想任何人都会渐渐释然的,因为防止破解突然变得非常明朗:我只需评估一下我的开发成本和最终获利,然后选择相应难度的防破解手段,似乎就是最终的赢家了。其实一般的中小型项目,代码混淆就足够了;而更大些的项目,相信团队都会花很多功夫在设计全局的交互逻辑上,逻辑复杂了,代码就会产生“直接拿来也看不懂”的情况,配合互联网身份认证、硬件绑定(如加密狗)等,已经足以睡个好觉了。但是最后,共享和开源是一个不得不考虑的方向,开源的获利甚至高于出售,全看你怎么理解。
解决方案七:
关键代码用异步语法(Task,async,await),类使用嵌套的,这样不用混淆反编译出来的一般人也看不懂!
解决方案八:
现在是开源共享的年代,没有什么代码是不能被替代或者共享的
解决方案九:
复杂的系统,给你带注释的源码你也不一定能改的好,何况是反编译的代码开源并不表示不能销售况且你不拿着从网上下载的dll就用吗?有没有源码有什么关系

时间: 2024-09-20 16:50:48

c#怎么有效保护代码的相关文章

强名称(1)使用强名称保护代码完整性

强名称是由程序集的标识加上公钥和数字签名组成的.其中,程序集的标识包括简单文本名称.版本号和区域性信息(如果提供的话).强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的.Microsoft Visual Studio .NET 和在 .NET Framework SDK 中提供的其他开发工具能够将强名称分配给一个程序集.强名称相同的程序集应该是相同的. 通过签发具有强名称的程序集可以确保名称的全局唯一性.强名称满足以下要求: 1

用转换操作符保护代码的安全

摘要:不经意的对象转换常常严重地危害代码的安全.幸运的是,转换操作符允许你根据 实际情况来启用和禁用转换,这有助于避免出现病态行为. 某些对象必须要被转换成 低级形式,反之亦然.例如,使用 std::string 对象的程序员必须将之转换为 char 指针, 请看下面例子: string inf="mydata.txt"; ifstream infile (inf.c_str());// 必须要转成 const char* 同样,PSOIX 程序员需要将 <fstream>

Android高级混淆和代码保护技术

本文讲的是Android高级混淆和代码保护技术,这是一篇关于 Android 代码保护的文章,旨在介绍代码混淆.防止逆向工程的各种高级技巧.大家都很忙,我也赶着回去继续开发我的新应用,因此话不多说,越干(gan, 一声)越好. 开始之前,值得一说的是,本文超过五千字,完全由我开发的「纯纯写作」书写而成,纯纯写作主打安全.写作体验和永不丢失内容,于是本着珍爱生命,我用纯纯写作来写这篇文章. 本文有两部分内容,一部分讲混淆,一部分介绍一些混淆之下的安全手段.基准原则都是:在保证不麻烦到自身 以及 能

可信前端之路-代码保护

可信前端之路-代码保护 莫念@阿里安全 0x00 前言 在信息安全领域,可信系统(Trusted system)是一个让人心动的目标,它指的是一个通过实施特定的安全策略而达到一定可信程度的系统. 在计算机中,可信平台模块(Trusted Platform Module,TPM)已经投入使用,它符合可信赖计算组织(Trusted Computing Group,TCG)制定的TPM规范,是为了实现可信系统目标的而打造的一款安全芯片.作为可信系统的信任根,TPM是可信计算的核心模块,为计算机安全提供

&amp;#106avascript代码混淆综合解决方案-&amp;#106avascript在线混淆器

解决|在线 文章来源:javascriptOnlineObfuscator">http://www.BizStruct.cn/JavascriptOnlineObfuscator Javascript 代码混淆的目的 Javascript 是一种解释执行的脚本语言,主要应用于 Web 领域的客户端的浏览器中:由于 Javascript 解释执行的特性,代码必须明文下载到客户端,并且可以很容易的进行调试,使得 Javascript 代码的保护非常困难: 不同的人对 Javascript 代码

Javascript代码混淆综合解决方案

javascript|解决 Javascript 代码混淆的目的 Javascript 是一种解释执行的脚本语言,主要应用于 Web 领域的客户端的浏览器中:由于 Javascript 解释执行的特性,代码必须明文下载到客户端,并且可以很容易的进行调试,使得 Javascript 代码的保护非常困难: 不同的人对 Javascript 代码的保护有不同的看法:有的人辛苦努力的代码,却可以被竞争对手轻易获得,他们就非常希望能有保护 Javascript 代码的方案,但现有的方案可能无法满足他们的要

C#调用Haskell时的“尝试读取或写入受保护的内存”问题

最近一直被C#调用Haskell时的"尝试读取或写入受保护的内存"问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected memory,C#调用haskell时的"尝试读取或写入受保护的内存"问题),而且困在其中,越陷超深,无法自拔,差点弃用C#解决我们面临的问题. 问题是这样的,只要在Haskell代码中对字符串进行操作,在C#调用时就会引发异常: An unhandled exception of ty

运用加密技术保护Java源代码

Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.本文讨论如何在不修改原有程序的情况下,通过加密技术保护源代码. 一.为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码.Java的灵活性使得源代码很容易被窃取,但与此同时,它也使通过加密保护代码变得相对容易,我们唯一需要了解的就是Java的ClassLoader对

技巧:防范代码的 finalizer() 漏洞 一种预防创建无效类的模式

本文原作者:Neil D. Masson, Java 支持工程师, IBM (本人在拜读过程中添加了自己的一些理解.) 原文地址:http://www.ibm.com/developerworks/cn/java/j-fv/index.html?ca=drs- 简介: 您的 Java 代码有可能会因终结操作带来的漏洞而易受到攻击,了解这一漏洞是如何起作用的,并学习如何通过修改代码来防止此类攻击. 在使用终结器 (finalizer) 来创建对象时,其可能会给 Java 代码带来漏洞.该漏洞是使用