Есть 2 функции. Каждую из них я обрамляю маркерами, чтобы накрыть виртуальной машиной. Но одна из этих функций вызывает вторую.
Скажите, сможет ли взломщик дизассемблировать программу и подсмотреть/заменить параметры вызова на стеке?
Если да, то как правильно поступать в таких случаях, чтобы предотвратить взлом?
Для безопасного вызова защищенной функции из другой защищенной функции вместо маркеров необходимо добавить в проект все необходимые функции по имени (при наличии MAP файла). При использовании маркеров прологи и эпилог функции может остаться незащищенным и взломщик может перехватить управление в этом месте.
После защиты функции с помощью map файла мы можем наблюдать в начале jmp, который ведет в секцию VMP.
Если первая функция будет вызывать вторую, то управление будет переходить на начальный jmp второй функции?
Если да, то взломщик сможет перехватить вызов в этом месте. В старой версии дела обстояли так. А сейчас как?
Если первая функция будет вызывать вторую, то управление будет переходить на начальный jmp второй функции?
Если обе функции завиртуализированы, то перехода на начальный JMP вызываемой функции не будет.
Если да, то взломщик сможет перехватить вызов в этом месте. В старой версии дела обстояли так. А сейчас как?
И в старой и в новой версии работает одинаково как это описано выше.
А если полностью завиртуализированная через MAP-файл ф-ия (1) вызывается из завиртуализированного между маркерами блока другой ф-ии (2) -
можно ли будет перехватить переход на начальный JMP ф-ии (1) в таком случае?
Все тоже самое что с CALL.
Не уверен, что правильно это понял: т.е. из (2) переход на начальный jmp (1) все-таки будет?
Если обе функции завиртуализированы, то перехода на начальный JMP вызываемой функции не будет.