WASM代码防逆向新突破:C语言混淆的5个关键技术点曝光

wasm逆向——(极客大挑战2021wasm WebAssembly是一种全新的Web编程语言,但是与JavaScript不同,它不是一种让你直接手动编写的语言,而是C / C ++,Rust,C#和TypeScript等不断增加的上层语言的编译目标。 wasm是基于堆栈的虚拟机的二进制指令格式 wabt包安装 尝试了gitclone的方法,一直没安装成功,尝试: sudo apt install wabt 我的环境:ubuntu20.4 WABT(我们将其称为“ wabbit”)是用于WebAssembly的一套工具,包括: wa. 阅读详情

第一章:WASM代码防逆向的现状与挑战

WebAssembly(WASM)作为一种高性能、可移植的底层字节码格式,正被广泛应用于前端加密计算、游戏引擎和敏感逻辑保护等场景。其二进制特性天然具备一定的代码混淆能力,使得传统基于JavaScript的静态分析手段难以直接奏效。然而,随着逆向工具链的成熟,WASM模块也逐渐暴露出可被反编译、符号恢复和动态调试的风险。

逆向攻击手段的演进

攻击者可通过以下方式对WASM模块进行逆向分析:
  • 使用 wabt 工具集将 .wasm 文件转换为可读的 WAT(WebAssembly Text Format)
  • 借助 Chrome DevTools 或 wasmdump 进行运行时内存和函数调用追踪
  • 通过 Hook instantiate 过程注入调试逻辑,捕获参数与返回值

常见防护技术对比

技术手段实现难度防护强度性能损耗
控制流混淆中高较高
字符串加密低中低
多层加载器高高高

典型防御代码示例

在编译阶段通过 Emscripten 注入混淆逻辑,例如对关键函数进行死代码插入:

// 关键函数混淆示例
int secure_calc(int a, int b) {
    int dummy1 = rand(); // 死变量干扰
    int dummy2 = dummy1 * 3 + 7;
    
    if (dummy2 % 2) { // 不可达分支
        return dummy1 - a;
    }

    return a * b + 10; // 实际逻辑
}
上述代码通过引入无关变量与不可达路径,增加反编译后人工分析的复杂度。

未来挑战

尽管现有手段可在一定程度上延缓逆向进程,但自动化去混淆工具的发展正在削弱这些防护的有效性。此外,浏览器暴露的调试接口和 WASM 的确定性执行模型,也为动态分析提供了便利条件。如何在性能、兼容性与安全性之间取得平衡,仍是当前亟待解决的核心问题。

第二章:C语言到WASM的编译链混淆技术

2.1 LLVM中间表示层的控制流扰乱策略

在LLVM IR层面实现控制流扰乱,核心在于重构程序的控制流图(CFG),使其逻辑等价但结构复杂化。常见手段包括基本块分割、插入无意义跳转和等效分支替换。
基本块拆分与重组
将一个基本块拆分为多个子块,并通过跳转指令连接,增加分析难度。例如:

; 原始代码
%entry:
  %a = add i32 1, 2
  br label %exit

; 扰乱后
%entry:
  br label %split1
%split1:
  %a = add i32 1, 2
  br label %split2
%split2:
  br label %exit
上述变换保持语义不变,但增加了控制流路径数量,干扰静态分析工具的追踪能力。
混淆策略对比
策略抗分析强度性能开销
跳转插入中低
等效分支替换高中

2.2 函数分割与合并对逆向分析的干扰机制

在逆向工程中,函数分割与合并是一种常见的控制流混淆手段,旨在破坏程序原有的逻辑结构,增加静态分析难度。
函数分割的干扰原理
将一个完整函数拆分为多个片段,散布于不同地址,仅通过特定跳转逻辑串联。例如:

sub_401000:
    mov eax, 1
    jmp sub_401050_part2

sub_401050_part1:
    add eax, ebx
    ret

sub_401050_part2:
    call sub_401050_part1
上述代码将原函数逻辑割裂,需动态执行才能还原完整流程,极大干扰反编译器的函数识别。
函数合并的混淆效果
多个无关函数被强行合并为一个“超级函数”,通过内部状态机调度执行路径:
  • 增加虚假控制流边,误导调用关系分析
  • 隐藏真实函数边界,使符号恢复困难
  • 提升基本块数量,加剧图匹配复杂度
此类技术结合跳转指令变形,可有效延缓逆向者对核心逻辑的定位与理解。

2.3 基于WASM指令特性的虚假操作插入实践

在WebAssembly(WASM)二进制指令层面,通过插入无实际语义影响的虚假操作可有效干扰逆向分析。这类操作利用WASM栈式虚拟机特性,在不影响程序逻辑的前提下增加控制流复杂度。
常见虚假指令类型
  • unreachable:插入后需确保控制流不实际执行,用于触发陷阱混淆
  • drop:丢弃栈顶值,常与冗余计算配合使用
  • nop:空操作,填充指令流以打乱模式识别
代码示例与分析

(local.set $tmp (i32.const 42))
(drop (local.get $tmp))  ;; 冗余读取并丢弃
(i32.add (i32.const 1) (i32.const 2))
上述代码中,local.set 与 drop 构成无副作用的操作对,编译器无法轻易优化,但运行时不影响结果,有效增加反汇编阅读难度。

2.4 类型混淆在WASM二进制中的实现路径

类型混淆(Type Confusion)是一种内存破坏漏洞,其核心在于程序错误地将一种数据类型视为另一种类型进行操作。在WebAssembly(WASM)环境中,尽管具备类型安全设计,但通过精心构造的二进制段,仍可能诱导运行时产生类型判断偏差。
WASM类型系统的边界挑战
WASM采用静态强类型,函数参数与返回值均需显式声明。然而,在涉及引用类型(如 externref 或 funcref)时,若宿主环境(如JavaScript)传入非预期对象,可能引发类型混淆。

(local.set $ptr (i32.const 1024))        ;; 将整数赋给指针位置
(table.set 0 (local.get $func_ref))       ;; 试图以函数引用写入整型槽位
上述代码片段中,若运行时未严格校验 table.set 的引用类型,可能导致函数指针被非法覆盖,进而触发执行流劫持。
利用场景与防护机制
  • 通过导出表与导入段篡改函数签名
  • 滥用动态链接中的符号解析顺序
  • 借助JIT编译优化阶段的类型推测漏洞
现代引擎通常引入类型侧表(Type Side Tables)和堆栈映射验证来缓解此类风险。

2.5 编译时随机化增强对抗静态分析能力

现代软件面临日益复杂的逆向工程与静态分析威胁,编译时随机化技术通过在构建阶段引入不确定性,显著提升攻击者静态解析难度。
随机化策略实现
常见手段包括函数重排、指令填充与虚拟寄存器重映射。例如,在LLVM层面插入随机基本块:

; 随机插入无害跳转
%rand_label = opaquely_compute %cond
br i1 %rand_label, label %safe_path, label %delay_path

delay_path:
  ; 延迟执行路径,不影响逻辑
  call void @noop()
  br label %safe_path
上述代码通过条件分支混淆控制流,%rand_label由编译期不可预测的 opaque 函数生成,使反汇编结果每次不同。
效果对比
指标未启用随机化启用后
函数偏移可预测性高低
符号恢复成功率89%32%

第三章:运行时保护与动态解混淆设计

3.1 WASM模块加载阶段的代码自解密方案

在WebAssembly模块加载过程中,为防止静态分析和逆向工程,可采用运行时自解密技术保护核心逻辑。该方案将加密的WASM二进制嵌入宿主应用,在实例化前通过JavaScript解密并动态构造`WebAssembly.Module`。
解密流程设计
  • 原始WASM文件经AES加密后存储于资源服务器
  • 前端获取密文并通过fetch API加载
  • 使用预置密钥在内存中完成解密,避免明文持久化

// 加载并解密WASM模块
async function loadDecryptedWasm(url, key) {
  const encryptedBytes = await fetch(url).then(res => res.arrayBuffer());
  const decryptedBytes = await crypto.subtle.decrypt(
    { name: 'AES-GCM' }, key, encryptedBytes
  );
  return await WebAssembly.instantiate(decryptedBytes); // 动态实例化
}
上述代码中,crypto.subtle.decrypt执行浏览器内置的AES-GCM解密,确保高效与安全;instantiate直接在内存中编译解密后的字节流,杜绝中间文件泄露风险。密钥可通过环境变量或OAuth令牌派生,增强访问控制。

3.2 利用JavaScript胶水代码协同混淆的实践

在复杂前端架构中,JavaScript“胶水代码”常用于整合多个混淆后的模块。通过设计低耦合的接口层,可实现逻辑与实现的分离,增强反分析能力。
动态函数绑定机制

// 使用闭包封装真实函数引用
const glueLayer = (() => {
  const secretKey = 'obf_key_7x';
  return (action) => {
    if (window[secretKey] && window[secretKey][action]) {
      return window[secretKey][action]();
    }
  };
})();
上述代码通过闭包隐藏关键映射关系,secretKey 作为运行时符号索引,防止静态分析直接追踪调用链。
模块通信策略
  • 事件总线模式:解耦模块间直接依赖
  • 代理转发:通过中间层重定向调用请求
  • 延迟绑定:运行时动态注册功能句柄

3.3 内存布局随机化对动态调试的防御效果

内存布局随机化(ASLR, Address Space Layout Randomization)通过在程序加载时随机化关键内存区域(如栈、堆、共享库)的基地址,显著增加攻击者预测目标地址的难度。
ASLR 的典型作用范围
  • 栈(Stack)起始地址随机化
  • 堆(Heap)分配基址随机化
  • 共享库(如 libc)加载位置随机化
对动态调试的影响
调试器依赖稳定的内存布局进行断点设置和符号解析。启用 ASLR 后,每次运行程序的内存布局不同,导致:
// 示例:获取 libc 基地址(需绕过 ASLR)
void* handle = dlopen("libc.so.6", RTLD_NOLOAD);
if (handle) {
    void* system_addr = dlsym(handle, "system");
    printf("system() 地址: %p\n", system_addr); // 每次运行可能不同
}
该代码每次执行输出的 `system()` 地址会因 ASLR 而变化,迫使调试或利用过程必须先泄漏地址信息。
防御强度对比
配置是否启用 ASLR调试难度
开发环境否低
生产环境是高

第四章:控制流与数据流混淆关键技术

4.1 超级块重组与跳转间接化的实现方法

在现代编译优化中,超级块重组通过整合基本块提升指令流水效率。关键在于识别主导控制流路径,并将分支概率高的路径线性化。
跳转间接化机制
采用跳转表(jump table)替代多路条件跳转,减少预测失败率:

void* jump_table[] = { &&label_0, &&label_1, &&label_2 };
goto *jump_table[opcode];
label_0: handle_case_0(); ...
该代码利用GCC标签作为值的特性,构建运行时跳转向量。jump_table 存储各处理例程入口地址,通过 opcode 索引实现 O(1) 分发。
优化收益对比
指标传统分支间接跳转
预测准确率78%93%
平均延迟(cycles)6.22.1

4.2 基于查表调度的虚拟化控制流构建

在虚拟化环境中,控制流的高效调度是保障系统性能的关键。基于查表调度的方法通过预定义的调度表驱动虚拟机实例的执行顺序,实现确定性与低延迟的控制。
调度表结构设计
调度表以时间槽为单位,记录每个时刻应激活的虚拟机ID及其执行时长:
时间槽VM ID执行周期(ms)
0VM110
1VM35
2VM28
查表调度执行逻辑

// 查表并调度下一任务
void schedule_next(int current_slot) {
    VM* next_vm = lookup_table[current_slot].vm;
    int duration = lookup_table[current_slot].duration;
    activate_vm(next_vm, duration); // 激活指定虚拟机
}
上述代码从调度表中读取当前时间槽对应的虚拟机和执行周期,调用底层接口激活该虚拟机。lookup_table 为预加载的调度配置,确保调度决策无运行时计算开销。

4.3 敏感数据的分片存储与运行时还原

在高安全要求的系统中,敏感数据如用户密码、身份证号等需避免集中存储。分片存储通过将数据切分为多个片段,分散保存于不同存储节点,显著降低泄露风险。
分片策略设计
常见策略包括固定分片、哈希分片和动态偏移分片。其中动态偏移更具安全性,能有效抵御基于位置的攻击。
运行时还原机制
数据在使用时才进行实时拼接,需确保传输通道加密且各分片独立验证完整性。
// 示例:简单分片还原逻辑
func restore(shard1, shard2 string) string {
    return shard1 + shard2 // 实际应加入签名验证与解密
}
该函数演示了基础拼接过程,实际应用中应集成AES解密与HMAC校验,确保还原数据可信。
  • 分片不应包含完整敏感信息语义
  • 各存储节点须配置独立访问控制策略
  • 运行时环境需隔离,防止内存泄露

4.4 多态表达式计算在常量隐藏中的应用

在编译优化中,多态表达式计算可用于识别并隐藏重复的常量值,从而减少内存占用。通过分析不同类型的表达式路径,编译器可在不改变语义的前提下合并等价常量。
表达式类型推导流程

类型推导 → 表达式归约 → 常量折叠 → 隐藏替换

代码示例:常量折叠与替换

// 简化多态表达式中的常量运算
func simplify(expr Expr) Expr {
    switch e := expr.(type) {
    case *IntLiteral:
        if e.Value == 0 { return hiddenConst } // 隐藏零值
    case *BinaryOp:
        left, right := simplify(e.Left), simplify(e.Right)
        if isConstant(left) && isConstant(right) {
            return evalConstOp(left, right, e.Op) // 常量折叠
        }
    }
    return expr
}
上述代码对表达式递归遍历,识别可计算的常量子树并执行折叠。当检测到特定常量(如0、1)时,替换为预定义的隐藏符号,实现常量隐藏。
  • 多态性支持多种字面量统一处理
  • 表达式归约降低运行时开销
  • 常量隐藏提升符号混淆安全性

第五章:未来趋势与技术演进方向

边缘计算与AI推理的深度融合
随着物联网设备数量激增,传统云端AI推理面临延迟与带宽瓶颈。越来越多企业将模型部署至边缘节点,如NVIDIA Jetson系列设备已广泛应用于智能制造质检场景。典型部署流程如下:

import torch
from torchvision.models import mobilenet_v2

# 加载轻量化模型
model = mobilenet_v2(pretrained=True)
model.eval()

# 模型量化以适配边缘设备
quantized_model = torch.quantization.quantize_dynamic(
    model, {torch.nn.Linear}, dtype=torch.qint8
)

# 导出为ONNX格式供边缘运行时加载
torch.onnx.export(quantized_model, dummy_input, "model_edge.onnx")
云原生安全架构升级
零信任(Zero Trust)模型正成为主流安全范式。Google BeyondCorp实践表明,基于身份与设备状态的动态访问控制可降低内部横向移动风险达76%。关键实施步骤包括:
  • 统一身份认证集成(如OIDC + MFA)
  • 微服务间mTLS通信加密
  • 持续设备合规性评估
  • 细粒度访问策略动态下发
量子抗性密码迁移路径
NIST已选定CRYSTALS-Kyber作为后量子加密标准。金融行业试点项目显示,采用Kyber-768替换现有RSA-2048可保持90%以上性能水平。下表对比主流PQC算法特性:
算法密钥大小 (公钥)加密速度适用场景
Kyber-7681184 字节高速TLS 1.3 密钥交换
Dilithium31952 字节中等数字签名
自由创新研究探索:四阶闭环工作流方法论 在从0到1的技术创新与复杂问题解决中,'自由、创新、研究、探索'并非抽象价值观,而是遵循人类认知规律与工程实践逻辑的可量化闭环工作流。其本质是通过结构化约束激发真正创造力(自由),以系统性试错替代灵光乍现(创新),用原子级可证伪假设驱动实证验证(研究),再借破坏性压力测试主动测绘能力边界(探索)。该范式广泛适用于AI模型落地、硬件协同开发、SaaS产品MVP验证及科研课题攻关等场景,尤其能破解高校开题卡壳、企业技术破局难、独立开发者验证乏力等典型困境。文中深度融合‘约束画布’‘路径扑克’‘原子假设清单’等一 阅读详情

相关推荐

Datalog语言详解

Datalog是一种声明式逻辑编程语言,起源于数据库理论和逻辑编程领域。作为Prolog的子集,它专注于递归查询和推理,通过定义事实和规则来描述数据关系而非计算步骤。Datalog的关键特性包括规则安全、递归、分层否定和扩展聚合功能,保证了程序的终止性和高效性。相较于SQL,Datalog更擅长处理递归查询;相比Prolog,它更注重数据库友好性。Datalog在程序分析、知识图谱、网络安全等领域有广泛应用,其声明式特性使代码简洁易维护,但同时也面临生态系统小、性能调试难等挑战。现代工具如Soufflé、D

bulita great world 1843

JS逆向之wasm逆向(二进制)

于是我跟着断点调试到了这里 这里是一个switch代码 至于是上面switch我这里就不多说了 o=i.sign o=i.sign实在case=4这里的 case的e.next是4说明0走完就走4 n.e(2284).then(n.bind(n, 22284));说明着代码就是我们的i函数 但是他又是异步的 我们就很难去调试他这个过程;最终我们看到了这里 这里就是我们我们上面提到的问题 有 WebAssembly有fetch API加载 这里就完全是一个wasm加密的特征啦。

weixin_44504978的博客 4691

LABVIEW学习之MODBUS-TCP通讯

LABVIEW学习之MODBUS-TCP通讯 1,MODBUS-TCP通讯介绍: MODBUS通讯是工业上面经常用到的一种通讯协议。该协议的原理及介绍不在此累述,下面直接介绍LABVIEW对此协议的应用。 2,MODBUS通讯所需的函数: 安装了DSC模块之后可以在数据通信内找到相关函数 3 ,主VI 主要思路就是使用状态机来进行连接 读取 写入 断开。使用枚举类型来选择状态: 1,连接 2,写入多个M继电器: 3,写入单个M继电器 4,写入双字节D...

风动9527的博客 2万+

分析 WebAssembly 二进制文件 - Wasm 逆向工程

我们最近发表了一篇关于WebAssembly (Wasm)的安全问题和基本概念的博文。作为后续,这篇文章将介绍 Wasm 应用程序的逆向工程。考虑一下您遇到未知 Wasm 应用程序的场景,您需要弄清楚它的作用。你将如何分析它?目前几乎没有任何关于该主题的有用文档,因此我们决定部分填补这一空白。 Wasm 应用程序可以通过不同的方式进行分析。今天我们将通过一个非常简单的应用程序来介绍 Chrome 内置的 Wasm 调试功能。随着我们的进行,一些理论将被介绍。 想要直接了解更多技术内容的不耐烦的读者可以从附录

u014643814的博客 4404

使用STM32制作简易数字时钟

连接LED数码管的电源和地线到STM32单片机的对应引脚,将数码管的A、B、C、D引脚连接到STM32单片机的I/O口引脚。通过编写和调试这个项目,可以熟悉STM32单片机的GPIO口和定时器的使用,以及数字显示的控制。步骤六:测试和调试 通过观察数码管的显示,可以验证时钟功能是否正常工作。步骤四:编写代码 在主程序中,我们将使用定时器中断来控制时钟的运行,并使用GPIO口控制LED数码管的显示。步骤五:编译和下载 编译代码并下载到STM32单片机中,通过调试器和串口监视器进行调试和查看输出结果。

qq_67153941的博客 1303

WPF MVVM实战:构建可绑定的RichTextBox富文本编辑器

本文详细介绍了如何在WPF MVVM模式下构建可绑定的RichTextBox富文本编辑器,解决标准RichTextBox.Document属性不支持数据绑定的问题。通过创建自定义BindableRichTextBox控件,实现FlowDocument的绑定支持,并分享插入图片、文本格式控制等实战技巧,帮助开发者高效开发富文本编辑功能。

weixin_33717117的博客 307

JS逆向之Wasm逆向过程

主要讲wasm逆向过程及调用wasm过程。

m0_64408930的博客 2万+

保姆级教程:用NFS把群晖NAS的文件夹挂到Ubuntu 22.04上,实现文件无缝共享

本文提供了一份详细的教程,指导用户如何通过NFS协议将群晖NAS的文件夹挂载到Ubuntu 22.04系统上,实现文件的无缝共享。文章对比了NFS与SMB协议的性能差异,并提供了群晖端和Ubuntu端的配置指南、高级参数优化、自动挂载方案以及生产环境中的实战技巧,帮助用户提升文件共享效率和系统稳定性。

weixin_29213827的博客 405

TikTok X-Dynosaur 逆向日志(item_list 接口)分析

使用真实浏览器捕获的请求中的X-Dynosaur,按运行时s2X-Dynosaur 字符长度: 392解码长度: 292 bytes前 32 bytes:首两字节: 3f 74旧实现 magic 4a 00: 不存在明文 ASCII X-Dynosaur: 不存在这证明当前线上样本与旧实现的外层密文前缀不同,尽管两者同为 292 bytes 且使用同一自定义字符表。旧实现的0x4a00位于 XOR 前明文,因此本样本不能仅以不含4a00排除旧布局;

weixin_52283613的博客 917

EtherCAT主站开发(学习笔记一)

摘要:本文介绍了基于STM32H7的EtherCAT主站开发探索。EtherCAT是一种高实时性工业以太网协议,具有低延迟、高带宽利用率等特点。文章详细解析了EtherCAT的协议架构、帧结构和工作原理,重点阐述了PDO数据传输过程及主从站通信机制。同时介绍了CoE、FoE等应用层协议扩展。作者将基于SOEM开源协议栈进行开发,为后续实际应用中的伺服电机控制奠定基础。

weixin_69388007的博客 1475

从零完成 STM32 + ESP-01S + 云服务器 TCP 通信测试

STM32 通过 USART3 控制 ESP-01S 接入手机 2.4 GHz 热点,随后连接公网云服务器 8.152.204.86:9002。云端在同一 TCP 连接中连续收到 seq=1~6 的测试报文,5 个发送间隔平均约 5.4 秒,说明本次 TCP 上行链路已经打通。

weixin_51387720的博客 312

逆向分析与破解WASM

本文介绍了WebAssembly(Wasm)的基本概念、调用方法和逆向分析。Wasm是一种高性能、安全的低级编程语言,可在浏览器中运行,支持C/C++/Rust等语言的编译。文章详细讲解了Wasm在网页和Node.js中的加载方式,包括使用fetchAPI获取模块、instantiate函数实例化等关键步骤,并提供了JavaScript和Python的调用示例。最后通过一个电影网站接口加密参数逆向的案例,展示了Wasm的实际应用场景和逆向分析流程。

ningmengjing_的博客 2995

YOLOv5/v7/v8/v9/v10/v11/v12/13目标检测结果解析,超w字精读,IoU、GIoU、DIoU、CIoU、EIoU详细解释,精确率、召回率、AP、mAP与P-R 曲线图深度解析

YOLOv5/v7/v8/v9/v10/v11/v12/13目标检测结果解析,超w字精读,IoU、GIoU、DIoU、CIoU、EIoU详细解释,精确率、召回率、AP、mAP与P-R 曲线图深度解析

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1413

python爬虫之wasm逆向 wasm逆向 超详细

前言:wasm简介,在js逆向中,遇到wasm加密,wasm是通过字节码以二进制格式传输,由于模块的结构,可以通过浏览器并行编译,以便进一步加快速度。 一.问题: 在请求链接上,发现有签名,咋一看像个时间戳进行处理后的数据。 二.解决: 1.全局搜索sign(定位技巧),轻松找到sign,向上看使用$wasm进行加密。 2.在谷歌中可以看见wasm源码,在火狐中看到就是base64编码,解码后看到的是一串乱码。 谷歌查看: 火狐查看: 3.先把wasm文件...

m0_46631208的博客 8085

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

WebAssembly(wasm)逆向记录

WebAssembly(wasm)逆向记录

huangch135的博客 2868

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WASM反编译,WASM逆向

/Users/bj/gitlab/Application/articleFetch/wabt/bin/wasm-decompile test.wasm -o test.o

小朱的专栏 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WebAssembly 逆向分析:如何反编译 Wasm 二进制文件,修改游戏里的“金币数量”?

WebAssembly 是一种基于堆栈虚拟机的二进制指令格式。它类似于汇编语言,但比 x86 汇编更抽象。浏览器加载.wasm文件,编译为机器码运行。逆向 Wasm 的两种核心思路:静态分析:将.wasm反汇编为.wat(WebAssembly Text) 或伪 C 代码,分析逻辑。动态调试:利用浏览器开发者工具挂载断点,或直接修改(线性内存)。fill:#333;important;important;fill:none;color:#333;color:#333;important;

BUG猿的博客 2831

wasm逆向学习之旅

函数接受一个。

weixin_47115747的博客 3249

WebAssembly逆向工程:从安全机制破解到动态爬取实战指南

WebAssembly逆向工程:从安全机制破解到动态爬取实战指南

KE17RS的博客 2101

图灵逆向——题十一-wasm小试牛刀

典型的wasm加密逻辑,适合新手入门的JS逆向案例~

m0_73641772的博客 1572

JS逆向之x讯视频wasm的ckey分析

篇幅有限 完整内容及源码关注公众号:ReverseCode,发送 冲 起因 最近对腾讯视频下手了,因为公众号中的视频来源都是腾讯视频,也就是说通过2分钟阅读本文,腾讯视频下整站视频都可以下载下来,也是大多数在线解析vip等视频网站底层实现逻辑,接下来就是建站接广告接流量接法院传单。。。。 分析 通过点击播放抓包发现不停的请求http://btrace.video.qq.com/kvcollect,点击发现没有发现,不过这些请求都是m3u8格式片段,我们大胆猜测这是m3u8,将视频切成无数ts小段,一段一段

onejane 7069

【JS逆向百例】音乐 wasm 逆向

最近在看知识星球群聊的时候,发现有小伙伴在讨论某wasm的相关问题,之前也有星球成员私信询问这个案例。

K哥爬虫 1929

JS逆向之wasm逆向(二)

写完之后执行就拿到了sign方法 和其他几个我们需要执行的方法 o方法非常的简单 我这里怎么还原的 你们随便调试一下就知道了。这里下面就继续跟着我们咋天调试的步伐继续还原 还原b方法 b方法里面取值的一些方法就不一一调试了 里面的方法非常的简单。感兴趣的朋友去可以看看这个网站 里面有滑块 debugger 还有wasm 这些都值得去练习和玩玩的。这个网站我们后面可以继续讲他的debugger 和滑块和登录加密。上一篇我们把定位和原理讲得差不多了 现在讲这个我们怎么去调用他;下面是我们改写的代码。

weixin_44504978的博客 1944

wasm逆向

wasm逆向

qq_62204036的博客 1372
上一篇: CUDA内存泄漏排查全攻略:3步快速定位并解决隐性性能杀手
下一篇: 为什么你的Python程序慢如蜗牛?(C扩展加速全解析)
IterLoom
博客等级 码龄1年 171粉丝 2173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值