V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhgqthomas
V2EX  ›  Android

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

  •  
  •   zhgqthomas · Jan 2, 2018 · 61372 views
    This topic created in 3041 days ago, the information mentioned may be changed or developed.

    前言

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

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

    参考

    Supplement 1  ·  Jan 2, 2018

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

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

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

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

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

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

    折腾了半天 js 公司依旧下载不了,随便百度了下,看到上面的链接。
    kyrkwode
        66
    kyrkwode  
       Jan 2, 2018
    有没有兄 dei 把源码打包一份放到网盘让我学习学习。
    ieliwb
        67
    ieliwb  
       Jan 2, 2018
    厉害,小程序都被你们玩坏了
    qsnow6
        68
    qsnow6  
       Jan 2, 2018

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

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

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

    通过调试工具可以找到最终提交分数的地方
    artandlol
        87
    artandlol  
       Jan 2, 2018
    windows 最新开发工具版本
    hts://dldir1.qq.com/WechatWebDev/1.0.0/201712280/fix/wechat_devtools_1.02.1712280_x64.exe

    官网上挂的还是 1205 没有 game 的
    zhgqthomas
        88
    zhgqthomas  
    OP
       Jan 2, 2018
    @mimiga 尼玛
    qiayue
        89
    qiayue  
    PRO
       Jan 2, 2018
    小程序的包是没办法直接运行的,小游戏的可以
    yangeren
        90
    yangeren  
       Jan 2, 2018
    厉害厉害
    JohnTsemin
        91
    JohnTsemin  
       Jan 2, 2018 via Android
    跳一跳:我到底犯了什么错?你们要这样搞我?
    iwtbauh
        92
    iwtbauh  
       Jan 2, 2018 via Android
    /data 本来就是 rw 的,不需要重新挂载
    Bazhe
        93
    Bazhe  
       Jan 2, 2018
    https://mp.weixin.qq.com 不在以下 request 合法域名列表中
    怎么解决?
    JiangVoid
        94
    JiangVoid  
       Jan 2, 2018 via Android
    或许可以试一试。
    zhgqthomas
        95
    zhgqthomas  
    OP
       Jan 2, 2018
    @Bazhe 那个解决不了 因为小游戏还没有开放注册,开放注册之后有了 app id 就可以设置 request 合法域名列表了
    Bazhe
        96
    Bazhe  
       Jan 2, 2018
    @zhgqthomas 那你是怎么运行起来的小游戏的,我的没有开始游戏的按钮。。。。
    fuwu1245
        97
    fuwu1245  
       Jan 2, 2018
    zhgqthomas
        98
    zhgqthomas  
    OP
       Jan 2, 2018
    @Bazhe 游戏本身是可以正常运行的 只是所有的网络请求不能跑通 你可以尝试把开发工具关了重新进入项目试试 现在开发工具还不是特别稳定 我就经常会卡死
    zhgqthomas
        99
    zhgqthomas  
    OP
       Jan 2, 2018
    @fuwu1245 这个看 log 是找不对相应的函数声明 没有源码我也不知道问题在哪
    msl12
        100
    msl12  
       Jan 3, 2018
    留名
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2695 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 171ms · UTC 13:19 · PVG 21:19 · LAX 06:19 · JFK 09:19
    ♥ Do have faith in what you're doing.