As a proof of concept, I wrote a quick keylogger in .NET. It was only 150 lines and it worked flawlessly.
It's frighteningly effective. With some relatively simple use of the WinAPI function GetAsyncKeyState, I was able to capture any and all keystrokes and save them to a data file.
My question is, is it possible for one program to detect when another program calls GetAsyncKeyState?
Furthermore, is it possible to detect when another program calls any winAPI function at all?
Thanks!