大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
很久没更新博客了,今天就拿开发QQ开心农场外挂的一些问题来写篇短日志充个数。
关于登陆
在web上,QQ登陆的时候是将密码加密后再提交了,打开http://xiaoyou.qq.com,找到了密码加密过程在http://imgcache.qq.com/campus/js/Mlogin.js 文件中,通过解读代码可以了解到,QQ一共进行了4次的MD5运算,具体过程如下:
比如登陆填写的密码是aaaaaa,验证码abcd
首先将aaaaaa进行MD5运算,结果再进行两次运算,得到XXXXXXXXXXXXXXXX(16位),然后把验证码转换为大写,与那16位组合成XXXXXXXXXXXXXXXXABCD(20位),再进行一次MD5运算,得到的结果就是加密后的密码了。
关于FarmTime
这个是在农场中进行任何操作都需要提交的数据,如1255199347,明眼人一下就能看出这个是距离格林时间1970年1月1日的秒数,
可以通过如下代码获取系统当前距离70年的秒数:
time_t t=time(NULL);
可以通过如下代码将秒数转换为字符串:
strftime(szTime,MAX_STRING,”%m月%d日%H时%M分%S秒”,localtime(&t));
关于FarmKey
这个也是在农场中进行任何操作都需要提交的数据,它是对FarmTime进行某种运算后的结果。
这个运算过程的获取应该是这个程序中的一个难点,运算过程可以通过反编译农场主程序的几个FLASH文件获得。下面讲讲运算过程:
首先将FarmTime进行除10取余数,比如1255199347,取余为7,然后从字符串“sdoit78sdopig7w34057”
的第7+1个字符开始截取,得到sdopig7w34057,使用此字串与1255199347组合得到
1255199347sdopig7w34057,对其进行MD5运算,就得到了最终的FarmKey
关于名字
在农场数据中,所有的中文字符都被编码过,比如:爆@活着 — /u7206@/u6d3b/u7740
要显示它很简单,代码如下
WCHAR str[16];
char* p=(char*)str;
p[0]=0x06;
p[1]=0x72;
MessageBoxW(str); //就会显示“爆”了。
而要转换它用WideCharToMultiByte就能完成,编码936
关于操作
农场操作都是苦力活啦,没啥技巧的,拿个抓包工具抓抓包,然后模拟提交到服务器上即可。
比如要除草就向http://happyfarm.qzone.qq.com/api.php?mod=farmlandstatus&act=clearWeed这个链接POST数据farmTime=1255019524&place=1&ownerId=840110002&farmKey=166a0d2b7cd216661d5762e2f0f34785
其中ownerId代表被对方的ID,place代表某块地,这样就能除去那块地的草咯。
由于反作弊的存在,还需要判断服务器是否需要我们在某次操作中提交验证码。
关于反作弊
首先,要把数据包模拟的尽量一样啦。
其次,要有运作逻辑,比如自动种菜功能,你不能向服务器提交让服务器帮你种一个你根本没有的种子,所以要先去判断种子是否存在于背包中。
最后,把操作时间控制好,比如每3秒访问1个人的地,或可以用随机函数让其操作时间随机在一个范围内,更加接近自然。
关于源码
因为程序是有偿为人代写的,所以近期无法放出源码。但如果你在编写上需要什么帮助可以找我。
关于程序
请从下面地址下载:
http://down.qupan.com/down/luzjcn_4873891.html
本程序仅仅用于演示,正式版本会由购买者进行二次加工后发布。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194606.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...