• Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    Я говорю про то, что этот же функционал можно повторить указанным мной способом в любой среде исполнения

    Не-а, не повторите. Результат компиляции в WebAssembly представляет собой AST для готовой виртуальной машины, которая никогда не меняется, и принцип работы которой у злоумышленника как на ладони - https://github.com/sunfishcode/wasm-reference-manu...
    Или же готовая тулза для реверса webasm - https://www.pnfsoftware.com/jeb/demowasm
    Также у него есть исходники V8, чтобы достать наш код из рантайма.
    И ко всему этому этот код никаким образом не сопротивляется отладке.

    Вы хотите сказать, что виртуалка из exe-шника надёжнее виртуалки на основе webasm - это, скорее всего ВЫ не поняли, как работают протекторы/дебаггеры.

    Не поверите, очень даже представляю. А вот Вы, к сожалению, так и не поняли, что я пытался Вам донести.
    Небольшой секрет - приложение, которое накрыто протектором, у Вас не выйдет легко и просто запустить под отладчиком. Если не верите, могу вам скинуть бинарник для тестов.

    Я понял, что Вы увидели Энигму и "тащитесь" на волне эйфории и предвкушения того, как она будет надёжна, когда попробуют добраться до исходника вашего проекта!

    Больше похоже на то, что у Вас заканчиваются аргументы, чем на какой-то конструктивный ответ.
    Энигму (да и не только ее) я "увидел" еще лет 9 назад и прекрасно осведомлен о проблемах подобных подходов. Так что не переживайте, никакой эйфории нет.

    Т.к. у Вас нет никакого другого опыта, особенно - собственного алгоритма/решения защиты.

    Работая в сфере, где клиентскую часть твоего приложения пытается разреверсить чуть ли не каждый второй OOG'шник чтобы напакостить, другого опыта как раз и хватает.
    Могу предположить, что у вас нет большого опыта в сферах, которые не связаны с WEB'ом, иначе я не могу объяснить фанатичную веру в WebAsm и веру в то, что если этот код скомпилирован, то никто не узнает что там внутри.

    Но да ладно, все равно каждый останется при своем мнении.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    не знаю ничего круче, чем сделать это 2-3 мя функциями на С, скомпилированных в webasm, которые будут загружать зашифрованные JS-данные для дальнейшего исполнения.

    Кто мешает разреверсить ничем не защищенный механизм, который расшифровывает наш JS ?
    Или же поставить в дебагаре хук, который будет перехватывать уже расшифрованный JS ?
    Ну или просто достать байткод из рантайма после того, как все прогрузится.
    Этот код никак не "сопротивляется" отладке.

    Это хорошо только для исполняемых файлов (да и не так сильно теряются-то при отладке во время выполнения...)

    Вы не поняли как работают протекторы.
    Протектор генерирует виртуальную машину (как, например, JVM, CLR, V8 и т.д). Далее Ваш исполняемый код превращается в байткод для этой виртуальной машины. И ко всему этому этот байткод сильно разбавляется мусором.
    То есть (если совсем "на пальцах") - для вашего исполняемого кода создается свой собственный "язык" и генерируется виртуальная машина для него.
    Можно сделать так, чтобы для каждой функции в исполняемом файле генерировалась своя виртуальная машина.
    Ну и ко всему этому такое приложение умеет "сопротивляться" отладке.
    Даже если у вас выйдет пробраться через все антиотладочные механизмы, то на "вскрытие" виртуальной машины может уйти до 6 месяцев работы очень опытного реверсера.
    Но у такого механизма есть единственный минус - сильные просадки производительности, поэтому защищаются только самые критические участки приложения.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, смысл в том, что у протекторов есть специальные механизмы, которые пару "чистых" машинных инструкций превращают в дикий ад. В итоге, оригинальный код теряется в миллионах "мусорных" инструкций.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, без разницы что это, если в итоге это все превращается в машинные инструкции, которые как раз и декомпилят)
    Попробуйте поюзать IDA Pro, Вам понравится)
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, это только упростит задачу злоумышленнику. В таком коде будет меньше мусора и проще будет понять логику.
    Основная моя идея состоит в том, чтобы иметь возможность хоть как-то затруднить получение исходников без кардинальных изменений самого проекта.
    Если же заниматься модификацией проекта с целью его защиты, то (в случае, если приложение под Windows) достаточно эффективным способом является написание аддонов для Node.js , в которые переносится часть критически важного функционала. Затем эти аддоны сверху "накрываются" протекторами (например, я использую Enigma Protector). Такой подходи в большинстве случаев отбивает желание реверсить приложение у начинающих и относительно опытных реверс-инженеров, так как это потребует очень много времени.

    На, как я упоминал выше, от целенаправленного влома это не спасет, а лишь оттянет его на пол года максимум.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, не думайте, что я все это беру "с потолка".
    Это те "грабли" (при том далеко не все), на которые пришлось "наступить" в ходе разработки тулкита для защиты исходников.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, и это только одна из особенностей.
    Вот пример второй особенности:
    При генерации снапшота Node.js учитывает аппаратные возможности конкретно текущего железа, и снапшот генерируется с учетом этих особенностей. Поэтому, то, что будет работать у Вас, не будет работать у некоторых других пользователей.
    Эта особенность чаще всего проявляется на винде.
    Эмпирическим путем получилось собрать некоторую статистику - приложение не работало примерно у 30-40% пользователей. (Общее количество пользователей было чуть больше 1000).

    Частично это проблему у себя я решил, но не до конца.
    Для сбора дополнительной статистики я даже создавал тему на одном из форумов - www.cyberforum.ru/beta-testing/thread2488984.html
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, проверял, поэтому и говорю)
    Даже сам автор bytenode в примере для NW.js показывает, что генерацию снапшота надо вызывать из рантайма NW.js , а не просто из консоли.
    4cc4ba7fa3.jpg
    Попробуйте создать снапшот из консоли, и получите вот это:
    (скрин из DevTools NW.js)
    401d54005e.jpg
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, байткод, который будет сгенерирован при помощи bytenode скорее всего не будет работать внутри NW.js , так как в NW.js используется пропатченая версия ноды. Там на самом деле очень много нюансов, из-за которых байткод не будет работать (это обнаружилось в процессе копания в исходниках V8, когда я пили себе аналог bytenode).
    Поэтому Enigma Virtual Box, наверное, самый приемлемых вариант для автора, чтобы защитить исходники и сохранить 100% работоспособность.

    P.S. из-за особенностей работы TurboFan генерация байткода может съесть примерно 30-40% производительности приложения.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, тут уже все зависит от того, насколько злоумышленникам надо то, что находится внутри ПО.
    Если очень надо, то даже снимают такие протекторы, как Enigma Protector, Themida и им подобные. Снятие виртуальных машин, которые были сгенерированы этим протекторами, может занимать до 6 месяцев (при полном рабочем дне опытного реверс-инженера), но при целенаправленном взломе ПО это никого не останавливает.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    xmoonlight, мы говорим конкретно об инсталяторе.
    С bytenode я знаком. В нем есть некоторые баги, из-за которых он применим не ко всем версиям Node.js, из-за чего мне пришлось для своего тулкита (который я пилю специально для целей затруднения получения исходников) реализовывать все это заново, чтобы была поддержка версий с 6 и до 12.
    Но не стоит забывать, что снапшоты - эте не панацея, а лишь неплохая дополнительная помеха, которая не даст быстро получить исходники. (злоумышленникам придется прибегнуть к инструментам типа IDA Pro и им подобным)
    Enigma Virtual Box можно использоваться вместе с генерацией снапшотов. Это еще больше затруднит получение исходников.
    Но именно сам инсталятор никаким образом не помогает защитить исходники.
  • Как на базе NW.js сделать exe-приложение в виде одного единственного exe-файла?

    MvcBox
    @MvcBox
    Автор конечно не упоминал какое у него приложение, но в случае использования инсталятора - пользователям остаются доступными исходники, что вполне может быть критично для автора
  • Высоконагруженность и многопоточность в node js?

    MvcBox
    @MvcBox
    Denioo,
    Хм, значит ruby

    Просто интересно, а чем для вас Ruby лучше, чем Node.js ?)
  • Высоконагруженность и многопоточность в node js?

    MvcBox
    @MvcBox
    edward_freedom,
    нода только для маленьких проектов

    Скажите это Netflix, PayPal, Trello, LinkedIn, Yahoo, Mozilla, Uber и другим компаниям, которые используют Node.js
  • Высоконагруженность и многопоточность в node js?

    MvcBox
    @MvcBox
    Возможно я ошибаюсь, но вроде в node js нет настоящей многопоточности из коробки,

    Уже есть, потоки в рамках одного процесса - https://nodejs.org/api/worker_threads.html
    Ну и можно шарить "кусок памяти" между потоками при помощи SharedArrayBuffer и Atomics
    Можно, например, шарить между потоками файловый дескриптор (мне пригодилось при реализации многопоточного архиватора для проприетарного архива).
  • Почему recaptcha v3 постоянно возвращает 0.9?

    MvcBox
    @MvcBox
    Для начала опишите более подробно как Вы это тестировали.
  • Возможно ли выполнить инъекцию javascript кода в html-страницу?

    MvcBox
    @MvcBox
    Дмитрий, вангую, хочет получить доступ к кукам, у которых не установлен флаг httpOnly )
  • Почему исключения не попадают в catch?

    MvcBox
    @MvcBox
    Владимир Обабков, самый простой способ - завернуть код, который внутри handleFile, в блок try/catch