Igual me equivoco (no soy experto en programación win32), pero creo que el problema está en que puedes mandarle mensajes a un CONTROL, no a la ventana de la aplicación. Si le mandas un mensaje directamente a un control (en el caso del artículo, a un control de edición) el bucle principal de proceso de mensajes de tu aplicación ni se enterará. Para poder hacer un mínimo filtrado tendrías que interceptar TODOS los mensajes a TODOS los controles; eso, de hecho, equivaldría a reescribir tu propia versión de la GUI de Windows.
Fíjate en la comparación con XWindow: en X los controles no son ventanas. En Win32 sí: cada control tiene su bucle de mensajes, etc, etc. Ese bucle de mensajes está en el código de windows (supongo que en USER.EXE) y es ESE CÓDIGO el que atacas, no el código de la aplicación.
Una posible solución sería que los controles que se muestran en el desktop corran siempre bajo los privilegios de la sesión del usuario logeado (lo siento por la palabrita). Pero eso supondría que cada vez que se activara un control tendría que haber un cambio de UID efectivo (o como se llame en windows), y supongo que eso no sería precisamente muy eficiente.
Igual todo lo anterior es una chorrada... insisto en que conozco POCO la programación Win32...
Re:Escalada de privilegios
(Puntos:2)Fíjate en la comparación con XWindow: en X los controles no son ventanas. En Win32 sí: cada control tiene su bucle de mensajes, etc, etc. Ese bucle de mensajes está en el código de windows (supongo que en USER.EXE) y es ESE CÓDIGO el que atacas, no el código de la aplicación.
Una posible solución sería que los controles que se muestran en el desktop corran siempre bajo los privilegios de la sesión del usuario logeado (lo siento por la palabrita). Pero eso supondría que cada vez que se activara un control tendría que haber un cambio de UID efectivo (o como se llame en windows), y supongo que eso no sería precisamente muy eficiente.
Igual todo lo anterior es una chorrada... insisto en que conozco POCO la programación Win32...