V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhgqthomas
V2EX  ›  Android

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

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

    前言

    昨天 V2EX 上的一篇通过抓包来获取微信跳一跳源码的文章走红,文章连接点击这里

    我也在通过文章中的方式进行了抓包,但是并未探测到小游戏的下载连接,可能微信对此已经进行了修复。而且上文中提供的下载连接也显示为 404 的状态码。

    虽然抓包未果,但是依然可以从本地将源码抽离出来,下面将介绍如何从 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  
    gaobh
        1
    gaobh  
       2018-01-02 13:00:37 +08:00 via iPhone
    要上新闻,占位
    lekai63
        2
    lekai63  
       2018-01-02 13:02:25 +08:00 via iPhone
    点赞
    littleylv
        3
    littleylv  
       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
        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
        41
    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
    要是可以用模拟器就更方便了,专门找个测试机还是麻烦
    Flobit
        46
    Flobit  
       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 楼,的直接下就可以了
    sobigfish
        80
    sobigfish  
       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  
       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   ·   实用小工具   ·   3539 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:39 · PVG 12:39 · LAX 20:39 · JFK 23:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.