【问题标题】:obfuscate/compress/protect javascript code混淆/压缩/保护javascript代码
【发布时间】: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


【解决方案1】:

试试这个工具
https://javascriptobfuscator.com/Javascript-Obfuscator.aspx

balance = await provider.getBalance(accountSigner);

生产

var _0x74c0=["\x67\x65\x74\x42\x61\x6C\x61\x6E\x63\x65"];balance=  await provider[_0x74c0[0]](accountSigner)

【讨论】:

  • 我试过了,但最有用的选项只在 Windows 的 GUI 中可用:(
【解决方案2】:

我已经使用 JSDefender (https://www.preemptive.com/products/jsdefender/) 快一年了。它帮助我混淆了 react、angular 和 javascript 项目。您可以尝试试用期,看看它是否也适合您的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2011-10-23
    相关资源
    最近更新 更多