当前位置:编程学习 > C#/ASP.NET >>

c#程序如何防止被破解

公司一款通用软件,卖得挺好,就是轻易就被破解了,很困惑(虽然被破解也是一种好事)
 
软件是自带加密狗的,做了简单的加密。但是破解版本可以绕过加密狗直接进入程序。

虽然公司在程序后面的代码里加入了一些限制,做了一些小手段,但是我还是想请教下:

如何才能让软件不那么轻易就被破解?诚心求解答,我初学,对这方面不熟悉。 破解 c# 加密 加密狗 --------------------编程问答-------------------- 混淆加密 --------------------编程问答-------------------- 代码混淆,加密加壳 --------------------编程问答--------------------    法 律 武 器    --------------------编程问答-------------------- 没事了解下反编译也 不错
--------------------编程问答--------------------
引用 1 楼 a346729576 的回复:
混淆加密


公司特意购买了混淆软件,几千块,但是碍于软件特殊,只能混淆部分。 --------------------编程问答--------------------
引用 2 楼 hjywyj 的回复:
代码混淆,加密加壳


看来加壳什么的,还是要去了解一下…… --------------------编程问答--------------------
引用 3 楼 Lost_Painting 的回复:
法 律 武 器


呵呵,没有,小打小闹的,破解版对公司也有好处。正版价格有些高,破解版可以帮助提高市场份额。

破解版是正版的1/10或者更低,只是感觉这样不是办法,太轻易让破解者获利感觉不爽! --------------------编程问答-------------------- 你叫看雪论坛的高手们情情何以堪? --------------------编程问答-------------------- 技术一山比一山高。
  只有用法律才能保得住。

如果楼主所说的,情愿提高 市场份额 ,
  那可以做个 Express 版本,就如vs 一样.  --------------------编程问答-------------------- 是软件就可以被破解。只要这么做有利可图。 --------------------编程问答-------------------- 代码混淆,加密加壳,网络验证.
没事就验证 --------------------编程问答-------------------- 加混淆  加壳,但是遇到破解高手这些都是浮云 --------------------编程问答-------------------- 呃,因为有了加密,所以才有了破解,最好的办法公开源码就木有人破解了,哈哈、、、开玩笑的

代码混淆,加壳是一种方式,或者把你核心放自己服务器上,webservice调用也行。反正你软件加密强度增加,破解强度也会增加,始终会跟你的软件价值形成微妙的平衡 --------------------编程问答-------------------- “碍于软件特殊,只能混淆部分。”


这部份真看不明白,
你想保密,为什么不全混了,混了以后,会多很多跳转,想直接IL破解也不是哪么容易了。 --------------------编程问答-------------------- 这个东西我也要学习下 --------------------编程问答-------------------- 用加密狗也能被破解吗? --------------------编程问答-------------------- 还是微软大气,先放任破解横行,很容易抢得了桌面市场,然后找几个肥的开开刀 --------------------编程问答--------------------
引用 9 楼 hetengfei_ 的回复:
技术一山比一山高。
  只有用法律才能保得住。

如果楼主所说的,情愿提高 市场份额 ,
  那可以做个 Express 版本,就如vs 一样.


觉得9楼的方法不错 --------------------编程问答-------------------- 疯狂的加密, 整个程序系统都是加密来了的全用md5  看别人怎么破解!
--------------------编程问答-------------------- 几个混淆加密的看雪都有人破.C#防破解本来就是弱项. --------------------编程问答-------------------- 看来加壳什么的,还是要去了解一下 --------------------编程问答-------------------- 新人报道,表示看不懂 --------------------编程问答-------------------- 把配置搞复杂点,多点手动配置
可以考虑软件免费,但服务收费。象那些网络游戏,都是免费下载,然后卖道具。 --------------------编程问答-------------------- 多加几次 --------------------编程问答-------------------- 也只能这样了 --------------------编程问答--------------------
引用 17 楼 wt_jn 的回复:
还是微软大气,先放任破解横行,很容易抢得了桌面市场,然后找几个肥的开开刀

这个是人家的销售策略 --------------------编程问答--------------------
引用 26 楼 love_99 的回复:
引用 17 楼 wt_jn 的回复:
还是微软大气,先放任破解横行,很容易抢得了桌面市场,然后找几个肥的开开刀
这个是人家的销售策略
估计你加钱会解决问题 --------------------编程问答-------------------- 好用就会被破解。只要你们盈利了就好,不要在中国计较破解不破解问题。在中国破解技术是比外国的加密技术更厉害的。 --------------------编程问答-------------------- 只要有破解的价值,加密都不管用。法律才是正道 --------------------编程问答-------------------- 在高手面前。加密就是浮云。。  --------------------编程问答-------------------- base64加密 --------------------编程问答-------------------- 中国人擅长破解,那是不争的事实。 --------------------编程问答-------------------- 中国人擅长破解,那是不争的事实。 --------------------编程问答-------------------- 中国人擅长破解,那是不争的事实。 --------------------编程问答-------------------- 老外擅长加密,那也是不争的事实。  --------------------编程问答-------------------- 老外擅长加密,那也是不争的事实。  --------------------编程问答-------------------- 你有见到过未不被破解的,且有利可图的软件? --------------------编程问答-------------------- 你有见到过未被破解的,且有利可图的软件?  --------------------编程问答-------------------- 有防破解的能耐,

你都可以放弃自己写的软件了.

直接把这防破解的技术, 卖给 EA,等游戏公司 , 或者AutoDesk, Adobe等专业昂贵软件的厂家 --------------------编程问答-------------------- 其实加密防破解很简单。将程序中的一些实时数据简单加密后(如MD5)存入USB加密狗,用的时侯,再从USB加密狗中读取,就行了。一般比教难破,破的成本还不如直接买一套。
不过是通用软件,加密也实在是没有必要。呵呵。 --------------------编程问答-------------------- 补充一下,读USB狗部分可以用C++做成DLL,并且程序必须读狗中的数据,无狗或读出不对,均数据乱让破解者不敢用。试问一下,财务软件,又有几家公司敢用破解版。
--------------------编程问答-------------------- 只要有利润,就避免不了! --------------------编程问答-------------------- 强大的解密技术 --------------------编程问答-------------------- 微软的的windows/office都被破解了,何况你用c#做的winform  --------------------编程问答-------------------- 核心算法部分用C、C++这类的语言改写吧,然后再给编译出来的程序部分片段加个虚拟机壳 --------------------编程问答--------------------
引用 37 楼 gp55_ 的回复:
你有见到过未不被破解的,且有利可图的软件?
星际争霸2 --------------------编程问答-------------------- 以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。 --------------------编程问答--------------------
引用 38 楼 gp55_ 的回复:
你有见到过未被破解的,且有利可图的软件?


我自己都做过,蝇头小利是有了。 --------------------编程问答--------------------
引用 47 楼 xiguayipian 的回复:
以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。

4年了都没人登录。。。 --------------------编程问答--------------------
引用 49 楼 codeeer 的回复:
引用 47 楼 xiguayipian 的回复:以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。
4年了都没人登录。。。


阁下为什么要装作先知的样子呢?

小软基本功能免费,高级功能收费。我承认转化率不高,注册用户里只有1%愿意付费,但是已经足够吸引破解的火力了。这2年没升级了,活跃用户数也下来了,不过每天IIS打出来的access-log还是有几十兆。
--------------------编程问答--------------------
引用 13 楼 flyer_ren 的回复:
呃,因为有了加密,所以才有了破解,最好的办法公开源码就木有人破解了,哈哈、、、开玩笑的

代码混淆,加壳是一种方式,或者把你核心放自己服务器上,webservice调用也行。反正你软件加密强度增加,破解强度也会增加,始终会跟你的软件价值形成微妙的平衡


有理 --------------------编程问答-------------------- 也在关注程序加密技术. --------------------编程问答-------------------- 核心代码放服务器端,做好用户权限系统就行了 --------------------编程问答-------------------- 强化功能特色也是一个途径,人家真要想弄不一定需要破解,找个懂点业务的借鉴截图直接可以仿造一个出来了
--------------------编程问答-------------------- 代码混淆,加密加壳,增加一些网络功能,比如在线升级,获取数据什么的,这样即使单机版被破解了也是不完整的了 --------------------编程问答-------------------- 除了代码混淆,你应该还要做强签名,防止你的程序集被篡改。 --------------------编程问答--------------------
引用 47 楼 xiguayipian 的回复:
以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。

联网是硬伤啊。还不如做成bs呢,不是更方便? --------------------编程问答-------------------- 你叫看雪论坛的高手们情情何以堪?  --------------------编程问答-------------------- www.5dfly.cn
欢迎破解。 --------------------编程问答-------------------- 感觉网络验证可能比较难破吧。 --------------------编程问答-------------------- 只要是人开发的软件,就能有人破解 --------------------编程问答-------------------- 本来破解就是个很正常的现象,防破解也只是相对的。。。 --------------------编程问答--------------------
引用 57 楼 sj178220709 的回复:
引用 47 楼 xiguayipian 的回复:以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。
联网是硬伤啊。还不如做成bs呢,不是更方便?


能否做成B/S也要看软件的功能特点,工具性质的还是C/S的自然一些,不见得B/S的会更方便。 --------------------编程问答-------------------- 好用的东西。。不被破解也被山寨啊 --------------------编程问答-------------------- --------------------编程问答-------------------- 新人学习学习 --------------------编程问答--------------------
引用 5 楼 a_bad_guy 的回复:
引用 1 楼 a346729576 的回复:
混淆加密

公司特意购买了混淆软件,几千块,但是碍于软件特殊,只能混淆部分。


我也觉的要混淆加密,像用友U9这么大的软件,不混淆加密就轻易被我这业余菜鸟给破解了,如果你混淆了或者用VC++,VB写,那我就没有兴趣再去看了! --------------------编程问答--------------------
引用 41 楼 robin_wan 的回复:
补充一下,读USB狗部分可以用C++做成DLL,并且程序必须读狗中的数据,无狗或读出不对,均数据乱让破解者不敢用。试问一下,财务软件,又有几家公司敢用破解版。

别人可以在.net修改你的返回和传入数据,有什么用呢??? --------------------编程问答-------------------- 大神已经有结论
纯c#程序 最终会在内存中释放IL代码  无论是如何加壳 
绝对保护的办法或途径是没有的
无论 混淆 加壳 交叉编译(使用C++写核心dll)
--------------------编程问答-------------------- 1、net自有混淆器
2、第三分混淆器
3、加壳
4、修改加密狗的加密方式,据知加密狗也算是比较安全的 --------------------编程问答--------------------
引用 61 楼 youyiyouyi 的回复:
只要是人开发的软件,就能有人破解

是吗? 谁能帮我把银行网银贵宾版,大众版什么的都给破了别问什么 cs,bs,反正都是程序,帮我破了。 --------------------编程问答--------------------
引用 71 楼 basibasi 的回复:
是吗? 谁能帮我把银行网银贵宾版,大众版什么的都给破了别问什么 cs,bs,反正都是程序,帮我破了。

去找FBI吧,只要你有足够的钱,相信他们会帮你的 --------------------编程问答-------------------- .net不论你怎么混淆,生成的还是IL代码,还是能比较轻松破解的。我认为有以下两种途径可以一定程度上增加破解难度:
1、用一些第三方的工具将.net编译为不需要框架就可以运行的本地代码
2、核心逻辑放到web服务器上,让软件没了干掉这部分就没法运行 --------------------编程问答-------------------- 1、法律武器。
2、混合C++代码。
3、把类、方法、属性等名字起得只有你们才能看得懂的。
4、把验证算法分散,并放在EXE文件中。
5、写优秀的程序才是王道,别人想盗也会吃亏的。 --------------------编程问答-------------------- MD5加密吧 --------------------编程问答-------------------- 1.关键部分使用c或c++写
2.把部分DLL作为嵌入式资源,用的时候再动态载入
3.linq部分编译出来好像挺难看懂的 --------------------编程问答-------------------- 都已经带加密狗了,并不是轻易破解的,如果高手要破你的,你没则,一山还有一山高。这种破解和保护的发展是无止境的,目前用加密狗的方式对单机软件来说已经是最强的保护了,它已经有程序混淆并保护你的关键代码了。
--------------------编程问答--------------------
引用 61 楼 youyiyouyi 的回复:
只要是人开发的软件,就能有人破解
 我也这么认为  --------------------编程问答-------------------- 什么程序哦 发出来 大家测试下呗 --------------------编程问答-------------------- --------------------编程问答-------------------- 微软的东西(windows、VS、office、SQL server...)都被破解了,我们还能怎么办啊,防不胜防! --------------------编程问答-------------------- 听说vc.net托管与非托管混编现在破解成本最高。但完全用托管加非托管。但这样开发软件的公司确实很少。

所以微软应该弄一个c#与c++,c混编的东西。vc.net写托管代码确实蛋疼。 --------------------编程问答-------------------- 楼主看见有用的回帖在给分,我也想学学 --------------------编程问答-------------------- 用maxtocode混淆试试,其实软件加密解密都能成为一门学科了,不是一两句就能说清楚的.

其实在发布软件前,是有一道大关的.就是测试软件的安全程度.
这一般都是通过制作crackme之后发到网上叫人测试而实现的,也通过一个和软件本身安全强度相同而仅保留注册机制的软件,发到网上叫人破解.结果也就应运而生了.

记得当初,我满怀信心的一个软件就被人在12个小时内破解了.哎...幸好是crackme 呵呵 --------------------编程问答-------------------- 放服务器验证。。。。代码混浠加壳。。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 法律武器无解啊 --------------------编程问答-------------------- 用VC++加大破解难度100倍 --------------------编程问答--------------------
看了这么多,我想我的软件要这样做了:

C#写界面,数据库方面的。
C++写一些关键算法,特别是运算量大的,二者传输时,用MD5加密。
软件也要接单片机,信息相互通信验证。(加密狗) --------------------编程问答-------------------- 加密狗也算是比较安全 --------------------编程问答-------------------- 发现很多卖的好的软件根本不用担心破解,特别是企业管理软件,哪个企业敢冒着风险拿来做账,中国很多软件都有个特点——BUG多,测试强度不够,哪天崩了找个维护的都难。

以前在个XX大型集团软件公司,客户上报明显是BUG,竟然还黑心的收取大笔维护费。 --------------------编程问答-------------------- 有难度呢,呵呵呵, --------------------编程问答-------------------- 加密只能作表面,但是还是能破的 --------------------编程问答-------------------- 什么叫“破解”啊?我想这个应该先搞清楚,才好真对具体的问题回答。

如过你认为破解就是提供源代码(或者类似Reflector那类虽然不保证正确但是比较接近于源代码的东西),那么这是一种说法。

但是一般所说的破解绝不是上面这种说法。一般所说的破解是指某个个别的几条指令能够跳过去,通常就是登录验证能够跳过去。这往往就是在会汇编级别跟踪调试一下程序界面上貌似“开始登录”时对应的那几条语句,看看数据写在哪里,程序跳转入口在哪里,然后使用汇编工具修改这个程序的几条汇编语句。

这种破解根本不需要提供什么源代码。 --------------------编程问答-------------------- 如果你说的“破解”就是你想看人家的“源代码”,那么你就着了那些搞c++之类人的“算计”了。

其实不论是java还是.net,都是有其自己的生态环境的,你因为要这种生态环境而使用这种工具,并且使用这种工具而开发出完全不同于传统桌面小程序的大型系统来。不要上了c++程序员的当。 --------------------编程问答--------------------
引用 47 楼 xiguayipian 的回复:
以前做的一个小软件(共享软件),部分算法和数据布在了服务器上,登录验证后才能调用,发布4年了没被真正破解,只有一些仅伤及皮毛的伪破解。

软件地址呢,学习一下 --------------------编程问答-------------------- 不伦如何加密,只要有需求,就会被破解。关键是获得的利益和花费的时间的利益比较。不要迷信什么这加密那加密,包括MD5,全一样,都是可以破解的, --------------------编程问答-------------------- 如果你写的软件是某一个机构推行的,凡是使用的单位必须买,就没人花时间破解了。
--------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 46 楼 cqzengmao 的回复:
Quote: 引用 37 楼 gp55_ 的回复:

你有见到过未不被破解的,且有利可图的软件?
星际争霸2

sc2刚出来没多久就有破解版的,我当时就玩的破解版
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,