我用 Rust 编译到WebAssembly后,看了一下WebAssembly的文本格式
发现里面能看到我定义的全局变量的值和函数名称,还有使用的库和库的路径。
想问一下各位大佬有没有什么办法能够去掉这些,或者让其不明文显示。

1
0o0O0o0O0o 2022 年 11 月 21 日 via iPhone
strip
|
2
horou OP @0o0O0o0O0o 试过了,没用呃
|
3
dianqk 2022 年 11 月 21 日 via Android
看起来是 panic 之类会记录当前的一些信息,不知道转成 abort 有没有帮助?
|
4
GeruzoniAnsasu 2022 年 11 月 21 日
rust 我不懂
但 c/c++上,想要去掉一切可能暴露本地环境的字符串的方法是,覆盖掉 __file__ __func__ 之类的宏 |
5
araaaa 2022 年 11 月 22 日 via iPhone
开启 lto 试试
|
6
GuuJiang 2022 年 11 月 22 日
--remap-path-prefix
|
9
horou OP @GuuJiang 我是用的 wasm-pack 编译的,这个参数该怎么加上去呀,我用 RUSTFLAGS="--remap-path-prefix=" 这种方式加上,没得效果
|
10
lisxour 2022 年 11 月 22 日 @horou RUSTFLAGS="--remap-path-prefix=C:\Users\XXX\.cargo=CARGO_HOME"
注意只能替换一部分,没法完全去除 |
11
horou OP @lisxour 谢谢,这种方式可以把用户名的路径隐藏掉, 字符串常量我也用编译混淆的工具解决了,目前就只有这些使用的库的路径还有自己定义的模块名和函数名称还是没办法去掉。
|
14
whoami9894 2022 年 11 月 23 日
cargo -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort build
|
15
horou OP @whoami9894 感谢,虽然还是没有效果,但是这个 FLAGS 让我编译出来的 wasm 文件大小减少了很多,哈哈
|
16
ginjedoad 2023 年 1 月 16 日
试试 obfstr
|