Autor
|
Tema: Verificar si una dll está cargada en un ejectuable? (Leído 12,492 veces)
|
.:UND3R:.
|
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:.
|
Probaré con GetModuleBaseNameA o GetModuleFileNameA
Saludos
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
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:.
|
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
Mensajes: 563
|
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
|
|
|
|
.:UND3R:.
|
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)
|
|
|
|
TruenoCaos
Desconectado
Mensajes: 59
|
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
|
|
|
|
|
.:UND3R:.
|
:O Excelente muy buena Info, Muchas gracias 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 Saludos y muchas gracias a todos por comentar, opinar y ayudar
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Verificar si esta conectado a internet
Programación Visual Basic
|
akss_wm
|
1
|
3,101
|
2 Marzo 2006, 21:39 pm
por Sancho.Mazorka
|
|
|
verificar Si Web Está Online
Programación Visual Basic
|
Rudy21
|
3
|
2,483
|
5 Octubre 2008, 07:04 am
por seba123neo
|
|
|
Como verificar si mi payload está deñada
Bugs y Exploits
|
.:UND3R:.
|
3
|
6,026
|
21 Febrero 2014, 09:40 am
por adastra
|
|
|
¿Cuanto les esta tardando zone-h en verificar?
Dudas Generales
|
alienmaster
|
1
|
2,163
|
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
|
17,872
|
7 Julio 2015, 00:35 am
por SojatDotar
|
|