Да, все так. Но этот код просто выполнится немного позже? И возврат из этой функции будет уже после возврата кода к оригиналу, то-есть стек успеет провести инициализацию
Я недавно похожую задачу решал для реализации профилировщика
Со стеком и регистрами я поступал просто - смотрел до модификации значение есп/рсп и после, что оно принимает тоже самое значение, а также что значения всех регистров восстановилось (тех, которые должны сохраняться) и все... ну ещё тут подсказали, что на х64AMD стек должен быть выровнен на 16, поэтому пушов должно быть четное кол-во, ну и попов соотв.тоже
Плюс возможно тебе нужно ещё мультимедийные регистры сохранять XMM0-XMM5 (не помню точно с по какие) и это вроде ещё может зависеть от того, какой набор SIMD инструкций используется, может YMM или ZMM надо сохранять
Мне хватило XMM(но это скорее всего не очень универсально и лучше сохранять максимально широкий регистр)