Когда копируешь выделенный участок кода который собираешься модифицировать по адресу ставится новая защита неисполняемого участка памяти и защитник страницы(который ты модифицировал/собираешься модифицировать), как только срабатывает первый бряк отладчик изменяет EIP на оригинальный участок кода(скопированный), а когда срабатывает второй бряк, то возвращает выполнение на модифицированную страницу.
Типа того
На с++ это так работает.
Я мог что-то напутать или забыть, но можешь загуглить PageGuard Hooking, есть статьи где подробно расписано как это работает.