我研究了跳一跳的代码,然后现在轻松破万

微信小程序终于可以做游戏了,最近有一款名为“跳一跳”的游戏特别火,很多人都在玩。我也试着玩了一下,发现确实很容易上手,不过可能我对自己力度的控制没有想象的那么好,最多也就跳个几十分,和那些动辄成百上千的大神没法比。

不过人嘛,总还是要有一些攀比之心的。网上也有一些所谓的攻略,有发现所谓可以加分技巧的,有通过数学计算借助刻度尺计算的,也有外挂的。不过对我这种懒人来说,这些都很麻烦,而且非常耗费时间,我的要求很简单,就是可以快速简单的拿到高分。

然后呢,正如想瞌睡的时候来个枕头。新年刚开始就爆出一个小程序的漏洞:可以下载任意小程序、小游戏源代码。作为一名多年不碰代码的伪程序员,我找到了这篇原帖:https://www.v2ex.com/t/419056

居然发现只要知道appid和版本号,就可以直接下载源代码(.wxapkg的打包),无需任何验证。

抱着试一试的态度,我输入了上面提供的网址,真的可以耶。我一口气下了三个版本的源码包。

三个文件都不大,大概3M左右。既然代码下了,我就试着按照操作步骤来进行解压。

1. 安装Python

因为我从来没用过Python,所以首先需要安装Python环境。虽然我用的Mac OS自带Python,不过版本应该比较低,为了稳妥起见,还是去官网下载一个。我下的是版本是2.7.14.

https://www.python.org/downloads/release/python-2714/

然后运行安装程序,跟着提示点击“下一步”即可。

2.解压源代码

如何解析wxapkg文件:

首先将帖子里提到的Python脚本文件代码拷贝下来(https://gist.github.com/thedreamwork/01691af73eeda292e7327bc6bd3e1d08),如果无法打开链接,可拷贝下列文本:

#!/usr/bin/python

# usage python unwxapkg.py filename

import sys,os

import struct

class WxapkgFile:

nameLen = 0

name = ""

offset = 0

size = 0

if len(sys.argv) < 2:

print 'usage: unwxapkg.py filename'

exit()

with open(sys.argv[1], "rb") as f:

if len(sys.argv) > 2:

name = sys.argv[2]

#read header

firstMark = struct.unpack('B', f.read(1))[0]

print 'first header mark = ' + str(firstMark)

info1 = struct.unpack('>L', f.read(4))[0]

print 'info1 = ' + str(info1)

indexInfoLength = struct.unpack('>L', f.read(4))[0]

print 'indexInfoLength = ' + str(indexInfoLength)

bodyInfoLength = struct.unpack('>L', f.read(4))[0]

print 'bodyInfoLength = ' + str(bodyInfoLength)

lastMark = struct.unpack('B', f.read(1))[0]

print 'last header mark = ' + str(lastMark)

if firstMark != 0xBE or lastMark != 0xED:

print 'its not a wxapkg file!!!!!'

exit()

fileCount = struct.unpack('>L', f.read(4))[0]

print 'fileCount = ' + str(fileCount)

#read index

fileList = []

for i in range(fileCount):

data = WxapkgFile()

data.nameLen = struct.unpack('>L', f.read(4))[0]

data.name = f.read(data.nameLen)

data.offset = struct.unpack('>L', f.read(4))[0]

data.size = struct.unpack('>L', f.read(4))[0]

print 'readFile = ' + data.name + ' at Offset = ' + str(data.offset)

fileList.append(data)

#save files

for d in fileList:

#print 'd.name = ' + d.name

#print 'name = ' + name

d.name = '/' + name + d.name

#print 'openFile = ' + root + d.name

#print 'openFile = ' + root + d.name

os.makedirs(path)

#print 'openFile = ' + root + d.name

w = open(root + d.name, 'w')

f.seek(d.offset)

w.write(f.read(d.size))

w.close()

print 'writeFile = ' + root + d.name

f.close()

打开刚安装好的IDLE,然后点击“File” -> “New File”,将代码粘贴到新建文件中,保存命名为“unwxapkg.py”。

进入Mac “其他”,打开“终端”。

运行刚刚保存的Python的脚本来解压下载的源码包。这里要注意,一定要确定脚本和源码包的路径正确。一个小窍门,如果不确定路径,可以用鼠标选定文件然后拖拽到终端窗口,这样会自动匹配正确路径。我选择解压的是4.wxapkg。

这里我最开始遇到一个问题,解压过程中老是提示以下错误:

Traceback (most recent call last):

File "/Users/hj/Downloads/unwxapkg.py", line 75, in

w = open(root + d.name, 'w')

IOError: [Errno 20] Not a directory: '/Users/hj/Downloads/4.wxapkg/app-config.json'

根据提示,应该是检测到非文件夹报错。不知道是不是Python的版本问题,我撸了一遍脚本的代码,然后将其中一行代码改为(如果你直接拷贝这篇文章的代码,则已经修改完毕):

接下来就可以顺利解压了。

解压后的文件夹结构很简单,其中game.js有1.3M大,应该是一个打包后的文件。

3.搭建小游戏开发环境

下载安装“微信开发者工具”(注:小程序和小游戏的开发环境不一样,这里需要下载小游戏开发环境):

点击“小程序项目”,创建新的项目(选择“小程序/小游戏”),不要选择快速启动。这里我新建了一个名为“little jumping”的目录。

然后把刚才解压好的所有文件复制到刚创建的“little jumping”目录,这时开发工具会提示编译错误:

编译出错:

Error:ENOENT:no such file or directory, open '/Users/hj/Desktop/little jumping/game.json'

这个时候在根目录下创建一个叫game.json的文件,然后写入如下代码,表示游戏竖屏玩。

保存后发现还是无法编译通过,这个时候需要点击开发者工具右上角详情按钮,把调试基础库改为“game”。

现在,就可以在本地运行了。

4. 配置代理

不过这样也是没法玩的,会遇到如下错误提示:

gamePage.html:1 Wed Jan 03 2018 11:12:42 GMT+0800 (CST) request 合法域名校验出错

gamePage.html:1 如若已在管理后台更新域名配置,请刷新项目配置后重新编译项目,操作路径:“项目-域名信息”

https://www.charlesproxy.com/latest-release/download.do

下载以后安装,跟着流程很简单完成。完成安装后运行Charlesproxy,首先安装根证书:

双击“Charles Proxy CA”,然后在弹出的对话框选择“始终信任”。

证书安装完成后,开始配置代理。运行Charlesproxy,选择“Proxy” -> “Proxy Settings...”按照如下进行配置:

这里注意,Charles跟Fiddler不同,Fiddler安装证书后就可以抓HTTPS网址的包了,Charles则麻烦一些,需要选择"Proxy" -> "SSL Proxy Settings...“,点击Add按钮,在弹出的表单中Host填写域名,比如填servicewechat.com,Port忽略。

到这里我们就完成了所有的配置,这个时候可以在Charles里看到抓取的数据包。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180108G0K27G00?refer=cp_1026

相关快讯

扫码关注云+社区