coulegas, esto puede ser amazing!
les quiero compartir un script que me baje por ahi y lo aplique para el siguiente tema: Me he topado con malignas aplicaciones siempre que tratan de robarme los datos cuando estaba en la prepa, seguramente mi viejo queria saber que diablos hacia en la PC, talves mi novia se las ingenio y me inyecto en la PC su propio espia el caso es que me ha dado lia que mucha info se me ha escurrido entre los dedos por culpa de estos fastidiosos keyloggers. me he topado con antivirus y esas cosas pero la verdad no es que funcionen de maravilla, asi que me di a la tarea de escribir mi propia solución y aunque esta lejos de ser algo infalible me ha servido para bloquear varias de esas pestes de loggers. ok va el punto: recuerdan los viejos escritorios virtuales de windows? ok muy sencillo os bajais un codigo que abundan de como crear un proceso de escritorio virtual, por ejemplo esto servira:
int WINAPI ejecutar(char *szDesktopName, char *szPath)
{
HDESK hOriginalThread;
HDESK hOriginalInput;
HDESK hNewDesktop;
hOriginalThread = GetThreadDesktop(GetCurrentThreadId());
hOriginalInput = OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP);
hNewDesktop = CreateDesktop(szDesktopName, NULL, NULL, 0, GENERIC_ALL, NULL);
SetThreadDesktop(hNewDesktop);
SwitchDesktop(hNewDesktop);
//aca en este punto enviamos nuestro proceso dentro del escritorio virtual previamente creado, este proceso por ejemplo puede ser ejecutar una instancia de Internet explorer y pasarle parametro URL para abrirla dentro de ese escritorio:
incrustarElProceso(szDesktopName, szPath);
SwitchDesktop(hOriginalInput);
SetThreadDesktop(hOriginalThread);
CloseDesktop(hNewDesktop);
return 0;
}
Y la función complementaria al proceso quedaria:
BOOL incrustarElProceso(char *nombreEscritorio, char *szPath)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
// Zero these structs
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
si.lpTitle = nombreEscritorio;
si.lpDesktop = nombreEscritorio;
ZeroMemory(&pi, sizeof(pi));
// Start the child process
if (!CreateProcess(NULL, // No module name (use command line).
szPath, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi)) // Pointer to PROCESS_INFORMATION structure.
{
return FALSE;
}
// Wait until process exits
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return TRUE;
}
podeis usar el visual C++ o el Visual Studio para crearte una pequeña app con un boton de iniciar para arrancar la funcion ejecutar, de ahi ya metido en el escritorio virtual pues nada quedas encerrado y te toca salir a la fuerza con el boton de apagado, pero ando tratando de escribir un hook que detecte la tecla esc o alguna tecla de funcion para obligar la terminacion del proceso la verdad que hice la prueba y ejecutando un keylogger y me meto dentro del escritorio virtual y el keylogger pues no alcanza a coger nada aunque creo que es por estar trabajando a nivel de aplicacion Win32 pero si os instalais un keylogger de kernel pos nada te jodes porque esto no es capaz de saltarselo, alguna duda escribanme y que os aproveche.
esto es codigo libre y pueden ver un demo funcionando aca:http://www.codeproject.com/Articles/7392/Lock-Windows-Desktop?msg=3139662#xx3139662xx