提问人:sundar 提问时间:10/17/2019 更新时间:5/20/2020 访问量:6372
如何解码 .wasm 代码?可能吗?
How to decode a .wasm code? Is it possible?
问:
只是想知道代码在计算机中做什么,我想解码一个 .wasm 代码 - 可在 https://lifeinspace.org/main.wasm 获得。基本上,从我在互联网上找到的内容来看,.wasm 是一个 Web 汇编代码,它可能是:
- 从高级语言 (C/C++/etc.) 的代码转换并将其转换为 Web 汇编 (.wasm) - https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm
但是,既然我现在有了 .wasm 代码,有没有一种方法或技术可以弄清楚高级代码是什么?
只是我想知道这个 .wasm 代码是做什么的。当我在记事本++中打开这段代码时,它充满了符号和汇编指令,这没有任何意义。
我想知道的主要原因是此代码是否执行任何非法操作,例如 DDoS。
我使用不同的防病毒工具扫描了文件,但没有发现任何坏东西。
快速背景: lifeinspace.org 是一个网站,在外面,它声称可以租用我们的计算能力进行科学计算。(更多信息请见 https://money.stackexchange.com/questions/115754/lease-computing-power-to-earn-money-lifeinspace-org)。但是,它在(lifeinspace.org/main.wasm)后面运行浏览器代码,在后台执行一些我们不知道的其他进程。了解它的作用的唯一方法是解码上面的 main.wasm 代码。因此,我对此感到好奇。
答:
您的 wasm 编译文件可以转换为 wasm 文本格式,请参阅 mdn 页面。
您可以使用 wast2wasm 工具
,但是您无法获得更高级的源代码(取决于语言、编译器和信息丢失)。
没有防病毒软件可以扫描 wasm 文件。Wasm 由您的浏览器执行,他可以很好地保护您。
监视程序功能的最简单方法是使用浏览器监视日志和请求。
WebAssembly 是一种二进制格式,但正如 Mubelotix 的回答所说,你可以将其转换为标准文本格式来检查它(或者你可以使用像我开发的图形查看器这样的工具)。您还可以在给定反编译器的情况下将其转换为高级语言的等效代码,这可能有助于理解它,但它不太可能接近原始源代码。
但是,WebAssembly 模块不能直接访问外部世界,只能通过调用 JavaScript 代码作为导入显式传递给它的函数和对象。这意味着,如果通过检查在实例化时提供给它的定义,你可以确定它无权访问网络,你可以确定它不会成为 DDoS 攻击的一部分,而无需查看 WebAssembly 代码本身。
评论