Всех с Новым Годом и Всем привет вот допустим что при сплайсинге есть опасность что поток в это время выполняет эти самые 6 байт (предпологается сплайс работающей проги) например push ebp mov ebp, esp sub esp, 4 и это не теоритическая опасность я писал специальный пример и падало именно из за того что поток во время сплайса исполнял эти 6 байт казалось бы можно заюзать NtSuspendProcess и проверить через GetThreadContext eip каждого потока чтобы он не указывал в эти самые 6 байт это работает правда незнаю насколько это правильно но интересно другое что после NtSuspendProcess сколько бы я не проверял eip уже никогда не указывает на эти 6 байт такое ощущение что после NtSuspendProcess потоки прерываются где то в ядре и впринципе не способны указывать на usermode адреса или я ошибаюсь ? надо или не надо после NtSuspendProcess проверять еще и eip каждого потока ? потому что сколько бы я не пытался поймать поток на первых 6 байтах после NtSuspendProcess у меня не получилось и выходит что можно просто замарозитть процесс NtSuspendProcess и ставить сплайс и потом разморозить и так все нормально будет или я ошибаюсь ?
63F45EF45RB65R6VR На этих шести байтах поймать поток не реалистично, хотя бы ловить на цикле ... Вовсе и не всегда будут ядра ...
У меня терпения не хватило до конца дочитать.. A. Изменять атомарно. Не универсально. B. Маршрутизация. Копируем в буфер код и переключаем на него тред, каждый тред.