Design: 不可读的wasm二进制编码有优势

创建于 2017-04-22  ·  6评论  ·  资料来源: WebAssembly/design

今天刚刚简要了解了项目,并且对在一般开发工作中使用它非常感兴趣。

但是,如果最终结果意味着在其客户端浏览器中运行 wasm 的最终用户可以访问人类可读的代码,那么这是一个错失的机会。

没有理由向最终用户提供此功能 - 开发人员可以通过地图文件或需要原始源的一些类似机制访问它。

虽然不可能阻止确定者对产品进行反编译/逆向工程,但任何威慑都是有用的(如果您想放弃它,请包括源代码/指向它的链接)。 如果盗窃的努力/风险超过合法许可的成本。 等等等等等等

在不提供可读性方面增加的 ip 安全元素可能会鼓励更广泛/更快的采用(这对我来说完全不费吹灰之力)。

另一方面,如果没有安全优势……那么随着时间的推移使用更快的 hw/js 引擎,切换回 C/C++ 并保持进一步扩展的技能集看起来并不那么吸引人。

请考虑不提供使 wasm 二进制编码可读的机制。 无论如何,其他人最终会这样做 - 同时使用其他地方的资源,让我们享受一段难以理解的客户端代码的短暂时代。

鲍勃。

最有用的评论

禁止将二进制文件转换为某种形式的人类可读源代码并不是 WebAssembly 可以禁止的。 任何人都可以实现自己的东西,无论多么漂亮/可读。 相反,该小组关注的是指定一种适用于编译到 Web 的可移植、尺寸和加载时间效率高的格式。

我们还关心使某些东西可用,这就是我们指定低级文本格式的原因,并且可能会致力于调试功能。

保证对反编译、逆向工程或其他非技术问题的任何法律保护是非目标。 这由您自己的律师决定,我敦促非律师避免猜测。 我们不想从事提供法律建议的业务。

看起来之前的讨论解决了您的问题? 我会关闭,如果没有,请随时重新打开或继续讨论。

所有6条评论

最新版本的 Chrome 已经能够将二进制 WASM 转换为文本格式。

你是说我可以从(以下取自维基百科条目)

20 00
42 00
51
04 7e
42 01
05
20 00
20 00
42 01
7天
10 00
7e
0b

整数阶乘(整数 n){
如果(n == 0)
返回 1;
别的
返回 n * 阶乘(n-1);
}

还是可以使用 chrome 来识别?

不,它返回此处描述的尚未完全正式指定的“WAST”格式: http ://webassembly.org/docs/text-format/。

get_local 0
i64.const 0
i64.eq
if i64
    i64.const 1
else
    get_local 0
    get_local 0
    i64.const 1
    i64.sub
    call 0
    i64.mul
end

Web Assembly 针对小型、易于快速解析的二进制格式进行了优化。 它没有保留足够的信息来完全恢复原始语法。 函数越大越复杂,反编译的识别度就越低。 如果您查看如何处理结构、类、模板和其他更高级别的功能,则尤其如此。

非常好(这是维基百科文章中列出的“中间表示”)-我以为您是在暗示它已经可以进一步“美化”-如果不能(开箱即用),我更愿意。

如果一切都已完成/未完成并旨在保持这种状态,我更愿意这样做。

(我的印象是有一个计划最终能够在浏览器中将其翻译回合理的伪代码,尽管没有有意义的标识符。)

禁止将二进制文件转换为某种形式的人类可读源代码并不是 WebAssembly 可以禁止的。 任何人都可以实现自己的东西,无论多么漂亮/可读。 相反,该小组关注的是指定一种适用于编译到 Web 的可移植、尺寸和加载时间效率高的格式。

我们还关心使某些东西可用,这就是我们指定低级文本格式的原因,并且可能会致力于调试功能。

保证对反编译、逆向工程或其他非技术问题的任何法律保护是非目标。 这由您自己的律师决定,我敦促非律师避免猜测。 我们不想从事提供法律建议的业务。

看起来之前的讨论解决了您的问题? 我会关闭,如果没有,请随时重新打开或继续讨论。

chintailease.wast.zip

关于如何将此 .wast 文件反汇编为原始源代码的任何想法?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

arunetm picture arunetm  ·  7评论

konsoletyper picture konsoletyper  ·  6评论

JimmyVV picture JimmyVV  ·  4评论

jfbastien picture jfbastien  ·  6评论

chicoxyzzy picture chicoxyzzy  ·  5评论