当前位置: 首页 > article >正文

逆向实战:WASM加密在荔枝网x-itouchtv-ca参数中的定位与Hook技巧

1. WASM加密技术解析WebAssembly简称WASM是一种新兴的二进制指令格式它的出现让前端加密技术迈上了新台阶。与传统JavaScript加密相比WASM具有明显的性能优势。在我的实际测试中相同加密算法在WASM环境下的执行速度比纯JavaScript实现快3-5倍这主要得益于WASM的静态类型系统和接近原生代码的执行效率。荔枝网采用的x-itouchtv-ca-key和x-itouchtv-ca-signature参数加密方案正是基于WASM技术构建的典型应用场景。这种加密方式有几个显著特点首先加密核心逻辑被编译为二进制代码大大增加了逆向分析的难度其次WASM模块可以动态加载使得加密逻辑的更新和维护更加灵活最后WASM与JavaScript的交互接口设计得当既保证了安全性又不失便利性。在逆向分析这类加密系统时我们需要重点关注几个关键点WASM模块的加载时机、导出函数的调用关系、内存管理机制等。以荔枝网为例其加密过程主要发生在WASM模块导出的特定函数中这些函数会被JavaScript代码调用完成最终的参数加密。2. 加密参数定位实战2.1 Hook技术应用定位加密参数最有效的方法之一就是Hook技术。具体到WASM场景我们需要重点关注WebAssembly.instantiateStreaming这个关键API。下面是我在实际调试中使用的Hook代码// 保存原始方法 const originalInstantiate WebAssembly.instantiate; // 重写instantiate方法 WebAssembly.instantiate function(buffer, imports) { console.log(WASM instantiate called:, buffer, imports); // 调用原始方法 return originalInstantiate.call(this, buffer, imports).then(result { // 获取所有导出 const exports result.instance.exports; console.log(WASM exports:, Object.keys(exports)); // 拦截每个导出函数 Object.keys(exports).forEach(key { if (typeof exports[key] function) { const orig exports[key]; exports[key] function(...args) { console.log(WASM函数 ${key} 被调用参数:, args); const ret orig.apply(this, args); console.log(返回值:, ret); return ret; }; } }); return result; }); };这段代码的核心思路是通过重写关键API在WASM模块加载时插入我们的监控逻辑。当加密函数被调用时我们可以获取到完整的调用参数和返回值这对后续分析至关重要。2.2 堆栈回溯技巧除了Hook技术堆栈回溯也是定位加密位置的有效方法。具体操作步骤如下在开发者工具中设置XHR断点条件设置为包含目标API地址如api/search/v1/news触发请求后在调用堆栈中逐步向上追踪重点关注参数t的生成位置这通常是加密结果的来源在可疑函数处设置断点观察变量变化在实际调试荔枝网时我发现加密结果最终来源于一个名为m的函数这个函数内部又调用了WASM模块导出的加密函数。通过这种层层追踪的方式可以准确定位到加密的核心逻辑。3. 逆向分析实战步骤3.1 环境准备与工具配置进行WASM逆向分析需要准备以下工具和环境Chrome或Firefox最新版支持完整的WASM调试功能开发者工具特别是Sources和Memory面板文本编辑器用于查看和修改代码Node.js环境用于本地测试建议在开始分析前先熟悉WASM的基本调试方法。在Chrome开发者工具中WASM代码可以通过Sources面板下的WebAssembly标签页查看和调试。3.2 关键断点设置技巧设置断点是逆向分析的核心技能。针对荔枝网的加密分析我推荐以下几个关键断点位置WebAssembly.instantiate调用处捕获WASM模块加载过程WASM导出函数调用处监控加密函数执行网络请求发起处定位加密参数的最终使用位置加密结果生成处分析加密算法细节在实际操作中可以使用条件断点来提高效率。例如只在特定参数出现时才触发断点避免不必要的暂停。4. 代码还原与模拟4.1 WASM模块提取要完整还原加密逻辑首先需要获取WASM模块文件。在荔枝网的案例中可以通过以下步骤获取在Network面板过滤.wasm文件找到对应的WASM请求并保存响应内容使用wasm2wat工具将二进制文件转换为可读的文本格式wasm2wat lizhi.wasm -o lizhi.wat转换后的.wat文件虽然可读性有所提升但仍然需要一定的WASM知识才能理解。重点关注导出函数部分这些通常是加密逻辑的入口。4.2 JavaScript环境补全在本地模拟加密过程时经常遇到环境检测的问题。以下是几个常见的补环境技巧// 补全navigator对象 Navigator.prototype.userAgent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; // 补全location对象 location { host: www.gdtv.cn, origin: https://www.gdtv.cn, href: https://www.gdtv.cn }; // 函数toString保护 Function.prototype.toString function() { return function() { [native code] }; };这些补环境措施可以有效绕过常见的环境检测让加密代码在本地正常运行。在实际操作中可能需要根据具体情况调整补全的内容。5. 完整调用链分析通过对荔枝网加密过程的深入分析我梳理出了完整的调用链条页面加载时动态请求WASM模块JavaScript调用WASM导出函数进行加密加密结果被添加到请求头中发送带有加密参数的请求具体到代码层面主要涉及以下几个关键函数m函数JavaScript层的加密入口WASM导出函数实际执行加密计算请求封装函数将加密结果添加到headers理解这个调用链对后续的逆向工程至关重要它帮助我们明确了分析的重点和方向。6. 常见问题与解决方案在实际逆向过程中我遇到了几个典型问题及解决方法问题1WASM函数调用参数类型不匹配解决方案仔细分析.wat文件中的函数签名确保传入参数的类型和数量完全匹配。问题2环境检测导致加密失败解决方案使用Proxy对象全面代理常见环境对象如window、document等。问题3时间戳校验导致加密失效解决方案在本地模拟时需要保持与服务器时间同步或者Hook时间相关函数。问题4内存访问越界解决方案在调用WASM函数前确保内存指针有效必要时先分配足够的内存空间。7. 进阶调试技巧对于更复杂的WASM逆向场景可以采用以下进阶技巧内存快照分析在关键节点保存WASM内存状态对比分析加密前后的变化导出函数监控为所有WASM导出函数添加日志全面掌握调用情况性能分析利用Performance面板分析加密函数的执行耗时定位关键路径交叉引用在JavaScript和WASM代码间建立交叉引用理清数据流向这些技巧在我分析荔枝网加密时发挥了重要作用特别是内存快照分析帮助我快速定位了加密中间结果的存储位置。8. 安全防护建议对于开发者而言基于WASM的加密方案虽然安全性较高但仍有一些需要注意的地方关键逻辑分散不要将所有加密逻辑都放在WASM中可以结合JavaScript实现多层防护动态加载考虑分阶段加载WASM模块增加逆向难度环境检测加入适当的环境检测逻辑防止代码在非预期环境中运行混淆加固对JavaScript代码进行混淆保护WASM的调用接口这些措施可以有效提升整体方案的安全性但也要注意平衡安全性和性能的关系。

相关文章:

逆向实战:WASM加密在荔枝网x-itouchtv-ca参数中的定位与Hook技巧

1. WASM加密技术解析 WebAssembly(简称WASM)是一种新兴的二进制指令格式,它的出现让前端加密技术迈上了新台阶。与传统JavaScript加密相比,WASM具有明显的性能优势。在我的实际测试中,相同加密算法在WASM环境下的执行速…...

直接上代码吧,咱们先用Python+OpenCV搞个帧间差法的Demo。看这段核心代码

基于帧间差法进行视频目标检测处理 【是仅源码的价格】 【可写完整课程设计文档报告】 需要或需要请随时联系,博主常在线能秒回 1.[1]视频目标检测: 视频目标检测是指从视频流中自动识别和提取出运动目标的过程 视频目标检测算法通常基于以下原理和方法&…...

Windows 10下SQLMap安装配置全攻略(附Python环境搭建)

Windows 10下SQLMap实战指南:从Python环境搭建到高级配置 在渗透测试和安全研究领域,SQLMap无疑是数据库安全检测的瑞士军刀。这款开源工具能够自动检测和利用SQL注入漏洞,支持几乎所有主流数据库系统。但对于Windows用户,特别是刚…...

SMBIOS字符串逆向解析技巧:从二进制数据到硬件信息全解密(含Type1实例分析)

SMBIOS字符串逆向解析技巧:从二进制数据到硬件信息全解密(含Type1实例分析) 在数字取证和硬件分析领域,SMBIOS数据结构就像一台计算机的"身份证档案库",存储着从主板序列号到电池规格等数百项硬件细节。但当…...

基于YOLOV8的车辆检测系统:快速上手与实用功能

基于YOLOV8的车辆检测系统 基于深度学习的车辆检测系统有数据集 模型已经训练好 直接用即可 报告 30r 就是售价 包搭配环境 远程运行跑通程序 本项目已经训练好模型,配置好环境可直接使用,运行效果见图像(可找我要演示视频) 项…...

Graphormer在药物发现中的价值:缩短先导化合物筛选周期50%以上

Graphormer在药物发现中的价值:缩短先导化合物筛选周期50%以上 1. 引言:药物研发的新利器 在药物研发领域,科学家们每年需要筛选数百万种化合物来寻找潜在的药物候选分子。传统方法不仅耗时耗力,而且成本高昂。Graphormer的出现…...

毫米波行波管核心:折叠波导慢波结构原理、优势、对比与设计实战

在毫米波行波管(TWT)领域,折叠波导慢波结构(FW-SWS) 是无可争议的 “王者”—— 它凭借全金属结构、高功率容量、宽频带和成熟的加工工艺,在 Ka 波段及以上的功率器件中占据绝对主导地位,是卫星…...

RX9 vs RX7:哪个更适合你的AU音频修复工作流?实测对比与安装教程

RX9 vs RX7:专业音频修复工具深度评测与实战指南 在数字音频处理领域,iZotope RX系列一直是音频修复的金标准。当最新版RX9与经典版RX7同时出现在插件列表中,专业音频工程师们常常面临选择困境——是升级到功能更强大的新版本,还是…...

基于企业发展过程的改进型元启发式算法IED:一种高效智能优化策略的探索与应用

改进企业发展优化算法IED,(Enterprise Development, ED)是一种新型的元启发式算法(智能优化算法),灵感来源于企业的发展过程。 该算法清晰易懂,与我们日常使用的优化算法相近,发表的期刊等级很高&#xff0…...

普通程序员有必要深入学习JVM底层原理吗?

对于JVM,我想大部分小伙伴都是要面试了才会去学,其余时间基本不会去看。但值得一说的是,当你工作多年之后,你遇到的项目会越来越复杂,遇到的问题也会越来越复杂:各种古怪的内存溢出,死锁&#x…...

【优化求解】基于matlab粒子群算法面向弹性提升的多种应急资源参与配电网抢修恢复【含Matlab源码 15275期】

💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞&#x1f49…...

Optisystem仿真案例5-三种调制格式的FSO空间自由光通信系统 内容:搭建了OOK、P...

Optisystem仿真案例5-三种调制格式的FSO空间自由光通信系统 内容:搭建了OOK、PPM、BPSK基本结构的三种调制格式的FSO空间自由光通信系统 形式:程序+附带解析 最近在搞FSO通信仿真,试了三种不同的调制格式——OOK、PPM、BPSK&…...

别再只用BCE了!用PyTorch实现ASL损失函数,搞定多标签分类中的样本不均衡

多标签分类新范式:PyTorch实战ASL损失函数解决样本不均衡难题 在图像标注、医学诊断或文本情感分析等多标签分类任务中,我们常常遇到一个棘手问题——某些标签的出现频率可能比其他标签高出几个数量级。想象一下,当你构建一个商品标签系统时&…...

5个高效模块精通抖音视频批量下载工具:从技术原理到实战应用

5个高效模块精通抖音视频批量下载工具:从技术原理到实战应用 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback…...

霞鹜文楷屏幕阅读版:2025年最佳屏幕阅读字体解决方案

霞鹜文楷屏幕阅读版:2025年最佳屏幕阅读字体解决方案 【免费下载链接】LxgwWenKai-Screen LXGW WenKai for Screen Reading. 项目地址: https://gitcode.com/gh_mirrors/lx/LxgwWenKai-Screen 还在为长时间盯着屏幕阅读而感到眼睛疲劳吗?&#x1…...

Attu可视化工具:向量数据库性能监控与运维效率提升实践

Attu可视化工具:向量数据库性能监控与运维效率提升实践 【免费下载链接】attu The Best GUI for Milvus 项目地址: https://gitcode.com/gh_mirrors/at/attu Attu作为Milvus向量数据库的图形化管理界面,通过系统监控工具、性能分析仪表盘和可视化…...

3步掌控Windows驱动管理:从冗余清理到系统性能提升全指南

3步掌控Windows驱动管理:从冗余清理到系统性能提升全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer Windows系统随着使用时间增长,驱动存储区会积累大量冗余…...

Halcon拼图算子tile_images_offset实战:从图像裁切到精准拼接

1. 认识tile_images_offset算子 第一次接触Halcon的tile_images_offset算子时,我正面临一个棘手的工业检测项目。客户需要将多个摄像头拍摄的电路板局部图像拼接成完整视图,传统手动拼接方式效率低下且误差大。这个算子就像及时雨,完美解决了…...

P3C代码规范检查:风险驱动架构下的动态治理策略

P3C代码规范检查:风险驱动架构下的动态治理策略 【免费下载链接】p3c Alibaba Java Coding Guidelines pmd implements and IDE plugin 项目地址: https://gitcode.com/gh_mirrors/p3/p3c 在数字化转型浪潮中,企业级Java应用面临代码质量与开发效…...

Qwen3.5-9B-AWQ-4bit操作系统概念学习与实验指导

Qwen3.5-9B-AWQ-4bit操作系统概念学习与实验指导 1. 当AI成为你的操作系统课助教 想象一下,凌晨两点你正在赶操作系统课程的作业,突然卡在进程调度算法上。这时候如果有个随时在线的助教,能清晰解释概念、提供实验思路,甚至给出…...

终极指南:让macOS Finder视频预览功能焕发新生的QLVideo插件

终极指南:让macOS Finder视频预览功能焕发新生的QLVideo插件 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://…...

G-Helper解决华硕笔记本风扇异常问题完全指南

G-Helper解决华硕笔记本风扇异常问题完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and other model…...

Quartus元器件仿真波形生成实战指南

1. Quartus元器件仿真波形生成入门指南 第一次接触Quartus的仿真功能时,我也被那一堆专业术语搞得晕头转向。但后来发现,只要掌握了基本流程,生成仿真波形其实就像用画图软件一样简单。这里我会用最直白的语言,带你一步步完成整个…...

javaweb驾校考试车辆预约系统

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分预约功能设计考试管理模块系统辅助功能技术实现参考项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块…...

javaweb铁路火车接发车课程作业培训考试系统证书

目录同行可拿货,招校园代理 ,本人源头供货商铁路火车接发车课程作业培训考试系统证书的功能分析系统概述功能模块分析技术实现要点行业合规性扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 …...

javaweb计算机教学活动教室预约系统聊天机器人

目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分智能聊天机器人功能系统集成设计技术实现要点项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块 实现…...

javaweb蔚来新能源汽车对比推荐平台设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块设计技术实现方案数据安全措施扩展功能设计项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块设计 用户管理模块 实现用户注…...

如何在5分钟内构建你的专业在线演示文稿:PPTist完全指南

如何在5分钟内构建你的专业在线演示文稿:PPTist完全指南 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing …...

League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验

League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...

Libsvm 编译mex不同平台兼容性问题 Application not supported on glnxa64 due to platform dependencies. Intended pl

matlab线上算法执行报错:Application not supported on glnxa64 due to platform dependencies. Intended platforms include: win64 排查后发现是使用了libsvm-3.3, 而libsvm编译的时候是基于win64编译的导致出现此bug.(因为libsvm的开源代码不是matlab&#xff0…...