开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 206|回复: 0
收起左侧

[Windows逆向] 易语言逆向_浅谈防破J一

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式   重庆市重庆市

前情提要

最近论坛上出现了很多很多网络验证,今天群里也有人在讨论如何软件安全、防止软件被破J相关的话题,我在这里谈谈我对软件安全的理解。知己知彼百战不殆,要先知道破J的切入点,才能知道怎么样防止被破J。

易语言逆向交流群:500002537

验证发展

1.本地_单密码验证:

也就是设置功能使用密码,输入对应的密码,解锁对应的功能,一个软件可能存在有多个密码。缺点是:密码泄露了就GG了,或者“追码”、“密码字典”相信这些词语大家都不陌生,也有密码本身就作为一种算法key的存在,这种仅仅能防止追码。

2.本地_绑机验证:

这种方式也是本地验证不联网。大家熟悉的提供机器码,计算注册码,或者KEY文件,就是属于此种方式的。早期的这类型验证是,计算出来正确的注册码,然后和输入的注册码进行字符串比较。对于破J方式有很多种,大家熟知的“追码”,适用于这种验证。或者是固定机器码,然后输入对应的注册码,或者直接修改跳转。

这种验证一直在更新迭代,现在也有很多。常见的SE、VMP、TMD等等加密壳都提供了这种验证方式。但是奈何只能通过本地的一些信息来校验,始终无法达到高强度,例如到期时间验证,运行次数验证等等,修改本地时间或者清除一下注册表就清空了。

本地_绑机验证的几种形态:重启验证、注册表验证、文件验证。

名字听着高大上,实际上也就是注册码保存的位置不同。注册码保存到文件里,软件下次启动的时候,校验一下注册码,如果校验通过,则不需要再次输入注册码,就是文件验证。同理,注册码保存到注册表里,在软件启动的时候进行验证,则叫注册表验证。

3.绑定U盘、加密狗验证:

这种验证,我接触到的不多,但是进行一下合理的猜想,他也是本地不联网的,绑定U盘的一些硬件信息,然后计算出来解密KEY,或者放一点数据到U盘里,用U盘的特征进行解密。仅仅是我的猜想,毕竟分析的样本不多,就不说出来误导大家了。

4.网络_博客验证:

这可以说是网络验证的最早形态了。可以用个人博客、QQ空间日志、FTP空间、或者论坛的一篇帖子作为自己的服务器,现在偶尔能遇到样本用有道云日记的。

大家如果没有概念,请想象一下,你将自己软件的版本号、更新链接、公告地址发到个人博客里面,然后软件再用网页_访问(),读取整个文本,然后再来做文本解析,获取到最新的版本号和下载地址等等。在最早的时候,软件获取当前电脑的机器码,去个人博客里面寻找文本,如果找到了,那就是正版用户,没找到,就提示未授权。更有甚者,把软件运行的一些数据,也这样公开化的放到日志里面,例如游戏jz等等。

这是最早期的网络验证:缺点也很明显,破J方式也有很多,例如修改软件访问的博客地址,改成自己的博客地址等等。

5.网络_PHP验证:

到PHP验证红火这几年,才算是真正的踏入了网络验证的时代。代表验证有:飘零、可可等验证,但都还是最雏形的形态,用户购买验证服务之后,需要自己租用一个FTP空间,然后把PHP、数据库等等文件上传并搭建好,然后登录网站后台设置好相关信息,软件初始化的时候,输入网址和对应的KEY进行连接。

PHP网络验证一经面市,可谓是一石惊起千层浪,相对比之前的本地验证、或者网络博客验证,PHP网络验证具备功能完善的用户管理系统、注册系统、充值系统、软件版本更新系统、还有在当时还算不错的防破J的校验。对比之前的本地验证,就像是原始人见到了现代人一样的感觉。

这个时候,也是各种破J出现得最多的时候。例如大家听到的“山寨”、“爆破”、“补码”、“本地”、“中转”,等等都是这几年兴起的名词。

在这里给大家普及一下这些名词,目的是让大家有防破J需求的时候,有查漏补缺的方向。

山寨:早期的PHP网络验证,包括现在的一些网页版验证,在同款验证下,所有人连接的服务器是同一个,但是不同软件的编号ID不同。这也就产生了一个问题,服务器怎么区分这个软件是谁的,只能通过客户Duan提交来的软件ID来区分,那如果软件提交过来的ID是被修改过的呢?这也就完成了山寨。

爆破:指的是修改跳转(修改条件逻辑判断),然后强行走到成功的分支。

补码:用正版用户联网取得一些静态数据,再通过内存HOOK的方式,赋值给寄存器或者变量,来达到非正版用户也能共享这些数据。

本地:指的是修改连接的服务器为本地机器,要实现本地,需要自己写一个服务端程序,需要分析出来通讯算法,并且实现数据处理。

中转:指的是多个用户共用一个正版账号,用正版账号取得数据再分发给各个用户,有点类似VIP账号共享。

加密壳也是这个时候被大量使用,有点种群爆发的感觉,去搜一下当年各位大佬发的加密壳脱壳教程,可以看到有几十种加密壳,但是到现在还能被人所熟知的,也就寥寥几款加密壳。

6.网络_PHP验证 中期:

在初期的时候,PHP网络验证还只能获取一些静态的数据,发展到中期,可以运行一些服务端的自定义函数,例如可可的ks_api。用过E盾的都知道远程JS函数,他的前身就是飘零、可可的远程API。从这个时候开始,破J开始变得有难度了,因为有远程API的存在,用户可以客户Duan提交一些参数到服务器里计算,然后客户Duan再对结果进行对比。

但是服务端的自定义函数代码毕竟不是易语言!对于大部分仅会使用易语言的用户来说,编写起来还是有不小的难度的,这也导致没有完全发挥出他的威力,大部分用户还是停留在官方提供的一些加减法函数,这对于防破J毫无作用。

7.网络_TCP验证:

如果说从本地验证到PHP网络验证是跨越了一个时代的话,那么从PHP网络验证到TCP网络验证也是跨越了一个时代,变为大家现在所熟知并使用的网络验证。

代表验证有:E盾、天盾等等。其中E盾是开山鼻祖,他养成了大家使用TCP网络验证命令的习惯,常用命令:验证_初始化()、验证_卡登录()、验证_读验证返回数据()、验证_云计算()等等。比起PHP网络验证,E盾的TCP验证使用起来更加方便、功能更加全面、并且把防破J的强度也提高了一个台阶。

首先是搭建服务端,不再像FTP空间那样繁琐的搭建步骤,只需要将服务端程序上传到服务器里,并运行起来,就算搭建完成,用时一分钟不到。其次,验证对接也更为方便,只需要填写服务器IP、服务端端口,即可完成对接。并且,每个用户都是用的自己的服务器,并且每个用户的通讯算法KEY不一样,像PHP那样改个软件编号就能完成山寨,彻底成为过去式。

然后,考虑到飘零、可可等PHP验证用户的使用习惯,E盾提供了远程JS函数调用,并且自己开发了云计算函数,用易语言编写DLL,然后客户Duan可以调用服务器里的DLL函数执行代码,让用户真正的发挥出了云计算函数的全部威力。

未完待续....

易语言逆向交流群:500002537

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表