• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP微信小程序解包过程实例详解

PHP微信小程序解包过程实例详解

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了微信小程序,小程序解包等相关知识,希望对您有所帮助

这篇文章主要介绍了php微信小程序解包过程实例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

这个解包只能看个大概

1、找到小程序压缩包

1.1、手机root或安装模拟器(我用的是夜神)

1.2、在模拟器上安装微信(用android5系统的模拟器,低版本小程序容易打不开)

1.3、打开登陆微信后,打开小程序

1.4、打开模拟器自带的文件管理器来到目录:/data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/

1.5、里面有很多wxapkg文件,找到最新修改日期的文件比如 -357038350_91.wxapkg,前面打勾选中

1.6、文件管理器回到/mnt/shared/Other目录,粘贴即可,打开安卓模拟器上我的电脑 =〉打开电脑文件夹找到粘贴的文件-357038350_91.wxapkg 夜神教程链接:跳转查看

2、对压缩包解包

详细参考:https://codechina.csdn.net/mirrors/leo9960/wechat-app-unpack?utm_source=csdn_github_accelerator

我用的php类:

使用方法:cmd =>cd php文件目录 =〉php wx_unpak.php 357038350_91.wxapkg

我主要是想用其中的一些图片,很多图片都被base64了放到js(app-service.js)和样式(app-wxss.js)文件中了;需要我们匹配组装一下

<?php$str = file_get_contents('_-357038350_97.wxapkg.unpacked/app-service.js');$preg = '/(data:image.*?)\"/';$len = strlen('data:image/png;base64,');if(preg_match_all($preg, $str, $arr)){    foreach($arr[1] as $k => $img){        file_put_contents('./images/'.$k.'.png',base64_decode(substr($img,$len)));        //echo substr($img,$len);exit;    }} else {    echo 'no';}$str = file_get_contents('_-357038350_97.wxapkg.unpacked/app-wxss.js');$preg = '/\((data:image.*?)\)/';$len = strlen('data:image/png;base64,');if(preg_match_all($preg, $str, $arr)){    foreach($arr[1] as $k => $img){        file_put_contents('./images/a2_'.$k.'.png',base64_decode(substr($img,$len)));        //echo substr($img,$len);exit;    }} else {    echo 'no';}

wx_unpak.php

<?php/** * 源文件目录 * /data/data/com.tencent.mm/MicroMsg/{{一串32位的16进制字符串文件夹}}/appbrand/pkg/ * /data/data/com.eg.android.AlipayGphone, 在files/nebulaInstallApps/目录下存储了所有加载过的小程序 * [php] /path/to/unpack-wxapkg.php <xxx.wxapkg> * php unpak.php _1123949441_351.wxapkg **/function unpack_wxapkg($file, $targetDir){    if (!is_dir($targetDir)){        mkdir($targetDir);    }    echo "Reading file.\n";    $file = file_get_contents($file);    $ptr = 18;    $headerStruct = new StructDef([        'mask1' => 'ushort',        'info1' => 'ulong',        'indexInfoLength' => 'ulong',        'bodyInfoLength' => 'ushort',        'mask2' => 'ushort',        'fileCount' => 'ulong',    ]);    echo "Parsing file header...\n";    $header = $headerStruct->unpack($file);    // print_r(['header' => $header]);    $unpackULong = function () use (&$file, &$ptr) {        $ret = unpack_ulong(substr($file, $ptr, 4));        $ptr += 4;        return $ret;    };    $unpackUShort = function () use (&$file, &$ptr) {        $ret = unpack_ushort(substr($file, $ptr, 2));        $ptr += 2;        return $ret;    };    $unpackStr = function ($len) use (&$file, &$ptr) {        $ret = substr($file, $ptr, $len);        $ptr += $len;        return $ret;    };    $fileCount = $header['fileCount'];    echo "Got $fileCount files.\n";    $unpackedFiles = [];    for ($i = 0; $i < $fileCount; $i++) {        $nameLength = $unpackULong();        $f = [            'nameLength' => $nameLength,            'name' => $unpackStr($nameLength),            'offset' => $unpackULong(),            'size' => $unpackULong(),        ];        echo "Unpacking file {$f['name']} ({$f['size']}bytes)...\n";        $f['content'] = substr($file, $f['offset'], $f['size']);        $unpackedFiles[] = $f;        $destFile = $targetDir . $f['name'];        $destDir = dirname($destFile);        if (!is_dir($destDir)){            mkdir($destDir, 0777, true);        }        file_put_contents($targetDir . $f['name'], $f['content']);    }    // print_r(['unpackedFiles' => $unpackedFiles]);    echo "All done.\n";}function unpack_ulong($str){    $x = unpack('N', $str);    return $x[1];}function unpack_ushort($str){    $x = unpack('n', $str);    return $x[1];}class StructDef{    protected $def;    protected $unpackFormat;    public 
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手把手教你在微信小程序中使用canvas绘制天气折线图(附代码)
  • 微信小程序页面向下滚动时tab栏固定页面顶部实例讲解
  • uniapp实现微信小程序全局分享的示例代码
  • 浅析微信小程序中自定义组件的方法
  • 微信小程序发布新版本时自动提示用户更新的方法
  • 微信小程序wx.request使用POST请求时后端无法获取数据解决办法
  • 微信小程序如何获取到openid和session_key
  • PHP微信小程序解包过程实例详解
  • 微信小程序中的button按钮宽度设置无效怎么办
  • 微信小程序反编译提取源代码方法

相关文章

  • 实例详解之怎样使用css实现3D穿梭效果
  • html5以及jQuery实现本地图片上传前的预览代码实例讲解
  • Photoshop使用画笔模拟在水雾玻璃上写字
  • 你知道Laravel的$this->app以及app()是怎么来的吗?
  • 浅谈CSS如何实现九宫格提示超出数量
  • 关于24小时快速排名SEO优化关键词排名前三的猫腻
  • 阿里云Composer全量镜像下载配置及常见问题解答
  • PetalBot-华为自研搜索引擎,这个蜘蛛就是花瓣蜘蛛,将来或许也会在国内再杀出一个搜索引擎
  • Photoshop制作蓝色冰霜效果的艺术字教程
  • 如何解决php错误代码0x80070002问题

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 关键词meta标签Keywords优化详解
    • javascript如何解决url中文乱码问题
    • 浅谈Bootstrap中的自适应屏幕
    • 聊聊怎么在docker上部署运行workerman
    • 小程序实现商品属性选择或规格选择
    • 解决TP5.1出现A non well formed numeric value encountered的问题
    • CDR绘制活力城市/海报
    • jQuery checkbox不可选怎么实现
    • PHP如何重定向?浅谈跳转页面的3种方法
    • phpcms文章如何筛选分类?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有