引子

假期在家空余时间, 发现微信小游戏突然火了, 群友推荐一款名为: 海盗来了 的小游戏
稍微体验了一把感觉很不错, 真正实现了微信对小程序的期望 —- 取代原生 app
得益于日益强大的 js 引擎, 在手机端也能做出很华丽的效果, 而且性能也不算很差
回到正题: 此款游戏有所谓金币的概念, 而获取金币的一个方式是不断的点击转动转盘
寻思如何让脚本来代替我们来干苦力, 便有此文

思路

我首先尝试用 fiddler 对目标进行刺探, 发现所有关键请求均做了 sign 签名机制
加入了时间戳来防止重放攻击, 可见通过简单的黑盒测试已经没办法获取更多信息了
便考虑从白盒角度来找问题, 而白盒的首要条件是拿到所谓源代码
这里我尝试了很多网上的解决方法, 一些说构造 url 进行下载的均以失败告终
只好用笨办法, 在 root 过的安卓机上去微信安装目录找小游戏缓存的源代码
顺利拿到源代码后就结合前面的一些信息进行继续查找
在前面我获得了请求的一些特定的参数 sign, t 等等
便以此为关键词全局搜索 js 文件, 找到疑似签名算法的方法, 这里贴一下具体代码

function(e) {e += "&secret=" + InitMark.secret;// 这里的 InitMark.secret 是硬编码在 js 中的// e = "clientVer=v2.0.78&isWxGame=true&t=1525007445&secret=418785a803d8e0d9"var t = "", i = e.split("&");i.sort();for (var n = 0; n < i.length; n++)t += i[n];// dictionary order// t = "clientVer=v2.0.78isWxGame=truesecret=418785a803d8e0d9t=1525007445"1e4 == InitMark.uid && console.log("data = " + t);var a = new md5;return t = a.hex_md5(t)
}

不难看出是常规的 md5 加密, 快速写出 Python 代码

import requests
from collections import OrderedDict
from hashlib import md5
from time import timeuid = '183826980'def get_signed_data(data):data['secret'] = '418785a803d8e0d9'data['isWxGame'] = 'true'data['t'] = int(time())data['sign'] = md5(''.join(['{0}={1}'.format(index, value) for index, value in OrderedDict(sorted(data.items())).items()]).encode()).hexdigest()return datawhile True:res = requests.post('https://pirate-api.hortor002.com/game/roller/roll', get_signed_data({'uid': uid,'bet': '1'})).json()if res['errcode'] != 0:if res['errcode'] == 20005:# 体力透支exit()res = requests.post('https://pirate-api.hortor002.com/game/basic/player', get_signed_data({'uid': uid})).json()if res['data']['lastRollerType'] == 3:# 找出哪个是土豪res = requests.post('https://pirate-api.hortor002.com/game/pvp/steal', get_signed_data({'uid': uid,'idx': '1'})).json()print(res)elif res['data']['lastRollerType'] == 2:# 攻击他人res = requests.post('https://pirate-api.hortor002.com/game/pvp/attack', get_signed_data({'uid': uid,'puid': '165330045','building': '1'})).json()print(res)

其中 uid 是你自己的游戏 id, puid 是你想攻击的小伙伴的游戏 id

后记

其实整个流程并不难, 就是在找签名方法这一步花了很多时间
包括各种下断点, 运行, 再下断点, 运行……
很享受这种吃透游戏原理的过程 XD

微信小游戏-海盗来了打金初体验相关推荐

  1. 微信小游戏云开发 | 72小时极限编程体验

    七夕之夜,Shawn 的 "消消大冒险❤七夕特别版" 算是蹭上一个热点,经过这两天的实践,答出了一个结论:个人开发者靠朋友圈.公众号.微信亲友群.微信技术群.微信小游戏互点群.QQ ...

  2. 飞机大战小游戏源码---飞机大战初体验

    开发环境: Windows10,pycharm,python3 源码使用教程: 打开pycharm,创建一个新的项目,文件-->新建项目 项目命名:飞机大战初体验,基本解释器选择python3版 ...

  3. 微信小程序富文本编辑器editor初体验-图片上传

    https://developers.weixin.qq.com/miniprogram/dev/component/editor.html 以前没有小程序富文本编辑器,只能输入文字,图片上传后,在服 ...

  4. 微信小程序_自定义组件_初体验

    自定义组件是微信小程序中重要的组成部分,是实现模块化开发的重要手段 个人认为,自定义组件是区分菜鸟与高手的分水岭 第一篇先介绍小程序自定义组件的基本使用 自定义组件的使用可以分为如下几个步骤 创建组件 ...

  5. 微信小游戏开新手攻略

    Creator星球「脱贫实验室」有不少伙伴开始实践微信小游戏,遇到一些问题,在这里简单总结并回复大家. 1. 开发微信小游戏需要版号吗? 开发微信小游戏不需要版号,但需要<计算机软件著作权登记证 ...

  6. 微信小游戏《海盗来了》测评

    前言:海盗来了是微信小游戏9月份排行超过跳一跳的微信小游戏,本篇笔记从某些角度对海盗来了进行研究测评. 1.游戏好玩的地方 1.1 认识新的人,与之进行慢节奏的对抗活动,包括转盘里的掠夺,攻击,保护自 ...

  7. 微信小游戏凭什么拿走开发者 70% 的日流水?

    作者 | 屠   敏 责编 | 唐小引 一年多前,张小龙在微信公开课 PRO 上正式宣布小程序的到来,彼时大批的创业者开始在 O2O 服务.电商.制作平台.周边服务等运营模式中探索小程序的红利场景.经 ...

  8. 微信小游戏创业,究竟是红海还是死海?

    "跳一跳"."弹球王者"."海盗来了"."斗地主"等等微信小游戏,你是不是很眼熟呢?这些都是前段时间被刷了屏的小游戏,以 ...

  9. 微信小游戏爆款秘笈 数据库MongoDB攻略篇

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB 发表于云+社区专栏 随着微信小游戏的爆发,越来越多开发者关注到MongoDB与小游戏业务的契合度. ...

最新文章

  1. 打印正整数n之内的斐波那契数列
  2. 获取Table选中行数据(Table篇二)
  3. 对于全连接层的理解 全连接层的推导
  4. 辉瑞公司CEO:正在研发耐高温新冠疫苗
  5. mysql索引实例_mysql索引之十:Mysql 索引案例学习
  6. 3-8-循环队列-栈和队列-第3章-《数据结构》课本源码-严蔚敏吴伟民版
  7. php没有输出报错信息的解决
  8. 网站打开速度慢如何压缩图片_8个免费实用的图片压缩网站、软件(含下载地址)吐血推荐...
  9. java:记一次因时区导致出参和入参时差8小时前因后果
  10. web前端开发做项目,CSS盒子模型居中方法
  11. word文档误删怎么恢复
  12. QT 读Excel表格
  13. std__vector介绍
  14. dgi数据治理_银行数据治理方法浅析
  15. Verilog语法之数学函数
  16. 小岳岳吐槽房子隔音差:买房小心隔墙有耳
  17. 计算机组成原理-Chapter1 计算机系统概述
  18. envi窗口滤波_ENVI图像处理之滤波
  19. transformer在视觉检测的应用
  20. 微信扫码支付功能(1)---通过谷歌二维码工具生成付款码

热门文章

  1. dell服务器物理盘blink,Blink
  2. c 将mysql表数据打印,c 中数据库数据如何导出至excel表格-用sql语句把一个数据库内的表保存成excel表格??...
  3. python骚操作!WiFi密码还能这样获取?用户扫一扫连接,无需输入密码
  4. 微型计算机的显卡,来一份白色的信仰,ROG-STRIX-RTX3080-O10G-WHITE显卡深度评测
  5. Hive中小表与大表关联(join)的性能分析
  6. Python--Matplotlib(基本用法)
  7. iphone界面元素的尺寸[转]
  8. 还活着哈。 ..:D
  9. IPMI channel model的理解
  10. 思维方式决定成功(古人)