本帖最后由 Culaccino 于 2020-2-17 13:42 编辑
这是接着我第一篇帖子继续发的https://www.52pojie.cn/thread-994441-1-1.html ,最近刚好要用到pdf的软件,就想起我上次破解的那个软件是不是还可以用,结果安装之后发现已经换了验证方式,变成了网络验证,由于没找到注册的函数,所以试着破解了一下网络验证
虽然软件不怎么样,但是还是发一下破解思路吧
首先点开注册框弹出了这个窗口,就直接注册一个账号看看是什么情况
发现是网络验证,查一下壳发现是没加密的.NET,进dnspy先把源码给提取出来
把exe拖进dnspy,点击文件 -> 导出到工程,这样就方便搜索字符串了
直接打开wireshark抓点击注册之后发送的包看看,筛选出http的流量包
可以看到请求的url里面包含了计算出来的机器码以及返回的用户信息的url,直接在导出来的源码里面用 filelocator 搜索字符串,发现有 savemachinecode 和 index.html这两个字符串,可以推断出像getuserinfo这类的应该是index.html访问后才请求到的
点开 "GET /index/pdfplay/index.html?md=*************&userid=***** HTTP/1.1 "这个流量包的url
最下面有一串url双击进浏览器
发现就是原来的那个界面,可以看到有未激活的字样
在浏览器里面按F12分析一下流量请求的情况,找到getuserinfo里面返回的信息,应该这个才是最主要的信息了,去html里面再看看
点击激活VIP的时候会弹出来下面这个信息,但是在此期间未发送任何包,说明是js直接判断的,直接把整个页面包括css,js,图片等东西都一次性搞下来,自己开个本地网页服务器,进行本地验证
开启phpstudy服务,把保存下来的文件放到phpstudy的文件夹下面,并且把index.html里面的url替换一下,这样就可以请求到自己服务器的内容了
在本地创建两个php文件, * 号填你自己获取到的值
getuserinfo.php
[PHP] 纯文本查看 复制代码 <?php
header("content-type:application/json");
$arr = array("issuccess"=>"1","data"=>["vid"=>****,"machinecode"=>"******","id"=>"****","loginname"=>"**********","viptype"=>"","endtime"=>""]);
exit(json_encode($arr))
?>
active.php
[PHP] 纯文本查看 复制代码 <?php
header("content-type:application/json");
$arr = array("issuccess"=>"1","data"=>"1");
exit(json_encode($arr))
?>
这样本地一模一样的服务就搭出来了,接下来就是激活VIP
通过选择器找到激活VIP的按钮的className是user-jhvip,于是去js里面找到对应的click函数,对应的代码在index.html里面,发现是由viptype控制的,直接把viptype改成true
再往下找发送active.php的函数,他居然把生成注册码的代码写到了js里面
转到generate那个函数,把整个函数复制到浏览器的console里面,填入自己的机器码(就是getuserinfo.php里面的machinecode),就可以算出注册码了
把返回值填到原来的js里面
接下来就是要把软件里面的url定位到自己的服务器上了,由于在dnspy里面修改url报错,我选择直接在winhex里面改二进制
直接在winhex里面搜索16进制 70006400660070006C0061007900,定位到url,把它修改成自己的url,问号后面的东西不用管它,因为返回的值都是一样的,只要把多余的“ / ” 和 “ ?”给替换掉
最后一步,进软件点击激活,如果没成功就把软件重启一下再试,注册成功后还是会返回未激活的界面,这是因为getuserinfo里面的内容还没改,只要把getuserinfo里面的加上 "viptype"=>"永久","endtime"=>"3681865903" 就可以了
写的匆忙可能有些地方没讲清楚还请谅解 |