当前位置: 代码迷 >> .NET Framework >> .net混淆解决思路
  详细解决方案

.net混淆解决思路

热度:38   发布时间:2016-05-02 00:03:25.0
.net混淆
vs2008,winform程序,用一个函数验证注册码,函数名为:CheckReg。
请问:
用混淆器混淆之后,
1、是否能很容易地用反编译工具导出CheckReg函数?
如果是,那岂不很容易就被破解者写出注册机了?
2、是否能很容易地把CheckReg函数返回值修改为true,然后再重新编译发布?
3、怎样才能尽量避免被破解?
------解决方案--------------------
在混淆发布前,就函数名称、变量名等全部重命名,改为毫无意义的字母、数字。。最好再弄几个干扰视线的函数。。
------解决方案--------------------
如果你仅仅是根据一个函数的返回值来确定是否继续执行的话,那是很容易被破解的,简单到直接跳过这一步,甚至无需反编译你的验证函数。
------解决方案--------------------
防止反编译:
强名称 
将程序集中的相关Method(方法)编译成Unmanaged(非托管代码) 
混淆可用字符串加密 
名称混淆 
流程混淆 可用XenoCode、Dotfuscator、Remotesoft,MaxtoCode
参考


------解决方案--------------------
用混淆器混淆之后, 
1、是否能很容易地用反编译工具导出CheckReg函数? 
如果是,那岂不很容易就被破解者写出注册机了? 
=============================================================================
经过混淆之后,一般情况下函数名、成员变量甚至类名都会被混淆的,编程无意义的甚至夹杂着一些不可打印字符。因为混淆之后代码变得比较难以阅读了,所以没有一定的功底的话可能连代码的具体意义都看不懂了。所以说可能性是存在的,但是并不是每个人都能做到的。

2、是否能很容易地把CheckReg函数返回值修改为true,然后再重新编译发布? 
=============================================================
可以做到,但是要分析哪个函数是用来检查注册序列号的。只要把这个分析出来了,如果再对IL代码有些了解就可以编译重新发布了。

3、怎样才能尽量避免被破解?
===============================================================
通常是几种方法结合使用,比如加壳、混淆、加密等等。

但是,像微软、Boland、Oracle这样研发力量雄厚的公司的产品都能被人破解,所以避免是不可能的,只是可以尽可能提高破解的门槛而已。
------解决方案--------------------
我认为混淆不是好方法,你应以服务为重点,如果你真的要给人测试的话,最好是减少一些功能,但是功能的代码是在试用版本是不提供的,加密或混淆的软件会带来的后果就是,肯定被破解的,因为高手都是想挑战有挑战的反汇编或反编译工作,我就是这种。。。况且混淆后会使你软件运行速度对应下降了,有用吗?
如果你开源或缺少某些功能我们肯定不看你的软件,因为破解后也没人需求
------解决方案--------------------
混淆是欺骗外行的,对编程高手是没用的

凡是软件的东西,理论上都是可以破解的,除非采用特殊硬件加密,或采用网络认证(局限于你的软件必须取得该网站认证才能正常运行)

我们能做的,就是提高破解的难度,增加破解成本,如此而已
------解决方案--------------------
绝大部分加密软件、混淆软件,本身就被破解了,这就说明了问题

微软公司想了这么多反盗版方法,结果还是盗版和正版一样用,这也说明了问题
------解决方案--------------------

------解决方案--------------------
学习了
------解决方案--------------------
路过,UP一下
------解决方案--------------------
用混淆器混淆之后, 
1、是否能很容易地用反编译工具导出CheckReg函数? 
如果是,那岂不很容易就被破解者写出注册机了? 
============================================================================= 
经过混淆之后,一般情况下函数名、成员变量甚至类名都会被混淆的,编程无意义的甚至夹杂着一些不可打印字符。因为混淆之后代码变得比较难以阅读了,所以没有一定的功底的话可能连代码的具体意义都看不懂了。所以说可能性是存在的,但是并不是每个人都能做到的。 

2、是否能很容易地把CheckReg函数返回值修改为true,然后再重新编译发布? 
============================================================= 
可以做到,但是要分析哪个函数是用来检查注册序列号的。只要把这个分析出来了,如果再对IL代码有些了解就可以编译重新发布了。 

3、怎样才能尽量避免被破解? 
=============================================================== 
通常是几种方法结合使用,比如加壳、混淆、加密等等。 

但是,像微软、Boland、Oracle这样研发力量雄厚的公司的产品都能被人破解,所以避免是不可能的,只是可以尽可能提高破解的门槛而已。
------解决方案--------------------
引用:
我认为混淆不是好方法,你应以服务为重点,如果你真的要给人测试的话,最好是减少一些功能,但是功能的代码是在试用版本是不提供的,加密或混淆的软件会带来的后果就是,肯定被破解的,因为高手都是想挑战有挑战的反汇编或反编译工作,我就是这种。。。况且混淆后会使你软件运行速度对应下降了,有用吗? 
如果你开源或缺少某些功能我们肯定不看你的软件,因为破解后也没人需求 

------解决方案--------------------
盗高一尺,魔高一丈,事 没有绝对
  相关解决方案