如何获得微信小游戏跳一跳源码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhgqthomas
V2EX    Android

如何获得微信小游戏跳一跳源码

  •  
  •   zhgqthomas 2018-01-02 12:56:06 +08:00 59162 次点击
    这是一个创建于 2840 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    昨天 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

    程序就会在开发者工具里运行起来了

    参考

    第 1 条附言    2018-01-02 13:52:51 +08:00

    更正文中错误: 文中拷贝目录下的文件到 sdcard 中的命令,笔误写错,应该为

    $ cp /data/data/com.tencent.mm/MicroMsg/{User}/appbrand/pkg/_1079392110_5.wxapkg /mnt/sdcard 

    重要提醒就是不建议普通用户将自己的安卓手机进行 root,本人 root 的也只是测试机,自用安卓手机 root 后有很高的安全风险,请慎重!!!

    126 条回复    2018-06-26 16:57:23 +08:00
    1  2  
    Solix
        1
    Solix  
       2018-01-02 13:00:37 +08:00 via iPhone
    要上新闻,占位
    lekai63
        2
    lekai63  
       2018-01-02 13:02:25 +08:00 via iPhone
    点赞
    U7Q5tLAex2FI0o0g
        3
    U7Q5tLAex2FI0o0g  
       2018-01-02 13:03:55 +08:00
    厉害了
    rootsir
        4
    rootsir  
       2018-01-02 13:04:58 +08:00
    赞 mark
    est
        5
    est  
       2018-01-02 13:05:29 +08:00
    这个是回复 /t/419229 这贴的吧。
    voocel
        6
    voocel  
       2018-01-02 13:15:10 +08:00 via Android
    火前留名
    dobelee
        7
    dobelee  
       2018-01-02 13:21:24 +08:00 via Android
    火明。
    YvesX
        8
    YvesX  
       2018-01-02 13:23:00 +08:00
    这个帖有潜力
    learnshare
        9
    learnshare  
       2018-01-02 13:30:23 +08:00
    小程序离死亡又近了一步
    dawnven
        10
    dawnven  
       2018-01-02 13:34:19 +08:00 via Android
    可怕了
    kingcos
    &nsp;   11
    kingcos  
       2018-01-02 13:35:43 +08:00 via iPhone
    666,res 文件夹下面是游戏里用到的资源文件吗?
    adian
        12
    adian  
       2018-01-02 13:37:00 +08:00
    emmm
    diydry
        13
    diydry  
       2018-01-02 13:37:06 +08:00
    厉害。。
    dd0754
        14
    dd0754  
       2018-01-02 13:41:12 +08:00
    66666
    zhgqthomas
        15
    zhgqthomas  
    OP
       2018-01-02 13:42:15 +08:00
    @kingcos 恩 是的,但是微信对小游戏有包大小的限制在 4M 左右,所以 res 文件夹下只放一些启动需要的资源文件,进入后会从网络下载一部分
    ray1504
        16
    ray1504  
       2018-01-02 13:43:02 +08:00
    厉害了~~~火钳刘明
    6diyipi
        17
    6diyipi  
       2018-01-02 13:44:30 +08:00
    安卓手机这个要求和困难
    zhgqthomas
        18
    zhgqthomas  
    OP
       2018-01-02 13:46:18 +08:00
    @6diyipi 还可以吧,像小米和魅族等国内手机厂商,root 很简单的
    jason19659
        19
    jason19659  
       2018-01-02 13:47:09 +08:00
    可以刷分之后马上就没人玩了
    wangmm
        20
    wangmm  
       2018-01-02 13:49:46 +08:00
    火钳刘明
    ycmchong
        21
    ycmchong  
       2018-01-02 13:52:27 +08:00
    火钳刘明
    bravecoder
        22
    bravecoder  
       2018-01-02 13:53:42 +08:00   1
    楼主整理总结的不错,刷分其实只是一个噱头,有意思的点最后还是需要落在技术上。
    zhgqthomas
        23
    zhgqthomas  
    OP
       2018-01-02 14:00:12 +08:00
    @bravecoder 也要多感谢你文章的指引
    flowerwrong
        24
    flowerwrong  
       2018-01-02 14:00:50 +08:00
    没加密。。。。。。。
    qsnow6
        25
    qsnow6  
       2018-01-02 14:02:09 +08:00
    `未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。`

    入口怎么配置
    zhgqthomas
        26
    zhgqthomas  
    OP
       2018-01-02 14:05:15 +08:00
    @qsnow6 你解析的是小程序的文件吧,那就自己创建个 app.json 然后添加点配置信息
    macleek
        27
    macleek  
       2018-01-02 14:06:31 +08:00
    这个方法 @lrdcq 早在帖子 /t/419056 里回复了嘛。。。
    tcpdump
        28
    tcpdump  
       2018-01-02 14:13:03 +08:00
    能不能 HONG BAO 帮忙弄个微信小程序源码?
    zhgqthomas
        29
    zhgqthomas  
    OP
       2018-01-02 14:14:45 +08:00
    @macleek 恩 对的,我只是将自己实践的过程进行了整理,方法并非原创
    zhgqthomas
        30
    zhgqthomas  
    OP
       2018-01-02 14:16:58 +08:00   1
    @tcpdump 你可以自己先实践一下,如果哪里遇到了问题,可以交流解决
    tcpdump
        31
    tcpdump  
       2018-01-02 14:17:34 +08:00
    @zhgqthomas 硬件限制,没安卓 ROOT 机器
    zhgqthomas
        32
    zhgqthomas  
    OP
       2018-01-02 14:26:36 +08:00
    @tcpdump 不好意思,流传别人开发的源码可能不太好,这个还需要你自己想想办法,技术实践上可以进行交流
    tcpdump
        33
    tcpdump  
       2018-01-02 14:27:18 +08:00
    @zhgqthomas 好的,谢谢。
    qsnow6
        34
    qsnow6  
       2018-01-02 14:30:53 +08:00
    @zhgqthomas #26
    调试基础库里没有 game 是版本的问题?
    zhgqthomas
        35
    zhgqthomas  
    OP
       2018-01-02 14:33:04 +08:00
    @qsnow6 你可能用的还是旧的微信开发工具,文中有小游戏版本的微信开发工具链接
    qsnow6
        36
    qsnow6  
       2018-01-02 14:38:35 +08:00
    @zhgqthomas #35 有下载页面吗?需要下载 windows 版的
    luanjia
        38
    luanjia  
       2018-01-02 14:44:45 +08:00   1
    如果已经 root 了的手机的话,直接使用 RE 管理器( Root Explore )到相应目录把小程序源代码复制出来更方便一些,我就是这么干的,多谢楼主的总结~
    xingstar
        39
    xingstar  
       2018-01-02 14:51:12 +08:00
    666 啊,很赞
    cnqncom
        40
    cnqncom  
       2018-01-02 14:51:19 +08:00 via Android
    itbeihe
        4
    itbeihe  
       2018-01-02 15:07:46 +08:00
    厉害了
    liuxu
        42
    liuxu  
       2018-01-02 15:11:58 +08:00
    这操作厉害了
    killadm
        43
    killadm  
       2018-01-02 15:12:56 +08:00
    有些手机其实不用 root,手机自带的备份功能就能把 data 下边的数据打包出来
    fuwu1245
        44
    fuwu1245  
       2018-01-02 15:16:03 +08:00
    感觉可以用模拟器来代替一下实体机。。
    silva
        45
    silva  
       2018-01-02 15:18:33 +08:00
    要是可以用模拟器就更方便了,专门找个测试机还是麻烦
    YanSep
        46
    YanSep  
       2018-01-02 15:20:20 +08:00
    这个很厉害了。
    3016
        47
    3016  
       2018-01-02 15:26:52 +08:00
    楼主厉害,洗摸杯
    openbsd
        48
    openbsd  
       2018-01-02 15:27:02 +08:00
    竟然有如此好事,我喜欢的几个小程序是可以拿到源码了 ?
    Deeer
        49
    Deeer  
       2018-01-02 15:29:10 +08:00
    为什么我没有 game 这个基础 ku
    zhgqthomas
        50
    zhgqthomas  
    OP
       2018-01-02 15:30:22 +08:00
    @fuwu1245 模拟器是跑不起来的,微信包内只有 arm 架构的 so 文件
    zhgqthomas
        51
    zhgqthomas  
    OP
       2018-01-02 15:32:32 +08:00
    @Deeer 看 35 楼的回复
    zhgqthomas
        52
    zhgqthomas  
    OP
       2018-01-02 15:33:47 +08:00
    @openbsd 对的,但是 js 文件都是压缩过,真想摸清楚程序的逻辑要经过断点调试
    guoming0000
        53
    guoming0000  
       2018-01-02 15:38:36 +08:00
    自从我 post 了 10 万分爽了几个小时,现在不管怎么玩都是 0 分了,谁告诉我怎么办哦,我擦嘞。。。
    Deeer
        54
    Deeer  
       2018-01-02 15:42:06 +08:00
    有没有人遇到这个提示的
    VM82:2 未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
    Norie
        55
    Norie  
       2018-01-02 15:45:01 +08:00
    上 github
    openbsd
        56
    openbsd  
       2018-01-02 15:45:29 +08:00
    @zhgqthomas
    其实只想看看大神写的代码而已,想想还是算了
    半天没找到可以 root 的设备
    fuwu1245
        57
    fuwu1245  
       2018-01-02 15:57:46 +08:00
    找模拟器试了一下,可以打开到跳一跳的加载页面,但是加载不进去
    到 LZ 说的 data 目录中可以获取到跳一跳的源码,然后拿之前的解包工具解包了下
    得到的源码是压缩过的。。。
    fhefh
        58
    fhefh  
       2018-01-02 16:03:07 +08:00
    多谢 mark
    CloudnuY
        59
    CloudnuY  
       2018-01-02 16:04:24 +08:00
    低调低调…………
    EricFuture
        60
    EricFuture  
       2018-01-02 16:05:14 +08:00
    非常不错,顶一个!
    SourceMan
        61
    SourceMan  
       2018-01-02 16:06:11 +08:00
    确定是源码吗?开发过小程序的应该都知道有一个“压缩后上传”的选项

    哎,2 个帖都有“源码”关键字,我好想说标题党
    vjnjc
        62
    vjnjc  
       2018-01-02 16:15:21 +08:00
    @SourceMan 连 map 都有应该是源码了吧。
    vjnjc
        63
    vjnjc  
       2018-01-02 16:15:47 +08:00
    楼主可以把跳一跳删掉,改为 [如何获得微信小程序源码]
    qsnow6
        64
    qsnow6  
       2018-01-02 16:39:26 +08:00
    不过解压出来的是 html 文件,并不是 wxhtml
    ahaxzh
        65
    ahaxzh  
       2018-01-02 16:44:19 +08:00
    http://java.zhaoxuyang.com/WxTyT/

    折腾了半天 js 公司依旧下载不了,随便百度了下,看到上面的链接。
    kyrkwode
        66
    kyrkwode  
       2018-01-02 16:44:34 +08:00
    有没有兄 dei 把源码打包一份放到网盘让我学习学习。
    ieliwb
        67
    ieliwb  
       2018-01-02 16:45:43 +08:00
    厉害,小程序都被你们玩坏了
    qsnow6
        68
    qsnow6  
       2018-01-02 16:51:59 +08:00

    为啥编译不可能呢
    kyrkwode
        69
    kyrkwode  
       2018-01-02 16:55:18 +08:00
    @qsnow6 兄 dei 能不能把源码打包一份放到网盘让我学习学习
    a6377508
        70
    a6377508  
       2018-01-02 16:55:25 +08:00
    厉害
    ACool
        71
    ACool  
       2018-01-02 16:56:47 +08:00
    这波操作很 6
    zhgqthomas
        72
    zhgqthomas  
    OP
       2018-01-02 16:56:58 +08:00
    @qsnow6 你这是建立了个项目,在创建的时候需要点击的是小游戏,小游戏是没有 app.json 一说的,只需要 game.json
    Alex6
        73
    Alex6  
       2018-01-02 17:06:04 +08:00
    这一波,都扒出来了,玩的 666
    zhongdong
        74
    zhongdong  
       2018-01-02 17:06:36 +08:00
    厉害了
    MiaSanMia
        75
    MiaSanMia  
       2018-01-02 17:08:45 +08:00 via Android
    厉害
    lneoi
        76
    lneoi  
       2018-01-02 17:09:05 +08:00
    厉害了
    tcpdump
        77
    tcpdump  
       2018-01-02 17:13:07 +08:00
    page-frame.html 这个,怎么调试?
    qsnow6
        78
    qsnow6  
       2018-01-02 17:14:42 +08:00   4
    CDN 的那个 IP 失效了,我提供一个目前可用的方法

    https://servicewechat.com/weapp/release/{appid}/{version_num}.wxapkg
    qsnow6
        79
    qsnow6  
       2018-01-02 17:15:07 +08:00
    @kyrkwode #69 看 78 楼,的直接下就可以了
    run2
        80
    run2  
       2018-01-02 17:15:28 +08:00
    总想闹个大新闻,那个不算是源码,是压缩过的(类似网站 webpack 过的 js ) 你拿到又能怎样?
    artandlol
        81
    artandlol  
       2018-01-02 17:24:32 +08:00
    @sobigfish 有解压工具
    tcpdump
        82
    tcpdump  
       2018-01-02 17:27:27 +08:00
    @artandlol 求一个
    mimiga
        83
    mimiga  
       2018-01-02 17:43:59 +08:00
    厉害了我的骑摩托马斯哥
    airtayork
        84
    airtayork  
       2018-01-02 17:57:00 +08:00
    解压之后的代码是混淆过的,没法看,是我操作的太晚了吗?
    facetest
        85
    facetest  
       2018-01-02 18:01:28 +08:00 via Android
    压缩包加个密就行了
    zhgqthomas
        86
    zhgqthomas  
    OP
       2018-01-02 18:14:20 +08:00
    @airtayork 解压完的代码肯定是经过压缩的,但是格式化之后逻辑还是可以整清楚的

    ![]( http://upload-images.jianshu.io/upload_images/854027-97d29112660deb03.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    通过调试工具可以找到最终提交分数的地方
    artandlol
        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 的
    zhgqthomas
        88
    zhgqthomas  
    OP
       2018-01-02 18:16:11 +08:00
    @mimiga 尼玛
    qiayue
        89
    qiayue  
    PRO
       2018-01-02 18:17:13 +08:00
    小程序的包是没办法直接运行的,小游戏的可以
    yangeren
        90
    yangeren  
       2018-01-02 18:55:30 +08:00
    厉害厉害
    JohnTsemin
        91
    JohnTsemin  
       2018-01-02 19:55:31 +08:00 via Android
    跳一跳:我到底犯了什么错?你们要这样搞我?
    iwtbauh
        92
    iwtbauh  
       2018-01-02 20:26:25 +08:00 via Android
    /data 本来就是 rw 的,不需要重新挂载
    Bazhe
        93
    Bazhe  
       2018-01-02 20:43:26 +08:00
    https://mp.weixin.qq.com 不在以下 request 合法域名列表中
    怎么解决?
    JiangVoid
        94
    JiangVoid  
       2018-01-02 21:20:24 +08:00 via Android
    或许可以试一试。
    zhgqthomas
        95
    zhgqthomas  
    OP
       2018-01-02 21:27:26 +08:00
    @Bazhe 那个解决不了 因为小游戏还没有开放注册,开放注册之后有了 app id 就可以设置 request 合法域名列表了
    Bazhe
        96
    Bazhe  
       2018-01-02 21:58:55 +08:00
    @zhgqthomas 那你是怎么运行起来的小游戏的,我的没有开始游戏的按钮。。。。
    fuwu1245
        97
    fuwu1245  
       2018-01-02 22:08:44 +08:00
    zhgqthomas
        98
    zhgqthomas  
    OP
       2018-01-02 23:33:08 +08:00
    @Bazhe 游戏本身是可以正常运行的 只是所有的网络请求不能跑通 你可以尝试把开发工具关了重新进入项目试试 现在开发工具还不是特别稳定 我就经常会卡死
    zhgqthomas
        99
    zhgqthomas  
    OP
       2018-01-02 23:34:02 +08:00
    @fuwu1245 这个看 log 是找不对相应的函数声明 没有源码我也不知道问题在哪
    msl12
        100
    msl12  
       2018-01-03 00:11:12 +08:00
    留名
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     852 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 20:23 PVG 04:23 LAX 13:23 JFK 16:23
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86