elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Verificar si una dll está cargada en un ejectuable?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Verificar si una dll está cargada en un ejectuable?  (Leído 9,448 veces)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Verificar si una dll está cargada en un ejectuable?
« en: 8 Febrero 2012, 21:24 pm »

Hola a todos, bueno poseo una aplicación en la cual hookeo una DLL más o menos de la siguiente manera (seudocodigo):

Push midll.dll
call LoadLibraryA
or eax,eax
je cerrar
jmp entry point
cerrar:
push 0ff
call ExitProcess

Carga muy bien, pero el problema que me surge es de que manera, que API podría llamar o que función podría realizar para que una vez ejecutada la aplicación verifique si está cargada.

La dll es para la detección de cheat's para un juego por lo que si una persona con pequeños conocimientos podría simplemente nopear desde push midll.dll hasta je cerrar y no cargaría la DLL (el proceso funcionaría correctamente, pero sin un "sistema de seguridad").

Mi idea es hacer un injerto que verifique si está cargada en memoria, pero ese es mi duda como y con qué API usarla?

INFO adicional: La DLL se conecta a un servidor para corroborar su integridad a través de CRC por lo que no me preocupa que alguien agregue una DLL con el nombre de midll.dll ya que sería detectada. Por lo que en palabras simples solo me gustaría saber de que manera el proceso puede verificar si la dll está cargada.

el seudocódigo sería así
injertar una función en donde el proceso pase seguidamente.
verificar si hay si la DLL está cargada y retomar normalmente.

Espero su ayuda.

Efectivamente eso es más ASM pero creo que se puede integrar a Ing inversa al ser un tema que involucra la seguridad

(si alguien se ha topado con un programa que haga algo parecido)

PD: Solución simple no compleja jeje


Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #1 en: 8 Febrero 2012, 21:36 pm »

Probaré con GetModuleBaseNameA o GetModuleFileNameA

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #2 en: 9 Febrero 2012, 03:05 am »

Que yo sepa con la api Getmodulehandle podes comprobar si un modulo esta cargado
mas que todo te devuelve el handle...
Y eso de hookear una dll? no seria hookeas una funcion/procedimiento de una dll?
En línea

.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #3 en: 9 Febrero 2012, 09:41 am »

Que yo sepa con la api Getmodulehandle podes comprobar si un modulo esta cargado
mas que todo te devuelve el handle...
Y eso de hookear una dll? no seria hookeas una funcion/procedimiento de una dll?

También es un buen método, en fin se me ocurrió para no complicarme demasiado cifrar las instrucciones comentadas con un simple xor, luego de eso lo empaqueté (además de eso realice un injerto que verifica el tamaño de la aplicación y si es mayor al tamaño de la aplicación comprimida es por que lo más probable es que lo hayan desempaquetado, al detectar eso cierra el proceso, La protección no es difícil de romper, pero de alguna u otra forma imposibilita a la media de usuarios. ya que entre nopear y revertir un XOR para alguien que no conoce de OllyDbg sería unas buenas horas (Demorándose uno no más de 5 minutos)

Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #4 en: 9 Febrero 2012, 16:18 pm »

Podes implementarle algún algoritmo de verificación de integridad, pero no uno si no varios y hacerlo en diferentes lugares y diferentes tiempos.

Eso si que es tedioso, y de cuando en cuando provoca alguna excepción para ir borrando los HBPs si es que hubiera, si no puedes usar la api que te devuelve la structure contex y hacer lo mismo.

pd: Creo que deberías tomar lo que te dice RHL, no había dado cuenta que lo mencionó XD, si está cargado te debe devolver el handle, si no está cargado pues error, y también puedes usar la api GetLastError.

Ahora porque no quieren que cargue esa dll?, que NO es fundamental para el desenvolvimiento correcto del game? XD


Nox,
« Última modificación: 9 Febrero 2012, 16:20 pm por Иōҳ » En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #5 en: 9 Febrero 2012, 18:22 pm »

Esa DLL se usa como anticheat, es buena me detecta incluso a OllyDBG y muchos cheat que he usado para el juego, el problema es que con simples NOP se puede quitar y fin sistema de seguridad xD, por eso la idea era implementar "un poco mas de seguirdad". Cuando tenga todo listo lo subiré para ver quien se anima a nopear la .dll, en si creo que es muy fácil para el nivel que hay acá, pero si lo ves para jugadores que buscan en google cheat juego x o alguien que leyó las instrucciones para instalar el anticheat y las realiza al reves (NOPEA), Se llevará una gran sorpresa partiendo como un molebox ( a mi criterio fácil), luego con inline patch a través de cifrado xor y entre medio una comprobación de tamaño.


Saludos
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.964


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #6 en: 9 Febrero 2012, 20:36 pm »

Fijate esto: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx

Este es el campo interesante: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813708(v=vs.85).aspx

De ese array (InMemoryOrderModuleList) sale el listado de modulos cargados (el mismo que usa Olly)

Ni te digo si te pones a jugar con eso...  ;)

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

TruenoCaos

Desconectado Desconectado

Mensajes: 59



Ver Perfil
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #7 en: 9 Febrero 2012, 21:56 pm »

como ya sabeis de esto no se mucho, pero lo normal para comprobar que algo existe es volver intentar abrirlo.

una pregunta si no se carga el dll, y se intenta usar una funcion de esa dll, no saltaria un error?

Un saludo
En línea

Иōҳ


Desconectado Desconectado

Mensajes: 563


Ver Perfil
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #8 en: 9 Febrero 2012, 22:15 pm »

Fijate esto: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx

Este es el campo interesante: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813708(v=vs.85).aspx

De ese array (InMemoryOrderModuleList) sale el listado de modulos cargados (el mismo que usa Olly)

Ni te digo si te pones a jugar con eso...  ;)

Saludos!

 ;-)

verdad, muy buen dato y recordatorio ya se me había pasado el peb ni por aca  :silbar:
En línea

Eres adicto a la Ing. Inversa? -> www.noxsoft.net
.:UND3R:.
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.118


Ingeniería inversa / MASM


Ver Perfil WWW
Re: Verificar si una dll está cargada en un ejectuable?
« Respuesta #9 en: 10 Febrero 2012, 03:00 am »

Fijate esto: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813706(v=vs.85).aspx

Este es el campo interesante: http://msdn.microsoft.com/en-us/library/windows/desktop/aa813708(v=vs.85).aspx

De ese array (InMemoryOrderModuleList) sale el listado de modulos cargados (el mismo que usa Olly)

Ni te digo si te pones a jugar con eso...  ;)

Saludos!

:O Excelente muy buena Info, Muchas gracias :D

como ya sabeis de esto no se mucho, pero lo normal para comprobar que algo existe es volver intentar abrirlo.

una pregunta si no se carga el dll, y se intenta usar una funcion de esa dll, no saltaria un error?

Un saludo

Efectivamente por eso se suele comprobar si una vez que se intenta cargar (LoadLibrary) retorna algún handle, en caso que no devuelva se dirige a un procedimiento encargado de mostrar algún tipo de mensaje, el problema radica que la DLL cargada en mi ejecutable es anexa al programa, por lo que si no está no influye en nada por eso debía integrar una que otra API o método para hacer que la dll y la aplicación se amen  y se hagan dispensables uno para el otro ;D

Saludos y muchas gracias a todos por comentar, opinar y ayudar :D
En línea


Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Verificar si esta conectado a internet
Programación Visual Basic
akss_wm 1 1,338 Último mensaje 2 Marzo 2006, 21:39 pm
por Sancho.Mazorka
verificar Si Web Está Online
Programación Visual Basic
Rudy21 3 1,701 Último mensaje 5 Octubre 2008, 07:04 am
por seba123neo
Como verificar si mi payload está deñada
Bugs y Exploits
.:UND3R:. 3 4,419 Último mensaje 21 Febrero 2014, 09:40 am
por adastra
¿Cuanto les esta tardando zone-h en verificar?
Dudas Generales
alienmaster 1 1,214 Último mensaje 14 Octubre 2014, 00:17 am
por peib0l
verificar si un numero esta repetido en matriz « 1 2 3 »
Programación C/C++
SojatDotar 25 12,512 Último mensaje 7 Julio 2015, 00:35 am
por SojatDotar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines