【发布时间】:2021-11-28 06:31:45
【问题描述】:
我正在寻找一种方法来混淆/压缩我的 javascript 代码。
我已经搜索过操作系统和网络,但是有很多过时或损坏的教程和脚本。 另外,老实说,我没有时间对它们进行全部测试,以找到在 2021 年仍然可以使用 JS ES6 的少数几个。
我的代码使用 ethers.js 与区块链交互,所以使用如下代码:
balance = await provider.getBalance(accountSigner);
...
const networkWallet = await provider.getNetwork();
我看到其他网站有这个代码:
!function(e){function r(r){for(var n,a,i=r[0],c=r[1],f=r[2]...
我想让复制和重用我的 JS 代码变得更加困难,我知道让它 100% 不可逆是不可能的,但至少需要足够的时间才能做到这一点不值得。
我的一些尝试:
- uglifyjs -c test.js -> 它总是运行一个 5 行的文件,而没有使用足够的 cpu - 我几乎没有听到任何在这种情况下工作的声音,所以我认为它不起作用。没有 -c 它是立即的)(与 sudo 相同)
- closure-compiler.appspot.com:他们建议的文件也失败了,它太慢而且过时了
-
http://jsutility.pjoneil.net/ - 它不支持
provider.on("network", (newNetwork, oldNetwork) => { - https://jscompress.com/ - 它似乎可以工作,但它只执行很少的压缩/混淆,没有混淆选项,例如字符串
- https://javascriptobfuscator.com/Javascript-Obfuscator.aspx - 最有用的选项仅在 Windows 的 GUI 中可用
我正在使用 Ubuntu LTS。
如果有帮助,我也可以使用 PHP。
原因是我的代码可以让用户直接从我的网站铸造一个新的 NFT,所以由于智能合约的源代码发布在 etherscan 上,每个人都可以复制我的 Javascript 代码并进行铸造有了新的智能合约。换句话说:每个人都可以轻松复制我的所有作品!
【问题讨论】:
-
最小化与混淆有很大不同;似乎您在询问混淆(可能想要编辑)。必答问:为什么你要混淆与区块链交互的代码?这样做是有正当理由的,但这有点危险,至少对我而言
-
@2e0byo 我更新了问题并在最后添加了原因。
-
这是有道理的。我承认,我所见过的铸造比特币的混淆 JS 的唯一地方是 JS 根本不应该出现的地方,即注入。但是在这种情况下编译到 webasm 并且根本不发布源代码呢?
-
@2e0byo 我不知道 webasm,你能给我一个 url 来编译吗?
-
webasm 是一个针对在移动处理器上运行而优化的汇编目标。 wiki。通常人们使用标准编译语言(c、rust 等)编写代码,但快速检查确认存在 TypeScript 编译器,这可能与您在 JS 中已有的非常接近。
标签: obfuscation minify uglifyjs