有时候看别的小程序/小游戏有些功能不知道如何实现,想参考下,但是没有源码,或者看到一些游戏的资源做的不错,想拿下来改改。怎么办?
今天就来看看怎么拿到资源文件和代码(虽然代码是加密过的),不过一般js的加密也就是混淆压缩,做了变量名替换,资源文件就没有压缩的了。
(之前网上也有很多人写过怎么弄,但是实际上很多都不可用了,所以自己也记录下。)
- 先试玩一下觉得可以的小游戏或者小程序,让微信先把包下下来。
一般情况下开发微信小游戏/小程序的时候,会把一个包上传到微信服务器,但是这个包有一定的大小限制,一般都在几MB,但是微信给了一些动态加载资源的方式,自己可以从自己的服务器或者cdn上面去拉取新的资源包来更新自己的小程序/小游戏,这个就俗称热更新。当然代码中也会去加载一些动态的资源。
简单总结下一共有三种资源需要获取:
- 基础包中资源(微信服务器拉到微信本地)
- 热更新加载包中的资源(从开发者服务器拉到微信本地)
- 动态资源(从开发者服务器拉到微信本地)
2. ssh到越狱手机获取
1ssh root@localhost -p 2222
3. 进入cydia调试微信
1cyrun -b com.tencent.xin -e
4. 找到微信沙盒Library目录
1[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomans:NSUserDomainMask][0]2我的手机是这个目录:3file:///var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/
5. 退出cydia,进入沙盒Library目录find一下wxapkg文件
1cd /var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/; find -name "*.wxapkg";
6. 退出手机,scp把wxapkg拉回来。
1scp -P2222 root@localhost:/var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/WechatPrivate/9454ac8b05a1983e8255ea94d91cc7b2/WeApp/LocalCache/release/wxb92d4d650d51eda8/117.wxapkg .
7. 拉回来的是一个wxapkg文件,其实也只是一种文件格式。git上找个工具解析出来就行。
1php ./parse.php 117.wxapkg
我看git上有用php写的也有用go写的,我本地有php所以就用php了,自己也可以用go来弄个下。
给一个git连接:GitHub - Clarence-pan/unpack-wxapkg: Unpack .wxapkg file
源码有兴趣可以看看。其实也就是按照固定格式解析二进制文件。
最终获得的文件有这些:
2. ssh到越狱手机获取
1ssh root@localhost -p 2222
3. 进入cydia调试微信
1cyrun -b com.tencent.xin -e
4. 找到微信沙盒Library目录
1[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomans:NSUserDomainMask][0]2我的手机是这个目录:3file:///var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/
5. 退出cydia,进入沙盒Library目录find一下wxapkg文件
1cd /var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/; find -name "*.wxapkg";
6. 退出手机,scp把wxapkg拉回来。
1scp -P2222 root@localhost:/var/mobile/Containers/Data/Application/38BF9699-C8DE-4570-95CF-09876BE91D41/Library/WechatPrivate/9454ac8b05a1983e8255ea94d91cc7b2/WeApp/LocalCache/release/wxb92d4d650d51eda8/117.wxapkg .
7. 拉回来的是一个wxapkg文件,其实也只是一种文件格式。git上找个工具解析出来就行。
1php ./parse.php 117.wxapkg
我看git上有用php写的也有用go写的,我本地有php所以就用php了,自己也可以用go来弄个下。
给一个git连接:GitHub - Clarence-pan/unpack-wxapkg: Unpack .wxapkg file
源码有兴趣可以看看。其实也就是按照固定格式解析二进制文件。
最终获得的文件有这些:
为了避免麻烦,每次还得上手机,我写了一个脚本,连上手机直接拉,拉完直接抽文件,哈哈,请允许我卖弄一下。(记得把parse.php放到脚本同目录下)代码如下:
#########################################################################
# File Name: get_wxapkg.sh
# Author: 小马的爸爸
# mail: 我还没有伊妹儿
# Created Time: 2020-01-09
#########################################################################
#!/bin/bash
wxapkgs=`ssh root@localhost -p2222 "find /var/mobile/Containers/Data/Application/ -name '*.wxapkg'"`
for wxapkg in $wxapkgs;
do
echo "COPYING $wxapkgs"
scp -P2222 root@localhost:/$wxapkg .
php ./parse.php ./${wxapkg##*/}
done
最后,我今天编辑文章用的一个在线的markdown编辑器,share一下~
最后希望能和大家多多交流,有兴趣可以加我微信一起学习讨论哈。nicholas_mcc