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

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

  •  
  •   zhgqthomas · 50 天前 · 17496 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    昨天 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 条附言  ·  49 天前

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

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

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

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

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

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

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

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

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

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

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

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