猿人學第15題wasm逆向題目分析

滲透逆向 · 03-07 · 19 人浏览

正常下斷點,發現是個wasm加密,那麽我們可以直接下載這個wasm文件然後調用相關的加密函數。
2025-03-07T04:57:59.png
2025-03-07T04:58:52.png
WebAssembly,简称Wasm,是一个低级编程语言。WebAssembly是可移植性的抽象语法树,被设计来提供比JavaScript更快速的编译及执行。WebAssembly将让开发者能运用自己熟悉的编程语言编译,再藉虚拟机引擎在浏览器内执行。它有一种紧凑的二进制格式,使其能够以接近原生性能的速度运行,并且为诸如 C++ 和 Rust 等拥有低级的内存模型语言提供了一个编译目标,以便它们能够在网络上运行。(注意,WebAssembly 有一个在将来支持使用了垃圾回收内存模型的语言的高级目标。)

如果是用requests請求這個,記得用wb模式,也就是二進制來寫入。

以下代碼可以調用wasm的加密函數 wasmInstance.exports.函數名

const fs = require('fs');

async function runWasm() {
  try {
    const wasmCode = fs.readFileSync('15.wasm'); // 替换为你的wasm文件路径
    const wasmModule = await WebAssembly.instantiate(wasmCode, {}); // 如果wasm需要导入外部函数,需要在这里添加导入对象。
    const wasmInstance = wasmModule.instance;
    t1 = parseInt(Date.parse(new Date())/1000/2);
    t2 = parseInt(Date.parse(new Date())/1000/2 - Math.floor(Math.random() * (50) + 1));
    // 调用 Wasm 函数
    const result = wasmInstance.exports.encode(t1, t2).toString() + '|' + t1 + '|' + t2; // 替换为你的wasm文件导出的函数名
    console.log('Wasm 函数返回:', result);
  } catch (error) {
    console.error('Error:', error);
  }
}

runWasm();
本站立足于美利堅合衆國,請讀者自覺遵守當地法律!如有違規,本站不承擔任何法律責任! This site is based in the United States of America, readers are requested to abide by local laws! If there are any violations, this site does not bear any legal responsibility! Theme Jasmine by Kent Liao