В прошлом я использовал сокет для предотвращения одновременной работы нескольких экземпляров. Если сокет используется, не продолжайте программу, если она доступна, пусть все работает как обычно.
I'm fairly certain those programs are pretending to be debuggers. On Windows, I would start with DebugActiveProcess() and go from there.
Oh, and the very useful looking ReadProcessMemory() function (and WriteProcessMemory()).
Вас также может заинтересовать Объезд :
Пакет программного обеспечения для обхода Win32 и API-интерфейсов приложений.
You can't do this with Standard C or C++ - you have to use operating system specific features. So you need to tell us which OS you are interested in.