本帖最后由 等疯来 于 2015-3-20 10:44 编辑
最近本打算发布新软件,发现很多人都说注册宝有通杀特征码,一开始我还不相信,写了一个软件给群里的人试着破J下,果然不到半小时整个软件就被破J,所以最近疯狂学习了下破J方面的内容,找群里的朋友拿来了通杀器的源码好好研究了一番。
注册宝通杀特征码
8B5424048B4C2408
改mov eax,0 ret
发现所谓通杀修改的是程序内存并非ZCB.DLL内存,理论上只要修改部分代码这个特征码就失效了
于是简单的写了段简单的代码测试下
未使用通杀特征码前执行正常
使用通杀特征码后发现代码里的如果判断出现错误
故得出结论:这个特征码是易语言系统核心支持库->流程控制里的“如果”命令的特征码
再次说明验证中简单的使用“如果”命令来进行判断是多么不靠谱
相关分析就暂时到此为止,最近也正在为破J的事情头疼。下面再简单介绍几种可以防止这种傻话式通杀破J的方法
一、 校验码判断。这个不用多说,官方提供的防破J功能。相信很多和我一样被破J的人一开始也没有去使用这个功能。通杀器采用爆破的方法绕过登录,自然也就无法正常获取到校验码。关于校验码的使用官方应该有出过一个帖子进行说明,不懂的可以在论坛里翻找一下看看
二、 如果判断。既然修改的“如果”部分的代码,那么我们只需要在判断是否登录成功前加上一个如果返回,那么只要使用了这种特征码通杀的方法就会失败(当然还要进行加密,怎么加密就不说了,不明白的可以跟帖)
三、 到期时间判断。如果是使用上述特征码进行爆破的话,那么取到期时间是错误的,一般返回的是6位数的错误返回码(如994041)。只要我们再对到期时间进行进一步验证判断,那么也可以检查到是被通杀器修改
四、 内存判断。这种方法说起来和应用都比较复杂,但还是有必要提一下。通过检测程序内存字节是否发生变化来判断程序是否被修改,也可以通过搜索修改后的特征码来确认是否被修改
五、 使用默认界面。原因很简单,因为默认界面里的相关判断流程是官方DLL里处理的,并不是调用易语言的命令,所以,这个通杀特征码是无效的
六、 使用其他语言。道理很简单,竟然是易语言核心命令特征码,当然只能秒杀易语言程序,换其他语言就无法通用了
七、待补充。。。
大家可能觉得防止爆破有很多方法啊,怕的就是被人山寨 。下面再简单介绍几种防止山寨思路。因本人在这方面也只是菜鸟,此文只为抛砖引玉,希望更多朋友加入研究学习软件安全相关内容,也希望通过本篇帖子能让看到的人开阔思路,领悟更多的防破方法及技术,提高软件设计的安全性能
一、 安全码软件编号加密。这个是最基本的,没有加密字符串安全系数为0
二、 安全码软件编号分割。这个方法之前也有具体介绍过,http://bbs.125.la/thread-13778410-1-1.html有个朋友回复非常好,思路基本是这样:其实如果你的软件里面有一些 网页访问 或者一些字母 代码的时候 完全可以把其中的某个字母或代码 用 安全码 或者 编号的MD5中间的某个字母代替 多用这个方法 这样就算 别人山寨了也不能正常使用软件
三、 山寨再山寨。这个方法其实很简单,既然他能山寨你的软件,那你能不能再山寨他山寨的软件。说得有点绕,简单的说,就是在原本只在初始的时候调用了AppInitialize,那么能不能在登录的时候再调用一次AppInitialize再次初始化呢,通过实验发现是可以的,官方并没有规定这个函数的调用次数及调用位置,甚至你可以一个时钟无限次调用AppInitialize,这样就再也不怕山寨 。
四、 充值判断法。官方其实提供了一条判断是否山寨的函数:API_Recharge 。如果你使用一张过期卡进行充值,那会返回值是304101:充值卡已经使用过 。如果软件被山寨,那么返回值是304041:充值卡不存在 。通过返回值是不是可以很简单进行判断
五、欢迎补充。。。
|