Autor
|
Tema: Programar programa incerrable C++ (Leído 3,147 veces)
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Hola, resulta que después de leer un hilo del foro me ha entrado curiosidad por crear un programa que no se pueda cerrar, que de el conocido mensaje de alerta que tienen algunos procesos del administrador de tareas cuando los tratamos de cerrar. "La operación no se pudo completar, acceso denegado". Bueno, he estado buscando y leyendo y parece que tiene que ver sobre ponerlo como crítico o algo así ya os digo que lo acabo de buscar, el caso encontré un código que me funcionó después de algunas desgracias con otros que no funcionaron: http://www.codeproject.com/Articles/43405/Protecting-Your-Process-with-RtlSetProcessIsCritiLo he ejecutado y funciona eso si, necesita permisos de administrador para ponerse como proceso crítico, pero a pesar de eso estoy frustrado, porque no muestra lo de "La operación no se pudo completar, acceso denegado", sino que muestra "¿desea finalizar programa.exe?, si lo finaliza windows podrá quedar inutilizable o apagarse, y perderá los datos que no haya guardado. ¿está seguro de que desea continuar". Es decir te acojona, pero te abre la opción de cerrarlo. En otros procesos que usan estos métodos como smss.exe, csrss.exe, o services.exe te sale directamente el mensaje de error sin opción a cerrarlo. ¿Cómo lograr los mismos resultados?. Saludos. Edito: Esto lo probé y no funcionó, obtuve error, pero sin embargo la idea es la misma. http://web-athentication.googlecode.com/svn/trunk/MalwareCode/RtlSetProcessIsCritical/RtlSetProcessIsCritical.cpp
|
|
« Última modificación: 20 Enero 2016, 21:44 pm por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
Karman
|
Creo que la única opción es que tu programa cargue un driver en el sistema que no permita la finalización del mismo (aunque se podría descargar el driver y cerrarlo pero ya es una tarea complicada) el tema es que en 64 bits los drivers deben estar firmados digitalmente y no pueden tocar mucho del sistema sin causar un BSOD por el patchguard, aunque hay algunos métodos que permiten filtrar ciertos eventos (lo que hacen los antivirus)
S2
|
|
|
En línea
|
|
|
|
fary
|
Pero Kaxperday... ten en cuenta que los otros procesos son NECESARIOS para que funcione el SO y el lo sabe.
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
kub0x
Enlightenment Seeker
Colaborador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Creo que la única opción es que tu programa cargue un driver en el sistema que no permita la finalización del mismo (aunque se podría descargar el driver y cerrarlo pero ya es una tarea complicada) el tema es que en 64 bits los drivers deben estar firmados digitalmente y no pueden tocar mucho del sistema sin causar un BSOD por el patchguard, aunque hay algunos métodos que permiten filtrar ciertos eventos (lo que hacen los antivirus)
S2
También valdría un hook en Usermode (ring3) a la API PAPI de Win32 en el proceso explorer donde puedas o bien ocultar tu proceso o bien hookear TerminateProcess o CloseHandle y filtrar ahí por PID. Que decir que en ring3 todo es detectable, y en kernel todo es detectable también a no ser que hookees antes que el AV las rutinas de interrupción (syscalls). Hookear no me gusta mucho, es necesario para trampear procesos pero soy más fan de subir al kernel y no hacer ruido. Como bien dices necesitas firmar el driver digitalmente mediante crypto de clave pública, además los Root CAs con los que se contrasta dicha firma están embebidos dentro del loader del Kernel, nade que ver con las Root CAs del keyring del OS, el keyring solo se utiliza a la hora de instalar el driver y cargarlo desde sc.exe o API, pero lo bonito es hacer un driver que arranque en modo BOOT y amigos con UEFI + Secure Boot chungo pastel. Saludos.
|
|
|
En línea
|
|
|
|
Kaxperday
Desconectado
Mensajes: 702
The man in the Middle
|
Bueno bueno cuantas ideas, respecto a lo del driver no tengo idea de como funciona el método, ¿usar un driver y hacer que dependa de tu proceso, o crear tu propio driver? no sé algo de lío tengo en ese tema. ¿Cómo se podría acceder a un driver y hacer que este dependa de ti?, no sé XD. Sin embargo si que entiendo la de hookear la API que muestra los procesos, o terminateprocess la función que los cierra.. eso sería como poner venda en los ojos. No está mal pero no lo veo como lo mejor. Luego está ponerlo como crítico como posteé en el código pero como dije no es lo mismo que hacen otros procesos como explorer, smss.. etc, pues poniendolo como crítico te da opción de cerrarlo a diferencia de estos, que seguramente utilicen algún driver para evitar que sean cerrados como decís. En el caso de que usen algún driver para protegerse como proceso, ¿me podrías explicar más en ue consiste el método? ¿qué pasos habría que seguir para conseguirlo?, partamos de que tenemos privilegios de administrador o SYSTEM, ¿se podría hacer entonces? XD, un poco la idea al menos Un saludo, gracias.
|
|
« Última modificación: 21 Enero 2016, 13:47 pm por Kaxperday »
|
En línea
|
Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
Pensando en tu idea mientras me comía una McExtrem Original y he recordado virus se arrancan después de apagarlos y para quitarlos hay que entrar en modo a prueba de fallos he pensado. Dos programas, o más, uno de ellos hace todo el trabajo mientras que el otro hace de guardián y se encarga de que si el usuario cierra el programa principal lo reinicia y, además, guarda o mantiene vivo los datos para que el otro cuándo arranque, pueda continuar el trabajo donde lo dejó. Y no solo eso, porqué el usuario puede ser muy inteligente y cerrar el guardián para después cerrar el principal, que el programa principal también monitoree al guardián por si se cierra reiniciarlo. Hasta se podría crear una pequeña comunidad de guardianes, esparcidos por el sistema y con diferentes nombres, para que le fuera imposible al usuario determinarlos todos y que tu aplicación principal no pudiera quitarse.
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.958
Israel nunca torturó niños, ni lo volverá a hacer.
|
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programa para programar en Java
Java
|
Xkt
|
7
|
12,387
|
17 Abril 2009, 06:43 am
por Amerikano|Cls
|
|
|
ayuda con programa no se programar....
« 1 2 »
Programación Visual Basic
|
Martin-Ph03n1X
|
10
|
4,971
|
22 Octubre 2009, 00:52 am
por Martin-Ph03n1X
|
|
|
hacer un programa incerrable
Scripting
|
sasuke48
|
9
|
7,926
|
9 Diciembre 2012, 10:54 am
por z3nth10n
|
|
|
Web incerrable
Desarrollo Web
|
Delacure Mihawk
|
3
|
7,830
|
4 Febrero 2014, 17:24 pm
por Shell Root
|
|
|
Se puede programar en C en un programa de C++?
Programación C/C++
|
vladelukr
|
4
|
2,779
|
2 Septiembre 2014, 20:38 pm
por vladelukr
|
|