小白谈谈我对Net程序编写注册模块被大神破解的一些问题
下面仅仅是我的观点,我没玩过逆向,我只是小小的开发人猿...看到一篇针对Net破解的文章
https://www.52pojie.cn/thread-777559-1-1.html 一款.Net程序算法注册机编写详细教程其实我想针对写这软件的作者说:好醉啊{:1_926:},知道会用DESDecrypt 加密还会加壳,难道就不知道Net很容易脱壳而且很容易找到DES的加密算法找出对应的Key和VI?DES的算法就摆在那里,网上已查就一大堆,不对这做手脚在怎么弄也是无用功,要想做好这点,那就必须将注册码和功能绑定在一起,也就是说你:破解了,OK,功能虽然能用,但是因为你是破解的,注册码肯定是假码(或者压根就是把==改成!=),因为注册码和功能绑定在一起,通过假码出来的功能肯定和正确码出来的功能不一样,这样使用的功能也是一大堆BUG错误,让你知道了全部代码你也不能完美的使用正版的功能,这才是完美的实现离网应用程序最强大的注册加密软件.....
第一防线:整体代码保护,是目前最为流行的方式:混淆(超级建议,让破解者多耗点时间)、加壳(推荐,但是目前超多脱壳的,也有强壳,比如DNGuard HVM)
第二防线:混淆使用假码找到注册点(对弹出的框字符串和注册的方式进行方法名和变量常量名混淆加密(一般这没什么用,有经验的人还是能快速找到的,但是能阻止很多人找到关键点或让很多人在这块浪费时间)
第三防线:对你的功能和你的正版秘钥混合在一起,比如用到的正则表达式掺和注册码某一段字符串或某一个字符串掺和,一些方法判断,一些反射技术判断等等都和注册码掺和在一起,让假码暴力破解的都不能正常使用功能(因为破解者即使拿到了代码也只能看被混淆的代码,还要找到这些正常的功能该和正确的码的关联,也就是破解者还要懂开发!
第四防线:前面的防线都被凸凸了??难道这软件只能真的被人使用了?我们还有最后一道防线呢,我相信你绝对是将注册码保存到注册表或某个缓存文件保存的吧,那行,你保存他的假码,你做个不规则的定时的,隐藏很深的代码,专门联网判断,或者定时检测注册码,当注册码判断为假,那么你这隐藏很深的代码就可以专门去扰乱你这软件的功能的正常使用,即使这软件显示已注册的。(这也叫暗桩,屏幕录像专家应该就是这样的吧)
终极防线:纳尼??上面的都被Net开发兼逆向大神看穿了??辣也不行啊,最后你就只能联网了,防止账号多地登陆(有些破解者替换正版的Cookie到程序中已达到免登陆),核心功能服务联网处理下发,HTTPS加密和传输信息sign非对称加密传输,不定期联网检查,谨记千万别在程序内用if(xx==yy)这种判断是否通过了,太out了....
(上面说了这么多其实就是说明一点:最为强大的加密方法不仅仅是你用了什么强大的壳去混淆加密你的程序,而是我们写出这些程序的人该如何运用我们的技术来加固我们的软件)
上面的也可运用于其他C、C++易语言【效果更佳,因为看不到原始代码,只能转成汇编分析】、Java、Python等等其他可编写的桌面程序
破解软件的核心精神是[逆向]技术的交流、分享和讨论。
以上只是自己的一些想法,可能并不是很有有道理(因为我很少接触逆向的技术),可是现在感觉大部分写代码的开发人员在保护软件这块通常的想法就是想着如何通过很强大的壳或很强大的混淆软件去保护代码,而不是通过自己所掌握的开发手段让程序变得更加的安全。 找到新的经济增长点和盈利模式,放弃软件收费的老方式。
让用户愿意用我们的软件,让玩资本的那些疯子愿意为软件烧钱。
羊毛出在狗身上,让牛来埋单
A-new 发表于 2018-8-5 10:21
终极方法是试用阉割版,正式版加水印
这个才是正道,正版安装包都不是轻易拿到的 很抱歉 帮不到你I 终极方法是试用阉割版,正式版加水印 主要很少开发人员在开发时就考虑被破解,所以很少都是只判断1次 慢慢学习还没理解你这么高深的地方 慢慢学习咯 我建议楼主了解一下白盒加密。 加油...你可以的
页:
[1]
2