а можно ли например делать отдельные операции с регистрами ядер в потоках т.е я допустим пушу регистры текущего ядра в стек и это другой стек чем в соседнем потоке у соседнего ядра? И регистры других ядер живут своей жизнью в своих потоках и ими можно управлять и есть какой то общий стек где они могут обмениваться информацией, я вот глянул исходник по linux там вроде для каждого потока как минимум свой стек создается
Насколько я понял: можно ли управлять регистрами в чужом потоке
Да, можно. В Windows, например, открываешь поток (OpenThread), получаешь контекст потока через его handle - GetThreadContext, и результат получаешь в структуру. Можешь по указателю их изменять.
Так, к примеру, можно инжектить шеллкод - изменяя EIP потока на адрес шеллкода.
P.S: Не забывай замораживать поток (SuspendThread, ResumeThread)