Задать вопрос
  • Как зашифровать алгоритм внутри программы?

    MvcBox
    @MvcBox
    Lolxdxd, я не говорил, что VMP является лучшим решением, а лишь привел в качестве примера реальной истории, когда компания X пытается отказаться от готового продукта Y и сделать свое, но у нее это выходит плохо.
    То, что VMP прекрасно девиртуализируется, это я и так знаю (раз, два, три).
    И автор пока не спешит это фиксить.
    А судя по тому, что автор VMP искал сторонние решения, у него пока не особо много идей в плане фиксов (по крайней мере так было год назад).
    Из личных сообщений на форуме vmprotect:
    615a73d9597cf195074137.jpeg

    А Vmp например титан хайду ниче не делает.

    Там даже TitanHide не нужен, VMP прекрасно обходится даже при помощи user mode инструментов типа ScyllaHide :)

    Сейчас лучшим публичным решением можно считать продукты Oreans.
    Та же Themida успешно сопротивляется как user mode отладке, так и kernel mode (на tuts4you можно найти посты, как у пользователей даже с TitanHide возникают проблемы с отладкой).
    Авторы ScyllaHide добавляли обход трюка с GetForegroundWIndow, но автор протектора закрыл это в следующей же обнове.
    Не секрет, что все антиотладочные и прочие трюки являются лишь "бонусом", так как основным методом значительно затруднить взлом приложения является виртуализация кода. А вот виртуальные машины у Oreans гораздо сложнее, чем у VMP.

    Лоадер скидывает все адреса системных вызовов на серверер. А сервер в код вставляет адреса этих системных вызовов(Просто jmp на адрес, либо вставляет код, который этот адрес вычисляет, всякими сдвигами битовыми и тд, чтобы дополнительно усложнить анализ). В итоге если даже злоумышленник скопирует этот код, все эти jmp будут крашить, потому что адреса системных либ поменяются.

    Смею предположить, что Вы опечатались и вместо "адреса системных вызовов" имели в виду "адреса winapi функций"? Так как у системных вызовов нет "адресов", есть их коды, которые в windows меняются от версии к версии, а библиотека ntdll служит своеобразным "шлюзом" в kernel space, так как в ней "зашиты" коды этих системных вызовов.
    Именно в том виде, как Вы описали, это не имеет особо никакого смысла.
    Если Вы хотите, чтобы при статическом анализе не были видны вызовы winapi, то в протекторах обычно есть опция api wrapping (по крайней мере в Themida/WinLicense), которая как раз и делает так, что адреса для winapi вызовов вычисляются динамически, с кучей jmp'ов в heap и прочими трюками.
    В итоге если сделать дамп такого приложения и скормить его статическому анализатору, то анализатор покажет вам ноль winapi вызовов, будто у приложения вообще нету импортов. Ну и заставить работать этот дамп, разумеется, не выйдет без фикса импортов.
    Проблема лишь в том, что это все бесполезно при динамической отладке, так как реверсеру без разницы как Вы спрятали адреса.
    Реверсер будет Вас "ждать" в конечной точке (в нужной системной либе).
    А вот прямые системные вызовы без использования нашего "шлюза" (ntdll) - вот это уже другое дело :)
    Только проблема в том, как я выше уже упоминал, что коды системных вызовов меняются от версии к версии и у нас есть 2 варианта:
    1. Тащить за приложением "базу" системных вызовов для всех известных версий Windows. Так делает VMP и это достаточно легко обходится, если подменить версию билда винды (в PEB и в ресурсах ntdll). Когда VMP видит неизвестный ему билд винды, он начинает дергать winapi функции.
    2. "Парсить" в рантайме ntdll, но для этого придется тащить за собой в приложении дизассемблер. Такой вариант не очень надежный.

    Суть вашего сообщения понятна - кастомную защиту ломать сложнее, чем публичную.
    Только тут есть одна проблема - квалификация разработчика кастомной защиты должна быть как минимум не ниже, чем квалификация разработчика публичного инструмента. В противном случае сломать кастомную защиту откажется проще, чем публичную. В этом и был смысл моего самого первого комментария к этому ответу :)
  • Как зашифровать алгоритм внутри программы?

    MvcBox
    @MvcBox
    #offtop
    Лучше не испытывать судьбу и взять готовое коммерческое решение.
    Сомневаюсь, что автор сможет хоть на какой-то процент приблизиться к уже готовым и обкатанным решениям.
    Яркий тому пример - попытка Denuvo соскочить с VMProtect.
  • Безопасность CRM. С чего начать и чем закончить?

    MvcBox
    @MvcBox
    nevesoff, Вам мягко намекнули, что текущей Вашей квалификации не хватит для нормальной реализации задуманного. Вы же, не поняв ответа, пытаетесь судить о других.
  • Не пробивается hping3 tcp syn flood с VM?

    MvcBox
    @MvcBox
    #offtop
    А зачем замазывать локальные IP ?)
  • Некачественное изображение с mac mini?

    MvcBox
    @MvcBox
    osippp, просто загуглите что-то типа "подобрать монитор MacOS" и прочтите 5-10 статей от разных авторов.
  • Как на роутере keenetic сделать автоматическое распределение скорости поровну?

    MvcBox
    @MvcBox
    pecenuska2135, штатными средствами скорее всего не выйдет. Разве что фиксированно задать лимиты для каждого из устройств.
  • Node js в серверном исполнении?

    MvcBox
    @MvcBox
    Roman Kitaev, все зависит от суммарного размера файлов проекта)
  • Node js в серверном исполнении?

    MvcBox
    @MvcBox
    Roman Kitaev, именно pkg вполне хорошо работает. Одно условие - не должно быть нативных аддонов.
  • Node js в серверном исполнении?

    MvcBox
    @MvcBox
    #offtop
    Roman Kitaev, при выполнении некоторых условий для ноды можно тоже собрать один бинарник
    https://www.npmjs.com/package/pkg
  • Как отдать браузеру результат выполнения асинхронной функции в express.js?

    MvcBox
    @MvcBox
    С минимальными модификациями существующего кода

    app.get('/', async (req, res, next) => {
        try {
            // .....
            res.send('<img src="screenshots/' + await getPic() + '">');
          } catch (e) {
             next(e);
          }
    });
  • Имеет ли смысл TypeScript, если на том же backend php?

    MvcBox
    @MvcBox
    Дархан Камалиев, либа для runtime проверки типа данных
    Возьмем что-то банальное:
    import { assertType } from 'typescript-is';
    
    interface User
    {
        firstName: string;
        lastName: string;
        age: number;
        avatar?: string;
    }
    
    interface UsersResponse
    {
        totalCount: number;
        users: User[];
    }
    
    /*
     Тут какой-то ваш код, где получаете данные в переменную "data"
    */
    
    assertType<UsersResponse>(data); // Если то, что в "data", не соответствует структуре UsersResponse, то будет выброшено исключение

    Также посмотрите документацию, там достаточно примеров
  • Как правильно спроектировать приложение?

    MvcBox
    @MvcBox
    чистом PHP

    Зачем? Чем не устраивают фреймворки?
  • Как спарсить hhru?

    MvcBox
    @MvcBox
    Владислав, ага. Если планируете активно парсить HH, то этот сервис тоже пригодится https://luminati.io/
  • Как эффективно организовать WIFI в квартире?

    MvcBox
    @MvcBox
    Насчет кинетиков плюсую.
    Приобрел на прошлой неделе Keenetic Ultra (KN-1810), доволен как слон.
    Отличное решение за свои деньги
  • Все получили письма счастья от Payoneer? Что теперь делать?

    MvcBox
    @MvcBox
    Как писали в саппорте пионера - апворк не требует , чтобы карта была оформлена на фрилансера.

    Вот только апворк так не думает.
    Сейчас у апворка началось очередное "обострение" касаемо банов аккаунтов.
    У знакомого забанили аккаунт за то, что имя/фамилия профиля не совпадали с теми, на которые зарегистрирована карта (это официальный ответ полученный от саппорта).
  • Замыкание запоминает все или то, что нужно?

    MvcBox
    @MvcBox
    Не-а, пока будет существовать getName - остальные переменные не будут удалены.
  • Как скачать браузер Tor?

    MvcBox
    @MvcBox
    То есть, Вам было лень провести курсор чуть выше, но не лень было писать сюда вопрос?
    Вы уверены, что Вам сейчас нужен Tor, а не курсы по пользованию ПК?
  • Как защитить приложение?

    MvcBox
    @MvcBox
    DevMan, это лишь один из вариантов, который при минимальных затратах позволит сузить круг потенциальных "взломщиков" софта автора с группы людей "любой JS разработчик" до группы "C++ разработчик, который хорошо знаком с V8".
    Если же автор делает приложение только под винду, то там есть некоторые способы еще больше сузить группу этих людей