• Стоит ли учить assembler для реверсинга?

    MvcBox
    @MvcBox
    Почему именно си?

    Вангую, что он закидывает бинарник в IDA и смотрит на выхлоп Hex Rays в виде сишного псевдокода
  • Стоит ли учить assembler для реверсинга?

    MvcBox
    @MvcBox
    Тут зависит от целей автора. Если он собрался реверсить что-то, что по сложности сопоставимо с типичным "Hello world", то, возможно, базового понимания и хватит.
    А если что-то уровня коммерческих протекторов типа Oreans, то придется потратить достаточно времени на обучение.
  • Стоит ли учить assembler для реверсинга?

    MvcBox
    @MvcBox
    Mishele123, а как Вы собрались заниматься реверсом без знания ISA целевой платформы?
  • Как получить HMODULE импортированой dll без LoadLibraryA() или GetModuleHandleA()?

    MvcBox
    @MvcBox
    _asm
      {
        xor eax, eax;
        mov eax, fs: [0x30];
        mov peb, eax;
      }

    Это будет работать только для 32битного PE.

    Вот универсальный вариант:
    PPEB GetPEB()
        {
    #ifdef _WIN64
            return (PPEB)__readgsqword(0x60);
    #else
            return (PPEB)__readfsdword(0x30);
    #endif
        }
  • Как рандомизировать адреса функций в ELF-файле?

    MvcBox
    @MvcBox
    shurshur, или же просто вырезать отладочную информацию и не париться :)
  • Как рандомизировать адреса функций в ELF-файле?

    MvcBox
    @MvcBox
    luaPower, рандомизация адресов никак Вам не поможет в защите, так как любой декомпилятор моментально покажет все связи. Для подобных целей используйте специальные инструменты, которые для этого предназначены. К примеру - https://oreans.com/CodeVirtualizer.php
  • Разница между if else и try catch?

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

    Василий Банников, зато сишный API винды при определенных условиях еще как может кидать исключения вместо того, чтобы просто вернуть FALSE :D
  • Как валидировать типы данных в реалтайм?

    MvcBox
    @MvcBox
    ThunderCat, иначе какой смысл использовать TS, если автор хочет нарушать собственные же правила)
  • Существует ли аналог await из JavaScript для промисов на PHP?

    MvcBox
    @MvcBox
    Надим Закиров, небольшой секрет, async/await в JS - это "сахар" для тех же генераторов :)
  • Как понять уязвим запрос к бд или нет?

    MvcBox
    @MvcBox
    Aetae,
    Мы же не знаем что там в $db->prepare происходит

    Кто Вам такую глупость сказал?)
    https://github.com/php/php-src/blob/master/ext/pdo...
  • В чём суть шутки про ноги в С/С++?

    MvcBox
    @MvcBox
    Борис Животное, в основном такие картинки составляются теми, кто имеет минимальное отношение к разработке, поэтому им простительно :)
  • Как отключить асинхронность в JS?

    MvcBox
    @MvcBox
    Можно пример async/await?

    https://learn.javascript.ru/async-await

    Promise - не вариант, усложняет

    То, что призвано упростить жизнь, Вам ее "усложняет"?
    "Не вариант" - это пытаться что-то делать не умея программировать.
  • Как зашифровать алгоритм внутри программы?

    MvcBox
    @MvcBox
    Разве нет у VMP галочки про продвинутый антидебаг ?

    Не, там только опции "user-mode" и "user-mode + kernel-mode".
    VMP 3.5.1 еще не смотрел, но в версии 3.5.0 антидебаг все еще обходится при помощи ScylaHide. Почему-то уверен, что в 3.5.1 ничего особо не поменялось. Themida/WinLicense в этом плане более продвинутые. Да и в принципе VMP уже не тот, по крайней мере сейчас он не конкурент продуктам Oreans.

    https://lifeinhex.com/use-of-syscall-and-sysenter-...

    Как я уже упоминал выше, очень легко заставить VMP не делать прямые системные вызовы, а дергать winapi.
    Просто установить неизвестный для VMP билд винды.

    Либо же scylaHide сканит heap на сисколлы....

    Сисколы тоже не очень сложно ловить, в x64dbg можно писать условия для бряков

    Да, адресов winapi. Не знаю насколько моя терминология верна, но обычно называю системным вызовом даже вызов к kernel32.dll, а не именно вызов к ядру(sysenter). Руководствуюсь тем, что сисколы недокументированы, архитектура windows в некоторой степени микроядерная. Ну и в литературе о Windows, usermoдные либы относят к системе.

    Возможно каждый привык по разному это называть, я просто привык сисколами называть именно сисколы(sysenter).

    Я имел ввиду не защиту от анализа, обфускацию системных вызовов, вычисление их динамически. Я это написал как цель защиты от копирования кода.
    То что реверсер поставит брейки на нужные ему функции это понятно, я про то что если он например сломает авторизацию, но пропатченный код следующий перезапуск или у других пользователей работать уже не будет.
    Ему придется патчить каждый джамп вшитый на сервере(Для авторизованного юзера под его конкретные адреса системных вызовов при текущем запуске системы). Потому что перезапустив систему адреса системных либ(и соответственно функций в них) поменяются.
    Дополнительные обфускации этих джампов просто лишь усложняют их поиск и фикс. Например генерация на сервере каждый раз разного кода вычисления адреса для прыжка (разные регистры разные команды). Что усложняет поиск по паттерну.


    Да, суть понятна, но опытного реверсера это особо не остановит, лишь создаст дополнительное препятствие, на которое просто надо будет потратить некоторое время.

    Когда-то давно в Themida (когда они еще использовали драйвер) был неплохой трюк против дампов.
    Приложение не расшифровывалось в памяти полностью. Драйвер расшифровывал код прямо по ходу его выполнения, а затем шифровал обратно код "позади", который уже выполнился. Таким образом, если сделать дамп приложения в любой момент времени, то там всегда будет мусор и с таким дампом особо ничего не сделаешь. Жаль, что убрали это, так как драйвер вызывал проблемы с совместимостью.
  • Как зашифровать алгоритм внутри программы?

    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 статей от разных авторов.