网络验证破解 by混世魔王
通过IRIS监听验证过程,发现他的验证过程基于http协议,服务器端为asp,可以用比较简单的方法实现模拟验证服务器
他的详细验证过程如下
软件启动
请求http://www.example.com/getver.asp
返回字符串 3.45 (比较软件本身版本号,=3.45则不提示升级)
获取硬盘物理序号并按照一定的规则转换成硬件码 (结果为212487602000,我的硬盘生成的是这个硬件码)
注册表读取用户名和注册码(已注册用户的用户名和注册码被写入注册表)
从注册表未能获取用户信息和注册码,提示注册,已注册则跳过下一步。
输入用户名netx注册码441363-112460-365001-427305,点击注册
软件提交数据到服务器验证
请求http://www.example.com/gen.asp?h ... 12460-365001-427305
合法验证,返回程序运行许可字串示例:08f08f08f08f08f09f08f09f09f07f02e02e02e02e02e.47e13f09f14e13e13e13e13e13e13e13e13e13e13e12e08f08f08f08f08f57f17e13e26f23f23f23f23f23f23f24f24f24f23f20f22e
该字串随软件运行时间,用户名变化而变化
软件启动完成,各个功能正常使用。
不合法返回:error!
软件各个功能不能正常使用。
已有合法注册码一组,现需要多台机器使用。破解方法如下:
修改系统system32\drivers\etc\目录下的hosts文件
增加解析记录
127.0.0.1 localhost
10.9.163.1 www.example.com #将验证服务器域名解析到本部门web服务器10.9.163.1 或者如下
#127.0.0.1 www.example.com#将验证服务器域名解析到本机
在本机IIS根目录或者web服务器根目录下建立getver.asp,gen.asp
getver.asp内容为3.45
gen.asp内容为
<%
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET","http://xxx.xxx.xxx.XXX/gen.asp?h=212487602000&u=netx&c=441363-112460-365001-427305",false
'xxx.xxx.xxx.XXX为www.example.com的真实IP,因为该域名已经被转向,所以此处需要使用真实IP
Http.send()
Response.write Http.responseText;
set http=nothing
%>
至此,运行软件,软件已经被欺骗到你指定的服务器进行验证,不论你的硬件id,和用户,注册码如何,都能通过自己的验证服务器获得合法的运行许可。
难度大一些的网络严整基本的本地验证,获取的许可字串也没有经过严格本地的校验,直接应用于软件各个功能模块的许可判断。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课