#obfuscation #minify #uglifyjs
Вопрос:
Я ищу способ запутать / сжать свой код 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 строк, не используя достаточного количества процессора — я не слышу, чтобы в этом случае почти ничего не работало, поэтому я думаю, что это не работает. Без -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
Я использую Ubuntu LTS.
Я также могу использовать PHP, если это может помочь.
Причина в том, что мой код позволит пользователям чеканить новый NFT непосредственно с моего веб-сайта, поэтому, поскольку исходный код смарт-контракта опубликован на etherscan, каждый может скопировать мой код Javascript и выполнить свою чеканку с помощью нового смарт-контракта. Другими словами: каждый может легко скопировать ВСЕ мои работы!
Комментарии:
1. Минимизация сильно отличается от запутывания; похоже, вы спрашиваете о запутывании (возможно, захотите отредактировать). Обязательный вопрос: почему вы хотите запутать код, который взаимодействует с цепочкой блоков? Для этого есть законные причины, но это немного тревожный сигнал, по крайней мере для меня
2. @2e0byo Я обновил вопрос и добавил причину в конце.
3. в этом есть смысл. Я признаюсь, что единственными местами, где я видел запутанные JS, в которых чеканились биткоины, были места, где JS вообще не должно быть, т. Е. инъекции. Но как насчет компиляции в webasm в этом случае и вообще не выпускать исходный код?
4. @2e0byo Я не знаю webasm, можете ли вы предложить мне URL-адрес для компиляции с ним?
5. webasm — это целевая сборка, оптимизированная для работы на мобильных процессорах. Вики . Обычно люди пишут код на стандартном языке компиляции (c, rust и т. Д.), Но быстрая проверка подтверждает, что существует компилятор машинописного текста, который, вероятно, довольно близок к тому, что у вас уже есть в JS.
Ответ №1:
Попробуйте этот инструмент
https://javascriptobfuscator.com/Javascript-Obfuscator.aspx
balance = await provider.getBalance(accountSigner);
производит
var _0x74c0=["x67x65x74x42x61x6Cx61x6Ex63x65"];balance= await provider[_0x74c0[0]](accountSigner)
Комментарии:
1. Я пробовал, но наиболее полезные опции доступны только в графическом интерфейсе для Windows 🙁
Ответ №2:
Я использую JSDefender (https://www.preemptive.com/products/jsdefender/) вот уже почти год. Это помогло мне запутать проект react, angular и javascript. Вы можете попробовать пробный период, чтобы убедиться, что он также адаптирован для вашего проекта.