之前在52论坛了解到易语言所谓的push大法,虽然看都不懂,但大概知道原理。
因为易语言执行命令前都是先启动窗体,然后进行命令。只要能push到要执行核心命令的窗体,就能破解。
虽然不是很明白吧,但是觉得好厉害。
对于易语言写的东西防破解和加密,虽然没怎么关注,这些年来多少也接触了些。(平时都是加个强壳了事)
这两天忽然有点兴趣,就好好看了两眼,太复杂的不做研究,只搞那种几行代码就行之有效的方法。
第一个,强壳。
这个最省事。经常上52就知道,其实强壳还是能屏蔽不少中新手破解者。你只需要5秒钟套壳,他可能需要几天来破。对于熟练的高手来说,还是没用。不过已经很好了,简单方便。四大猛壳 zprotect tmd vmp se
如果对壳感兴趣的,可以百度一下《新老压缩/加密壳大全洪雨收集推荐》这篇文章。
第二个,加花。
花指令,当年用途最多的还是欺骗一下杀毒软件进行免杀。虽然可以通过内存的形式进行破解,不过现在的人还是喜欢脱壳爆破,做注册机的人越来越少,所以加花还是很有用的,至少给破解找找点麻烦也是好的。
洪雨建议自己写一些无用运算,进行源码混淆,写的多了,甚至可以模块化,直接调用来隐藏核心代码。如果觉得麻烦,用易语言自带的加花也ok。
简单数学计算,“如果”,“如果真”,“判断”,等命令进行混淆。常量中多加入“注册码”“激活码”等相关字样,结合计次循环,判断循环等进行综合混淆运算。这样虽然生成的文件会变大,占用一定的内存,不过还是很有效果的。
第三个,敏感内容加密。
注册码,效验码等不要进行简单比对,要处理后再比对,比如效验码为123456,那么先将123456进行md5加密后,比对加密后的结果。取反,异或等都可以。
不要直接信息框。信息框的内容是很容易追踪查询的。最好新建窗口,将信息分开再组合进行显示。或者直接做成现成的图片,进行提示。
关键文本要分开写,比如“A21B40C81”,要写成“A”+到文本(3×7)+“B”+到文本(5×8)+“C”+到文本(9×9)。这样就不容易被追踪到。
第四个,避免用判断命令
不要用“如果”命令,这个命令指向唯一,要用最好用“判断”。洪雨这里建议最好不用判断的命令,换一种写法。
计次循环首(到数值(注册码是否相符()),)
| 注册成功=1
|计次循环尾()
注册码是否相符()返回一个逻辑型,“真”到数值是1。这样计次循环就会运行,注册成功就等于1,如果是假,那么到数值就是0,计次循环就不运行,注册成功就不等于1。
用这种方式进行判断代替其他判断命令。
第五个,效验自身
通常我们效验自身的大小和md5。
先说说大小,通常我们加壳以后,软件大小都会有所改变。用upx这种压缩壳,通常能压缩40%以上。脱壳后软件体积变大。这样我们写软件的时候,在软件运行进行一个判断,效验自身大小。比如软件加壳后体积为1024,那么我们就写成,如果体积大于1024就退出,或者就删除自身。
这里有一个死循环逻辑,如果我们编译出来,加壳以后,体积是1024,那么我们再写入判断代码,再加壳以后,体积就会有变化。这怎么办?
这里就用大于小于来取一个模糊值。比如软件原来1500,加壳后1024,那么我们就判断,如果软件体积大于1300,那么就退出,即可。
第二种是效验自身md5。这个就更加严格,哪怕你软件改动一个字节,软件md5也会变化。效验方法同理,不过也同样会遇到死循环逻辑。这个就不能取模糊值了,要另想办法。通常的做法是,将md5效验硬写到软件要调用的dll里。这样就既不会改变软件自身,也能做到效验的目的。
第六个,暗桩和伪注册
暗桩就是掩藏很深的效验。平时不触发,只有满足一定条件后触发。说一个简单的,比如软件使用次数有一定的概率触发暗桩,这个比率可以是1/30,不一定。这样就让破解者需要大量尝试才能触发一次,增加破解困难。再比如,记录使用天数,只有使用10天以后才触发等等……暗桩的形式要发挥想象,和多积累。
听说有的软件甚至设置上百个不同的暗桩……
再说说伪注册。洪雨觉得这是一种营销方式,也是对自己产品的充分认可。有的软件自身做的很好,功能很棒。然而开发者会设计一个很笨拙的验证放在那里。让破解者很容易就破解成功。
然后呢,当使用破解版的人用到一定时间的时候,暗桩才触发。比如货物存储软件,当数据库达到一定大小的时候,自动锁数据库。重要的数据被锁了,使用者只有像开发者购买软件,才能得以解锁。
再说一个例子,比如视频录像专家。这款软件我从10年前就在用。真的很好用。
这款软件的每个版本几乎都有破解版,但是至今我都没有找到一个真正的完美破解。前半个小时,或者一个小时的录像,没有任何水印,但是一但超过半个小时或者一个小时,视频就会显示“未注册”字样和软件的水印。无数的破解高手都尝试过,但是因为暗桩实在太多,所以市面上所有所谓完美破解的,其实都不完美。
这样反而让这款软件家喻户晓。因为软件做的确实不错,而且如果你录制视频小于半个小时,是可以正常使用所有功能的。
软件知名度上来了,价格又不贵,所以至今销售都不错。
第七个,反调试
这个不做讨论。洪雨上面说了,太复杂太麻烦的不与考虑。说说原理吧。其实就是检测一些反编译软件的运行。经常监控的不准确,有时候还不兼容导致死机。
有的是监控进程,通常软件的父进程都是exploer,如果你是通过od这样的工具载入的,父进程就变了。
第八个,洪雨自己的想法,也不知道对不对。
看书上说,加壳不是很安全,就算强壳也是如此。所以推荐直接一个upx压缩壳加上自效验,再加一些暗桩。
洪雨前些天写了一个加密压缩壳,没啥技术含量,但思路很有趣。主要思路不是加密算法,而且对接。
洪雨这里讲解一下整体思路。首先将源软件进行防破解处理。加壳,什么壳都可以,甚至内存加密资源加密的都可以,自效验,暗桩。
然后将软件进行字节集二次加密,对接到头文件后面。
这个头文件的功能就是解密源文件然后写出并运行。这个头文件本身做加花,自效验和暗桩。
换个说法,洪雨写的这个加密压缩壳,是一个万能二次加壳软件。无论怎样,至少给软件再次加设了一道防线。
发表评论: