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