一点关于破解的东西,以后整理整理

时间:2021-02-06 04:05:49

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

 


1.   读完注册码后不要立刻检查注册码,因为读注册码肯定用到系统调用,系统调用很容易下断点。  
   
2.   两种办法处理在内存的注册码,  
      一种方法是在检查前分散隐藏注册码,这样他们无法从内存中搜索到注册码出现的位置,因为他们会在注册码出现位置附近下断点。  
      还有一种方法是正好相反,你可以在读到注册码后,立刻将注册码在内存的各个位置做大量拷贝,这最多浪费一些内存。16Bits的注册码做10000份拷贝也只用160K内存。注册码的内存位置尽量不要连续,这样可以干扰他们对内存读取下断点。不要立刻检查注册码,10000份拷贝你只要偷偷随机找一份用就行了,同时可以不断生成一些假的读取内存注册码的调用干扰破解者。这种方法对程序的性能影响微不足到,只是浪费一点内存。  
   
3.   程序多处做CRC校验文件大小检查,发现不对就退出。一定要多处检查,不能只检查一次。  
   
4.   用inline函数将注册部分分成许多小块,分散到程序各处运行。检查结束不要给任何提示,在程序中做一个标志即可,提示信息要延迟一段时间出现。不要让破解者通过提示信息找到标志位置或检查结束位置,否则前功尽弃。  
   
什么算法无所谓,最终目的就是让破解高手的作用发挥不出来。和古代海岛藏宝一样,你只要把检查痕迹很好擦掉分散,破解高手的用处就发挥不出来。破解高手玩的Crackme就是保险箱,他们是开锁高手,目标明确总能打开,不行还可以用炸药。但到海盗的藏宝地点,任何开锁高手都没有用。  
   
这种方法用的好的结果是你容易创造检查注册码的方法,自我创造发挥的余地很大,而对破解者会很麻烦,他搞不清楚你在干什么,而且你更换算法也很容易。而用复杂的加密算法通常的结果是你麻烦,破解者很容易,因为各种加密算法都已经研究透了,而且用复杂的加密算法立刻暴露你检查注册码的位置,为暴力破解提供了方便。