[摘要]假设你的注册部分有300行,你可以分成30个inline函数调用(一定要inline),func1(),func2()... func30(). 将他们随意放到程序的各个部分,一定不能放在一起(自己...
假设你的注册部分有300行,你可以分成30个inline函数调用(一定要inline),func1(),func2()... func30(). 将他们随意放到程序的各个部分,一定不能放在一起(自己能找到就行了)。不要用Memcpy等常用系统调用拷贝注册码,近可能自己写,像Memcpy很好写,性能差点无所谓。经过编译后inline函数展开,注册部分和其他代码混在一起,他要写出注册机就像大海里捞针,在几十万甚至上百万汇编代码里找出有用的注册部分。另外注册码也不要放在一起,假设你的注册码是12位,千万不要用一个12位的数组放注册码,你可以在程序的不同位置定义12个全局字符变量,每个放一位,这样注册码在内存就不连续了。最好再加密处理一下(简单的字符异或就可以),验证时再解密。
非技术方法在中国几乎没有用,这么多有钱有实力的公司的软件都被盗版,你个人还能有什么办法。
忘了说了,只要破解者找不到你验证结束的地方,暴力和Loader破解也没有可能。
很重要的一点是不要用连续内存保存验证用到的变量,尽量将用到的验证临时变量分散定义在程序的不同处,再在验证中,不断转移一些值到其他变量中,对付暴力和Loader会比较有效。
没有必要用复杂的加密算法,更容易成为追踪的目标。只要你将注册部分隐藏的足够好,也没有漏洞,你花1天写的加密算法,破解者可能会花100-1000倍的时间破解。大部分人都会放弃。
你将注册做在一起,就像将你的财宝放在现代保险箱里,虽然非常坚固难以解密,对于开锁高手两分钟就打开了。
而古代海盗用的方法是将财宝埋在海岛上,这样没有藏宝图,对应高手和低手都只有一条路,拿一把铁撬挖,可能要挖一生。程序有那么多代码,你将注册部分藏在里面,藏的好就如同将财宝埋在海岛里。那些所谓的Crackme只是给高手玩儿的现代保险箱而已,用原始的方法可以达到同样效果。
这是农民的方法,我也不会汇编,高深的反破解都不会。
程序一出来就被0day破解了,而且被暴力破解了两次,为了对付0day, 只好想了这么一个农民的方法,结果发现简单的东西比复杂的更有用,古老的方法似乎比现代的更有效。
对于一些比较专业的破解者
采用上面的方法也是很有效的
但是,还是要避免一些低级失误
例如:
不要在内存中直接出现注册码和明显的注册码比较部分
不要给用户太多的有关注册验证的信息
不要接收到注册码后立刻就进行比较,在软件的不同功能
处实现验证时的好处还有就是不会立刻执行到验证代码
注册码可以分多次验证可以分成几部分验证可以分成几层验证
验证时,可以尽量多执行一些无用的操作,加上一些象递归之
类难于调试追踪的代码,但在其中要穿插实现软件功能的代码
否则人家直接就跳了过去…………
反正就是越不引人注意越好:)越乱越好
……………………
这些在一般的破解教程里也都会有的
//如果能找到几个不常见的加壳软件最好!:)
只要能避免这样的低级错误,
再加上上面的那些不太难实现的方法
可以应付一般水平的破解了//因为大家都怕麻烦:)
只要这些措施得当,一般的破解者都会知难而退:)
不过如果你的软件太好了………………
你还是找一个专业人士与你一起写吧,很麻烦的:)
btw:我只是以前对破解有些兴趣,所以找过些资料
懂的其实不多
而且没做过破解的事,不要误会我的人格哦:)嘿嘿
(出处:viphot)
网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。
关键词:共享软件如何防盗