Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 23-02-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Antes de nada, debemos de aclarar sobre que sistema estamos trabajando y el tipo de cuenta de usuario. Si estamos hablando de un Windows 98 no hay nada que hacer, es imposible proteger nada en ese sistema, no al menos sin modificar sustancialmente el propio sistema (inyecciones de código, drivers, etc ...). Solo hay que pensar que aunque creemos un superprograma de protección, un atacante solo tendría que matar el proceso y nadie se lo puede impedir.

Otra cosa es si estamos trabajando sobre un Windows 2000/XP, y con una cuenta de usuario limitada. Entonces lo primero es que nuestra aplicación se ejecute como un servicio, como un usuario limitado no puede parar ni matar un servicio por ese lado estaremos protegidos.

Una vez que estamos a salvo de algún listo, lo segundo es crear una lista de aplicaciones permitidas (lista blanca ), esto puede resultar tedioso, y nunca se sabe que aplicación puede llegar a ser necesaria en el futuro. Yo resolví el problema creando una lista de directorios permitidos, es decir, cualquier aplicación que se ejecute desde un directorio que no este en la lista sera asesinada. Como los usuarios de cuentas limitadas no puedes escribir fuera de la carpeta de su perfil (si no se especifica lo contrario), nos aseguraremos de que esa carpeta no esta en la lista de directorios permitidos. Yo utilizaba la siguiente lista:
Código:
c:\Archivos de programa\
c:\Archiv~1\
c:\Windows\
\SystemRoot\
\??\
Los dos últimos son directorios especiales que utiliza windows para algunas aplicaciones del sistema. Ahora que ya sabemos que matar y que dejar vivir solo hay que crear un bucle que examine cada pocos milisegundos la lista de procesos y si alguno no esta en un directorio de la lista lo matamos sin compasión.

También hay la versión suave, que es mandar un mensaje UDP a un servidor para que el encargado se entere de la actividad sospechosa, sin matar el proceso. Yo en mi aplicación, tenia 2 modos: normal y agresivo. En el normal, solo avisaba al encargado, en el agresivo mataba el proceso sin hacer preguntas. Se podía cambiar de un modo a otro de forma remota. El problema es si estando en modo normal, un listo desconecta el cable de red. Pues no pasa nada, mi programa lo detectaba y pasaba a modo agresivo

Por ultimo existe otra solución mucho mas efectiva, pero también muchas mas compleja de programar. Se trata de crear un Hook en la API Createproccess de tal manera que cada vez que alguien quiere ejecutar un programa, primero se ejecuta nuestro código y podemos decidir si le dejamos o no hacerlo. Para hacer esto tenemos que usar inyección de código, pero en eso seguro que ardilla te puede ayudar mas que yo.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Identificador de programas en ejecución Josue API de Windows 6 31-12-2006 21:15:51
alerta y comentario de fbdataadapter julyus .NET 0 20-10-2006 18:17:09
!Alerta! Delphi en TV mamcx Noticias 14 05-04-2005 19:01:13
Mensajes de alerta jmselesan PHP 1 08-12-2003 19:49:06
Ayuda con Ejecución de programas creados con Kylix 3 Enterprise Trial darkone2k3 Lazarus, FreePascal, Kylix, etc. 0 18-11-2003 15:58:56


La franja horaria es GMT +2. Ahora son las 02:56:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi