“AutoR”多开后一码多用

发表于 2018-04-15  588 次阅读


文章目录

自从作者修复了能免费运行的BUG后,身为白嫖党的我就开始动手做破解,原本是想直接从内部拿下的,但自己很菜是不争的事实,只能退而求次山寨了。

祭出Fiddler,我tm抓爆。

点击“验证”按钮抓到如下。

https://gitee.com/jianghanxia/AutoRPublic/raw/master/config.json                        //可能是用于与本地版本对照做到检测更新

http://get.baibaoyun.com/api/cd694e62ba74089c8df7aefb324c7910?flag=login&RegCode=这里是验证码&ProjectName=AutoR

返回了

操作失败:注册码不正确.

哎呀,我没有注册码呀!本帖完~

v1.0

但是群里有很多把自己注册码发出来的睿智呀~

我们借助免费送的注册码来看看返回了什么。

登录成功|5693029|276565591

我们来分析一下,第一个“登录成功”是让你知道已经登录成功了(简直废话),中间的那串数字代表了这个验证码还有多少时间能用,单位是“分”(你干脆计算到秒好了),最后面应该是从某个时刻从1开始++,每0.0001秒加1,至于为什么这么干,当然是为了下面的验证。

初期的时候只有这个验证,只要建个html文件把返回的数据写上去就好,至于怎么劫持域名,就自己发挥吧!

此时心跳验证的网址是

http://get.baibaoyun.com/api/cd694e62ba74089c8df7aefb324c7910?flag=getregcodetime&RegCode=这里是睿智群员友情提供的验证码&ProjectName=AutoR&AccessToken=276565591

返回的数据为

登录成功|5693029|276565591

当然这是后来验证有了新操作进行山寨的时候才知道的

v2.0

白嫖了很久之后.........

那是一个天气晴朗,游戏版本更新的日子,我熟练的打开AutoR,开始服务后过了一会就key错误,emmmm.......看来是加了验证码的长度检测,可是有什么用处呢?退出,夏姬八打了个长度为32的字符串,进去,哦吼,没事了。

15分钟后.......

脚本验证错误。

吼吼?

祭出睿智群员的验证码,扔浏览器返回的数据还是老样子,我第一反映是:难道是验证了剩余时间?

试着写了个php脚本,让中间那串数字动起来,完美解决

v3.0

白嫖了几天之后.........

那是一个天气晴朗,脚本更新之后,又GG了

抓了一下包,发现15分钟后的心跳验证

http://get.baibaoyun.com/api/cd694e62ba74089c8df7aefb324c7910?flag=getregcodetime&RegCode=这里是睿智群员友情提供的验证码&ProjectName=AutoR&AccessToken=23254006

返回了

操作失败:注册码没有登陆或者已经下线

为什么会返回这样的东西呢?他自己已经说的很清除了,脚本的首页有个验证,提交的参数里面有“flag=login”,我们先登录一下,此时注意心跳验证链接的最后的“AccessToken=23254006”,那么这个“AccessToken”的参数的那里来的呢,其实就是登录时返回的最后一串数字,然后我们去看看返回了什么

56934213

就这样???就是把剩余时间单独的拿了出来???

依旧简单,给php脚本加点料的事情。

第二天作者又给加了个不明觉厉的,独立出来的,访问地址变来变去,返回内容也变来变去的验证

对上一行的追加:这里应该是存在一个算法,使用过程中发现Token的值会被算法调用进行验算

完整代码如下

<?php 
if(is_array($_GET)&&count($_GET)>0){//先判断是否通过get传值了
	$dbhost = 'localhost:3306';  // mysql服务器主机地址
	$dbuser = 'root';            // mysql用户名
	$dbpass = 'root';          // mysql用户名密码
	$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
	if(! $conn ){
		die('连接失败: ' . mysqli_error($conn));}
	mysqli_query($conn , "set names 'utf8'");// 设置编码
	mysqli_select_db( $conn,'autortime' );//设置数据库
	$sql= 'SELECT * FROM `time`';
	$retval = mysqli_query( $conn, $sql );//查询
	$row=mysqli_fetch_array($retval);
	mysqli_close($conn);
	if(isset($_GET["login2"])){//根据参数的名字返回不同内容
		$login2=$_GET['login2'];
		$url = 'http://get.baibaoyun.com/api/cd694e62ba74089c8df7aefb324c7910?login2='.$login2;
		$result = file_get_contents($url);  //验证码回源,此处验证计算方法与一层验证返回值有关
		//$result = fopen($url, 'r');
		//$result=fread($result, 1000);
		header("Content-type: text/html; charset=UTF-8"); //设置编码,虽然好像是多余的
		header("Content-Length: 8");//强行设置返回值长度,不然抓包时返回的数据很奇怪
		echo $result;}//解决第二层验证   
	elseif(isset($_GET["flag"])){
		$flag = $_GET['flag'];
		if($flag=='login'){	
			$url = 'http://get.baibaoyun.com/api/cd694e62ba74089c8df7aefb324c7910?flag=login&RegCode=2A799750D3E2421E57AD899566487CD5&ProjectName=AutoR';
			$string = file_get_contents($url);
			$start = strpos($string, '|');
			$text = substr($string, $start+1);
			$start_text = strpos($text, '|');
			$utime = substr($text, $start_text+1);//第三数值回源
			header("Content-type: text/html; charset=UTF-8"); 
			header("Content-Length: ".strlen("登录成功|".$row["autotime"]."|".$utime));//如果长度错误会导致验证错误
			echo '登录成功|'.$row['autotime'].'|'.$utime;}//解决第二层验证
		elseif($flag=='getregcodetime'){
			echo $row['autotime'];}}}//解决第三层验证
?>

注:Mysql只是用于读取剩余时间,只要能让剩余时间每分钟减去1,用变量都行


最后,附送【Aut0R】源码大礼包,点击下方下载即可提取

本站文章基于国际协议BY-NA-SA 4.0协议共享;
如未特殊说明,本站文章皆为原创文章,请规范转载。

0

心虽在此,逐梦繁星