Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2017
reyss reyss is offline
Registrado
NULL
 
Registrado: feb 2016
Posts: 6
Poder: 0
reyss Va por buen camino
monitorear un proceso para saber si ha sido "alterado"

Saludos a todos...necesito monitorear a otro programa en ejecución y saber cuando sea alterado por otro, por ejemplo cuando le inyecten una dll, he probado capturando varios de los mensajes del SO y aunque se puede hacer algo no consigo hacer lo que realmente quiero...si alguien ha trabajado algo de esto espero atentamente su ayuda...muy interesantes los temas de inyección de dlls y procesos....los voy a estudiar detenidamente para ver si saco algo de allí....
gracias....
Responder Con Cita
  #2  
Antiguo 21-11-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Detectar a las bravas si un proceso en ejecución e inyectado por otro no es tarea sencilla. Las inyecciones más habituales obligan al proceso anfitrión cargar una dll. El problema no es saber si cargó una dll, sino si esa carga no estaba concebida originalmente. Este tipo de inyección ejecuta en el proceso anfitrión la API LoadLibrary, que a su vez termina llamando a LdrLoadDll pasandole el parámetro de la ruta de la dll a inyectar. Si lo que quieres es proteger una aplicación propia, puedes hacerte a ti mismo un Hook a la API LoadLibrary, o mejor aún, a LdrLoadDll para conocer que dll va a ser cargada. Deberás contrastarla con una lista de dll legales para permitir o no la carga. Esa lista de dll será las que tu aplicación debe cargar para su normal funcionamiento.

Sin conocimiento de los procesos de inyección y Hook a la API, poco vas a poder desarrollar, por lo que lo primero es adentrarte en esos temas.


Saludos.
Responder Con Cita
  #3  
Antiguo 22-11-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Una forma de detectar el cambios es correrle un HASH previo y comparar con el guardado.
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 22-11-2017
reyss reyss is offline
Registrado
NULL
 
Registrado: feb 2016
Posts: 6
Poder: 0
reyss Va por buen camino
gracias por responder en tan breve tiempo...
he probado la variante le un hook, lo he hecho a nivel de sistema y me informa de algunos mensajes que son enviados desde y hacia el programa que estoy monitoreando, demasiada información y nada realmente significativo....ya me he estudiado e implementado los procesos de inyección de dll, realmente interesantes pero no creo que se pueda sacar nada para hacer lo que necesito....

me gustaría saber más de la variante del HASH ... si no te es mucho problema me gustaría tener una explicación de su funcionamiento o un demo de cómo se hace y yo me ocupo de sacar lo que pueda....

gracias a ambos y saludos...
Responder Con Cita
  #5  
Antiguo 22-11-2017
reyss reyss is offline
Registrado
NULL
 
Registrado: feb 2016
Posts: 6
Poder: 0
reyss Va por buen camino
pd. al programa que voy a monitorear puede que se le inyecte una dll...pero no tengo forma de saber la lista de las posibles dlls a inyectarle...es por eso que estoy tratando de saber de cualquier alteración....eso debería incluir la inyección de cualquier librería....
Responder Con Cita
  #6  
Antiguo 22-11-2017
reyss reyss is offline
Registrado
NULL
 
Registrado: feb 2016
Posts: 6
Poder: 0
reyss Va por buen camino
pd. otra vez.... disculpenme, es la primera vez que pongo un hilo y realmente no quisiera "meter la pata"...

el programa a monitorear no es mio, es un juego, de hecho es para monitorear que varios jugadores no "alteren" diferentes juegos mientras juegan en red...en eso estoy...y estoy estancadito en ese enorme detallito...

así que será bienvenida toda la ayuda que me puedan dar en este punto...
Responder Con Cita
  #7  
Antiguo 22-11-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El problema del Hash es que el proceso se está ejecutando y se pretende ver alteraciones en un proceso ya cargado por el S.O. Además, el proceso puede cargar dinámicamente dlls o incluso abrir otros ejecutables.

El típico hook de sistema Windows conseguido con SetWindowsHookEx no sirve. Hay que interceptar las API usadas para inyección y, tratándose de porteger un juego, habrá que inyectarlo previamente al atacante, con el fin de desplegar la protección.

En cualquier caso hay que analizar primero como es el ataque, si la máquina es nuestra o del jugador, si es a nivel de usuario o Kernel, que herramientas usa, si estamos en win32 o 64...

Para cada estrategia de ataque puedes diseñar una defensa pero para cada defensa puede haber otra modalidad de ataque. Lo ideal es que los jugadores usen tus PCs en los que no permiras injerencias.

Saludos.

Última edición por escafandra fecha: 22-11-2017 a las 08:49:00.
Responder Con Cita
  #8  
Antiguo 23-11-2017
reyss reyss is offline
Registrado
NULL
 
Registrado: feb 2016
Posts: 6
Poder: 0
reyss Va por buen camino
o sea que el hash no es más que la función hash que conozco y no sirve...lo que sugieres es que haga una dll con todo lo necesario para monitorear y la inyecte al juego en tiempo de ejecución, como un hook pero cargado en el propio juego y hacer que él mismo detecte cuando ha sido "alterado"...parece viable...las pcs no son mias, son de los jugadores, pero una de las reglas para jugar es que carguen todos el programa de monitoreo, de lo contrario son expulsados del servidor...
vale...voy a ponerme en función de tu sugerencia...

saludos y muchas gracias
Responder Con Cita
  #9  
Antiguo 23-11-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.195
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Básicamente, esa es la idea.

Saludos.
Responder Con Cita
Respuesta


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
Usar TServerSocket y TClientSocket para enviar "streams" más o menos "grandes" dec Internet 9 04-08-2015 17:11:50
Como Evitar que la Pantalla se "blanquee" durante un proceso oscarac Varios 9 21-07-2011 23:14:29
Error "Invalid Parameter" usando Tquery cuando proceso una consulta grande CharlesWar SQL 5 18-06-2008 21:27:56
ayuda ejecutando un proceso como "SYSTEM" y haciendo que no se pueda terminar lostprophets Varios 2 05-02-2008 03:28:50
ayuda "Detectando un proceso y ejecutando otro" lostprophets Varios 1 30-01-2008 00:54:03


La franja horaria es GMT +2. Ahora son las 22:14:45.


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