昨天 V2EX 上的一篇通过抓包来获取微信跳一跳源码的文章走红,文章连接点击这里
我也在通过文章中的方式进行了抓包,但是并未探测到小游戏的下载连接,可能微信对此已经进行了修复。而且上文中提供的下载连接也显示为 404 的状态码。/p>
虽然抓包未果,但是依然可以从本地将源码抽离出来,下面将介绍如何从 Android 手机里面找到微信下载的小游戏源码
需要注意的是必须是已经 root 了的 Android 手机,否则将没有权限访问对应手机的系统文件夹
通过 USB 将手机连接到电脑上,然后运行以下命令
$ adb devices
如果显示了一下信息
List of devices attached 71MBBL6228EU device
说明手机已经连接到电脑上,如显示未找到 adb
命令,则说明 Android SDK 安装错误或 adb
未添加到电脑 path
中,请自行上网进行相应查阅
手机连接电脑成功后,运行一下命令
$ adb shell $ su
终端出类似 root@{手机型号}
前缀,说明已经进入到 root
模式下
$ cd /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg
{User} 为当年用户的用户名,类似于 1ed**********c514a18
然后当前目录就是微信用于存放小程序和小游戏下载包的位置
$ ls _-791877121_3.wxapkg _1079392110_5.wxapkg _1079392110_5.wxapkg_xdir _1123949441_92.wxapkg _576754010_1.wxapkg
以上是我的微信中所下载过的小程序和小游戏源码
因为 /data
目录为系统级目录,无法直接将其进行复制,需要重新挂载为可操作模式
$ mount -o remount,rw /data
此时就可以将当前目录下的文件拷贝到 sdcard 中
$ cd /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg/_1079392110_5.wxapkg /mnt/sdcard
然后将 _1079392110_5.wxapkg
文件拷贝到电脑里,通过该脚本进行解压后,即为其源码
通过微信小游戏开发工具新建一个空白的小程序或者小游戏的项目,主要不要选择快速启动模板
然后把刚才解压出来的源代码复制到刚刚创建的项目目录中,开发工具会提示编译错误,这时只要在项目中新建一个 game.json
文件,并在文件里写入以下代码
{ "deviceOrientation" : "portrait" }
然后将开发工具的调试基础库改为 game
程序就会在开发者工具里运行起来了
更正文中错误: 文中拷贝目录下的文件到 sdcard 中的命令,笔误写错,应该为
$ cp /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg/_1079392110_5.wxapkg /mnt/sdcard
重要提醒就是不建议普通用户将自己的安卓手机进行 root,本人 root 的也只是测试机,自用安卓手机 root 后有很高的安全风险,请慎重!!!
![]() | 1 Solix 2018-01-02 13:00:37 +08:00 via iPhone 要上新闻,占位 |
![]() | 2 lekai63 2018-01-02 13:02:25 +08:00 via iPhone 点赞 |
![]() | 3 U7Q5tLAex2FI0o0g 2018-01-02 13:03:55 +08:00 厉害了 |
4 rootsir 2018-01-02 13:04:58 +08:00 赞 mark |
![]() | 6 voocel 2018-01-02 13:15:10 +08:00 via Android 火前留名 |
7 dobelee 2018-01-02 13:21:24 +08:00 via Android 火明。 |
![]() | 8 YvesX 2018-01-02 13:23:00 +08:00 ![]() |
![]() | 9 learnshare 2018-01-02 13:30:23 +08:00 小程序离死亡又近了一步 |
![]() | 10 dawnven 2018-01-02 13:34:19 +08:00 via Android 可怕了 |
![]() | &nsp; 11 kingcos 2018-01-02 13:35:43 +08:00 via iPhone 666,res 文件夹下面是游戏里用到的资源文件吗? |
![]() | 12 adian 2018-01-02 13:37:00 +08:00 emmm |
13 diydry 2018-01-02 13:37:06 +08:00 厉害。。 |
14 dd0754 2018-01-02 13:41:12 +08:00 66666 |
![]() | 15 zhgqthomas OP @kingcos 恩 是的,但是微信对小游戏有包大小的限制在 4M 左右,所以 res 文件夹下只放一些启动需要的资源文件,进入后会从网络下载一部分 |
![]() | 16 ray1504 2018-01-02 13:43:02 +08:00 厉害了~~~火钳刘明 |
![]() | 17 6diyipi 2018-01-02 13:44:30 +08:00 安卓手机这个要求和困难 |
![]() | 18 zhgqthomas OP @6diyipi 还可以吧,像小米和魅族等国内手机厂商,root 很简单的 |
![]() | 19 jason19659 2018-01-02 13:47:09 +08:00 可以刷分之后马上就没人玩了 |
![]() | 20 wangmm 2018-01-02 13:49:46 +08:00 火钳刘明 |
![]() | 21 ycmchong 2018-01-02 13:52:27 +08:00 火钳刘明 |
22 bravecoder 2018-01-02 13:53:42 +08:00 ![]() 楼主整理总结的不错,刷分其实只是一个噱头,有意思的点最后还是需要落在技术上。 |
![]() | 23 zhgqthomas OP @bravecoder 也要多感谢你文章的指引 |
24 flowerwrong 2018-01-02 14:00:50 +08:00 没加密。。。。。。。 |
![]() | 25 qsnow6 2018-01-02 14:02:09 +08:00 `未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。` 入口怎么配置 |
![]() | 26 zhgqthomas OP @qsnow6 你解析的是小程序的文件吧,那就自己创建个 app.json 然后添加点配置信息 |
![]() | 27 macleek 2018-01-02 14:06:31 +08:00 |
![]() | 28 tcpdump 2018-01-02 14:13:03 +08:00 能不能 HONG BAO 帮忙弄个微信小程序源码? |
![]() | 29 zhgqthomas OP @macleek 恩 对的,我只是将自己实践的过程进行了整理,方法并非原创 |
![]() | 30 zhgqthomas OP ![]() @tcpdump 你可以自己先实践一下,如果哪里遇到了问题,可以交流解决 |
![]() | 31 tcpdump 2018-01-02 14:17:34 +08:00 @zhgqthomas 硬件限制,没安卓 ROOT 机器 |
![]() | 32 zhgqthomas OP @tcpdump 不好意思,流传别人开发的源码可能不太好,这个还需要你自己想想办法,技术实践上可以进行交流 |
![]() | 33 tcpdump 2018-01-02 14:27:18 +08:00 @zhgqthomas 好的,谢谢。 |
![]() | 34 qsnow6 2018-01-02 14:30:53 +08:00 @zhgqthomas #26 调试基础库里没有 game 是版本的问题? |
![]() | 35 zhgqthomas OP @qsnow6 你可能用的还是旧的微信开发工具,文中有小游戏版本的微信开发工具链接 |
![]() | 36 qsnow6 2018-01-02 14:38:35 +08:00 @zhgqthomas #35 有下载页面吗?需要下载 windows 版的 |
![]() | 37 zhgqthomas OP ![]() |
![]() | 38 luanjia 2018-01-02 14:44:45 +08:00 ![]() 如果已经 root 了的手机的话,直接使用 RE 管理器( Root Explore )到相应目录把小程序源代码复制出来更方便一些,我就是这么干的,多谢楼主的总结~ |
39 xingstar 2018-01-02 14:51:12 +08:00 666 啊,很赞 |
![]() | 40 cnqncom 2018-01-02 14:51:19 +08:00 via Android |
![]() | 4 itbeihe 2018-01-02 15:07:46 +08:00 厉害了 |
![]() | 42 liuxu 2018-01-02 15:11:58 +08:00 这操作厉害了 |
![]() | 43 killadm 2018-01-02 15:12:56 +08:00 有些手机其实不用 root,手机自带的备份功能就能把 data 下边的数据打包出来 |
![]() | 44 fuwu1245 2018-01-02 15:16:03 +08:00 感觉可以用模拟器来代替一下实体机。。 |
45 silva 2018-01-02 15:18:33 +08:00 要是可以用模拟器就更方便了,专门找个测试机还是麻烦 |
![]() | 46 YanSep 2018-01-02 15:20:20 +08:00 这个很厉害了。 |
47 3016 2018-01-02 15:26:52 +08:00 楼主厉害,洗摸杯 |
48 openbsd 2018-01-02 15:27:02 +08:00 竟然有如此好事,我喜欢的几个小程序是可以拿到源码了 ? |
![]() | 49 Deeer 2018-01-02 15:29:10 +08:00 为什么我没有 game 这个基础 ku |
![]() | 50 zhgqthomas OP @fuwu1245 模拟器是跑不起来的,微信包内只有 arm 架构的 so 文件 |
![]() | 51 zhgqthomas OP @Deeer 看 35 楼的回复 |
![]() | 52 zhgqthomas OP @openbsd 对的,但是 js 文件都是压缩过,真想摸清楚程序的逻辑要经过断点调试 |
![]() | 53 guoming0000 2018-01-02 15:38:36 +08:00 自从我 post 了 10 万分爽了几个小时,现在不管怎么玩都是 0 分了,谁告诉我怎么办哦,我擦嘞。。。 |
![]() | 54 Deeer 2018-01-02 15:42:06 +08:00 有没有人遇到这个提示的 VM82:2 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。 |
![]() | 55 Norie 2018-01-02 15:45:01 +08:00 上 github |
56 openbsd 2018-01-02 15:45:29 +08:00 |
![]() | 57 fuwu1245 2018-01-02 15:57:46 +08:00 找模拟器试了一下,可以打开到跳一跳的加载页面,但是加载不进去 到 LZ 说的 data 目录中可以获取到跳一跳的源码,然后拿之前的解包工具解包了下 得到的源码是压缩过的。。。 |
![]() | 58 fhefh 2018-01-02 16:03:07 +08:00 多谢 mark |
![]() | 59 CloudnuY 2018-01-02 16:04:24 +08:00 低调低调………… |
![]() | 60 EricFuture 2018-01-02 16:05:14 +08:00 非常不错,顶一个! |
![]() | 61 SourceMan 2018-01-02 16:06:11 +08:00 确定是源码吗?开发过小程序的应该都知道有一个“压缩后上传”的选项 哎,2 个帖都有“源码”关键字,我好想说标题党 |
![]() | 63 vjnjc 2018-01-02 16:15:47 +08:00 楼主可以把跳一跳删掉,改为 [如何获得微信小程序源码] |
![]() | 64 qsnow6 2018-01-02 16:39:26 +08:00 不过解压出来的是 html 文件,并不是 wxhtml |
![]() | 65 ahaxzh 2018-01-02 16:44:19 +08:00 |
66 kyrkwode 2018-01-02 16:44:34 +08:00 有没有兄 dei 把源码打包一份放到网盘让我学习学习。 |
![]() | 67 ieliwb 2018-01-02 16:45:43 +08:00 厉害,小程序都被你们玩坏了 ![]() |
![]() | 68 qsnow6 2018-01-02 16:51:59 +08:00 ![]() 为啥编译不可能呢 |
![]() | 70 a6377508 2018-01-02 16:55:25 +08:00 厉害 |
![]() | 71 ACool 2018-01-02 16:56:47 +08:00 这波操作很 6 |
![]() | 72 zhgqthomas OP @qsnow6 你这是建立了个项目,在创建的时候需要点击的是小游戏,小游戏是没有 app.json 一说的,只需要 game.json |
![]() | 73 Alex6 2018-01-02 17:06:04 +08:00 这一波,都扒出来了,玩的 666 |
74 zhongdong 2018-01-02 17:06:36 +08:00 厉害了 |
![]() | 75 MiaSanMia 2018-01-02 17:08:45 +08:00 via Android 厉害 |
76 lneoi 2018-01-02 17:09:05 +08:00 厉害了 |
![]() | 77 tcpdump 2018-01-02 17:13:07 +08:00 page-frame.html 这个,怎么调试? |
![]() | 78 qsnow6 2018-01-02 17:14:42 +08:00 ![]() |
80 run2 2018-01-02 17:15:28 +08:00 总想闹个大新闻,那个不算是源码,是压缩过的(类似网站 webpack 过的 js ) 你拿到又能怎样? |
![]() | 83 mimiga 2018-01-02 17:43:59 +08:00 厉害了我的骑摩托马斯哥 |
![]() | 84 airtayork 2018-01-02 17:57:00 +08:00 解压之后的代码是混淆过的,没法看,是我操作的太晚了吗? |
85 facetest 2018-01-02 18:01:28 +08:00 via Android 压缩包加个密就行了 |
![]() | 86 zhgqthomas OP @airtayork 解压完的代码肯定是经过压缩的,但是格式化之后逻辑还是可以整清楚的  通过调试工具可以找到最终提交分数的地方 |
![]() | 87 artandlol 2018-01-02 18:14:35 +08:00 windows 最新开发工具版本 hts://dldir1.qq.com/WechatWebDev/1.0.0/201712280/fix/wechat_devtools_1.02.1712280_x64.exe 官网上挂的还是 1205 没有 game 的 |
![]() | 88 zhgqthomas OP @mimiga 尼玛 |
![]() | 89 qiayue PRO 小程序的包是没办法直接运行的,小游戏的可以 |
90 yangeren 2018-01-02 18:55:30 +08:00 厉害厉害 |
91 JohnTsemin 2018-01-02 19:55:31 +08:00 via Android 跳一跳:我到底犯了什么错?你们要这样搞我? |
92 iwtbauh 2018-01-02 20:26:25 +08:00 via Android /data 本来就是 rw 的,不需要重新挂载 |
93 Bazhe 2018-01-02 20:43:26 +08:00 https://mp.weixin.qq.com 不在以下 request 合法域名列表中 怎么解决? |
![]() | 94 JiangVoid 2018-01-02 21:20:24 +08:00 via Android 或许可以试一试。 |
![]() | 95 zhgqthomas OP @Bazhe 那个解决不了 因为小游戏还没有开放注册,开放注册之后有了 app id 就可以设置 request 合法域名列表了 |
96 Bazhe 2018-01-02 21:58:55 +08:00 @zhgqthomas 那你是怎么运行起来的小游戏的,我的没有开始游戏的按钮。。。。 |
![]() | 97 fuwu1245 2018-01-02 22:08:44 +08:00 |
![]() | 98 zhgqthomas OP @Bazhe 游戏本身是可以正常运行的 只是所有的网络请求不能跑通 你可以尝试把开发工具关了重新进入项目试试 现在开发工具还不是特别稳定 我就经常会卡死 |
![]() | 99 zhgqthomas OP @fuwu1245 这个看 log 是找不对相应的函数声明 没有源码我也不知道问题在哪 |
100 msl12 2018-01-03 00:11:12 +08:00 留名 |