从抓包失败到源码还原:一次某红书小程序逆向实战复盘

张开发
2026/4/8 22:45:31 15 分钟阅读

分享文章

从抓包失败到源码还原:一次某红书小程序逆向实战复盘
1. 当抓包工具集体失效时那天早上刚到公司就接到紧急通知某红书小程序的搜索接口突然失效了。作为团队里负责爬虫开发的救火队员我第一反应居然是松了口气——毕竟比起网页端频繁的DOM结构变动小程序通常更稳定。但当我打开Fiddler准备抓包分析时却发现事情没那么简单。常规的HTTP请求里根本找不到关键参数所有数据都被包裹在一层加密外壳里。这种情况我见过不少通常上三板斧就能解决先用雷神模拟器内置系统证书绕过SSL Pinning再配合算法助手和小黄鸟HttpCanary进行中间人攻击。但这次邪门的是哪怕用上LSPosed框架注入Xposed模块抓到的包依然和浏览器里看到的一模一样——就像在跟空气斗智斗勇。这时候我意识到可能遇到了传说中的云开发模式。这种技术架构下小程序的核心逻辑运行在云端本地只是个空壳。就像你去餐厅吃饭服务员客户端只负责传菜真正的厨师业务逻辑躲在你看不见的后厨。常规抓包工具只能截获服务员来回跑动的轨迹却拿不到厨房的秘方。2. 另辟蹊径的调试方案在GitHub漫无目的搜索时一个叫WeChatOpenDevTools-Python的项目引起了我的注意。这个工具的原理很巧妙——它通过Python调用微信开发者工具的底层接口直接给小程序开个后门。安装过程比想象中简单git clone https://github.com/JaveleyQAQ/WeChatOpenDevTools-Python pip install -r requirements.txt python main.py -x启动后会弹出一个类似Chrome DevTools的调试窗口但令人沮丧的是网络请求里依然看不到原始数据。这时候我才彻底明白云开发模式下连调试工具看到的都是幻象。就像魔术师永远不会让你看到道具的暗格腾讯把关键逻辑都藏在了云端服务器。转折点出现在看雪论坛的一个老帖里。有前辈提到即便使用云开发小程序本地的wxapkg包仍然包含重要线索。这就像虽然厨师在后厨做菜但服务员身上总带着菜单和配料表。关键在于找到这个服务员的更衣室——微信客户端的缓存目录。3. 逆向工程实战全记录在Windows系统下微信小程序的缓存通常藏在C:\Users\[用户名]\Documents\WeChat Files\Applet。这个文件夹里有一堆以wx开头的哈希值命名的子目录每个都对应一个小程序。为了精确定位我直接清空了整个文件夹然后重新打开目标小程序——这样新生成的目录就一定是我们要找的。拿到wxapkg文件只是第一步这个包就像个上了锁的保险箱。需要先用pc_wxapkg_decrypt工具解密pc_wxapkg_decrypt.exe -wxid wx123456789 -in input.wxapkg -out output.wxapkg这里有个坑wxid参数不是随便填的必须对应小程序的原始ID。我通过抓包获取了这个小程序的appid然后在前述缓存目录的配置文件中找到了对应关系。解密后的文件还需要用wxappUnpacker进行反编译node wuWxapkg.js output.wxapkg整个过程就像在拆俄罗斯套娃——每解开一层都离核心更近一步。反编译后的项目虽然不能直接运行缺少云函数等关键组件但已经能看到前端加密逻辑的蛛丝马迹。4. 源码中的密码破译在还原的代码库里全局搜索sign、encrypt等关键词很快就锁定了几个可疑的JS文件。有意思的是某红书的加密策略比想象中简单——X-Sign其实就是对特定参数进行MD5加盐哈希。用Python还原这个逻辑大概长这样import hashlib def generate_xsign(params): salt WSUDD # 通过反编译发现的盐值 param_str .join([f{k}{v} for k,v in params.items()]) return hashlib.md5((param_str salt).encode()).hexdigest()但真正的突破点是在一个不起眼的util.js文件里。原来这次接口变动根本不是加密算法升级而是后端悄悄移除了prependNoteIds这个非必填参数。这种改动就像餐厅换了菜单排版虽然菜品没变但老顾客按旧方式点菜就会出错。5. 技术攻关的经验之谈这次逆向过程给我最大的启示是当常规手段失效时不妨回到技术原点。就像侦探破案监控录像抓包看不到线索就去查嫌疑人的垃圾箱本地缓存。有几个关键心得值得分享工具链的灵活组合没有万能工具但Fiddler算法助手逆向工具的组合能覆盖90%场景。就像修车师傅的工具箱每件工具都有特定用途。逆向工程的耐心反编译得到的代码往往支离破碎需要像拼图一样重组。我习惯用VS Code的全局搜索配合AST解析工具逐步梳理调用关系。加密逻辑的共性大多数企业的加密方案都会保持向下兼容。这次发现的盐值WSUDD就和三年前论坛曝光的版本一致说明核心逻辑往往最稳定。最后要提醒的是这类技术研究务必控制在合法合规范围内。我们团队在解决问题后第一时间与某红书平台进行了技术沟通现在双方已经建立了正式的数据合作通道。技术本无善恶关键在于使用者的初衷和方式。

更多文章