JEB Decompiler中文网站 > 热门推荐 > JEB Decomplier WebAssembly分析
JEB Decomplier WebAssembly分析
发布时间:2024/09/29 16:32:21

JEB Decomplier 是一款用于反编译和分析二进制文件的工具,而 WebAssembly(简称 WASM)是一种可以在现代网络浏览器中运行的二进制格式,它允许开发者使用诸如 C、C++ 和 Rust 等编程语言编写高效的代码,并将其编译为可以在浏览器中执行的字节码。下面我给大家介绍一下JEB Decomplier WebAssembly分析的相关内容。

 

JEB Pro 可用于分析和反编译 WebAssembly 二进制模块 (wasm)。反编译器生成类似 C 的代码。三个模块依赖于本机代码分析管道来处理 WebAssembly二进制文件:wasm二进制解析器、反汇编器扩展和反编译器扩展。

在 JEB 中打开 wasm 二进制文件后,它将被 WebAssembly 插件识别和处理: - 蓝点工件节点下的顶级单元节点代表模块本身。 - 它的第一个子节点名为“wasmbc image”,代表整个 WebAssembly 模块的内存视图,包含代码和数据。

 

1、模块单元

Sections 片段表示未修改的 wasm 部分列表。内存大小和偏移量无关紧要,并设置为零。请注意,上面的示例显示了一个自定义 dylink 部分,很可能表示使用emcc标志编译的二进制文件SIDE_MODULE=1

 

“Segments”“Symbols”选项卡详细说明了 wasm 插件如何布局和转换 wasm 模块的元素,以便底层代码插件能够处理它。

 

2、伪段

 

可映射段的概念在 WebAssembly 中并不存在。但是,为了让 JEB 代码插件(反汇编器、反编译器等)能够运行,wasm 插件创建了以下伪段:

 

  • .data从地址 0 开始并映射单个内存部分(以及初始化它的数据元素)
  •  
  • .table从地址 0x4000000 开始,保存指向表部分引用的函数的指针表(由元素部分初始化)
  •  
  • .code从地址 0x50000000 开始,包含所有内部函数的字节码,按索引顺序排列:大小为 S0 的第一个函数体位于地址 0x50000000,第二个函数体位于地址 0x50000000+S0,第三个函数体位于 0x50000000+S0+S1,等等。
  •  
  • .globals从地址 0x60000000 开始,将内部全局变量映射为标准全局变量;实际上,wasm 的全局变量(可通过 {SET,GET}_GLOBAL 运算符访问)和 wasm 的内存字节(可通过加载/存储运算符访问)被 JEB 视为相等。
  •  
  • .imports从地址 0x70000000 开始,包含对导入的(外部)函数节条目和全局节条目的指针引用
  •  

图像设置为在 [0, 0x80000000) 范围内映射。部分稀疏映射;仅分配使用的字节。起始地址灵活,可根据需要进行调整

 

3、符号

 

wasm 插件生成的符号有四种类型,并且可以具有多种属性:

 

  • FUNCTION用于内部函数
  •  
  • 导入函数和引用的内部函数的PTRUNCTION
  •  
  • 全局变量
  •  
  • PTRVARIABLE用于导入的全局变量
  •  
  • 4、代码视图
  •  

交互式反汇编窗口显示代表整个 WebAssembly 模块的伪虚拟内存,如上一节所述。

 

下面的屏幕截图显示了内部函数的反汇编区域。请注意,JEB 对函数字节码的表示是线性的,并且与底层二进制代码相匹配。指令前缀的绿色列表示执行前的当前块深度和当前操作数堆栈高度。

下面的快照显示了.data虚拟段的开头,代表 WebAssembly 数据部分。

 

代码视图是交互式的。但是,禁止修改代码(即篡改例程主体),因为它们会在函数索引空间中引入不一致。

5、反编译

 

JEB 的 WebAssembly 反编译器插件使用 JEB 的反编译管道来生成伪 C 代码。因此,该插件由 wasm-to-IR 转换器和其他分析器扩展组成。操作数堆栈上的插槽被转换为标准的常规上下文 IR 变量。

 

截至撰写本文时,wasm 反编译器具有以下限制:

 

  • 反编译器通常提供的全局高级分析被部分禁用(例如,高级分析负责在快速静态分析阶段发现寄存器值和调用站点目标,随后注释汇编清单)。
  •  
  • 不支持浮点运算转换。
  •  
  • 内存堆栈框架由于其在 WebAssembly 中的动态(和可选)特性,目前无法访问和定制。
  •  

随着反编译器插件的成熟,这些限制将得到解决。

以上就是JEB Decomplier WebAssembly分析的相关内容。JEB Decomplier是一款非常适合用于分析和反编译WebAssembly模块的工具。它结合了WebAssembly的高性能特性和JEB的强大反编译能力,使得开发者能够更深入地理解和优化WebAssembly代码。无论是用于性能分析、安全研究还是逆向工程,JEB Decomplier都能提供有力的支持。

读者也访问过这里:
135 2431 0251