.Exe evita ejecución de una dll?

Iniciado por gonzalitosk8, 6 Junio 2015, 20:29 PM

0 Miembros y 1 Visitante están viendo este tema.

gonzalitosk8

Hola comunidad, como están?
tengo una duda respecto a un exe que tengo,  es posible que al ejecutarse evite el inicio de unas funciones dll? de ser asi, en programación c# es posible crear algún archivo que ejecute una dll específicamente al iniciar el exe?
alguien que me oriente y explique ?

buen finde !

Eleкtro

#1
Cita de: gonzalitosk8 en  6 Junio 2015, 20:29 PMes posible que al ejecutarse evite el inicio de unas funciones dll?

Si, es posible siempre que hayan programado el código fuente para ese fín; se puede hookear "X" función de "X" .dll para procesar y alterar el comportamiento de sus llamadas, así cómo cancelarlas/ignorarlas.

Cita de: gonzalitosk8 en  6 Junio 2015, 20:29 PMen programación c# es posible crear algún archivo que ejecute una dll específicamente al iniciar el exe?

¿Qué estás preguntando exactamente?, ¿puedes ser más específico?, una .dll difiere de un executable en que precisamente no es un archivo ejecutable, ya que no provee un punto de entrada (entry point) que determine una función principal a la cual se le pase el control para iniciar su ejecución.

Si lo que pretendes es cargar una .dll y utilizar sus funciones, puedes hacerlo, sí;
en caso de que eso sea lo que pretendes, y si es un ensamblado .Net, entonces la solución más sencilla sería referenciar dicha .dll en tú solución de Visual Studio, la solución compleja sería cargar dinamicamente la .dll en tiempo de ejecución utilizando la técnica Reflection, con los miembros de la Class System.Reflection.Assembly, empezando por el miembro para cargar el ensamblado (System.Reflection.Aassembly.LoadFile()) y posteriórmente los miembros para localizar las funciones de dicha dll;
si por lo contrario es una .dll desarrollada en C/C++, entonces debes crear un wrapper, en esencia constaría de una Class de C# donde deberías declarar las mismas funciones que tiene la .dll y con sus mismas firmas (es decir, la misma parametización equivalente a .Net), es una tarea sencilla siempre y cuando conozcas cómo ha sido desarrollada dicha .dll, debes conocer los nombres de dichas funciones y también sus firmas, ya que debido a la naturaleza de C++, esto último es indescifrable mediante ingeniería inversa, no puedes saber a ciencia cierta si una función compilada toma un string cómo argumento, o un entero, a menos que hayas intentado pasarle ambos tipos de argumentos para salir de dudas, por suerte hay herramientas que facilitan en parte el análisis de una dll, cómo por ejemplo "Dll Export Viewer" de Nirsoft.

Saludos








gonzalitosk8

Muchas gracias por explicarme!
te comento el porque hice esta pregunta.

tengo un exe en modo trial, al no ser registrado no funciona la opción de exportar.
también tengo el mismo exe pero con la opción de exportar pero que te pide registrar para poder hacerlo.

una carpeta contiene el exe y creo yo que los dll dentro de ese exe.
la otra tiene los dll fuera del exe dentro de una carpeta.

revisando con un editor hexadecimal, vi un texto que dice "export has finished"

entonces supuse que el exe, tiene programado no ejecutar ese dll para el modo trial, y que al estar registrado ese dll se ejecute! quizás también tenga una conexion con otras dll, pero ya no se tanto!

asi que calcule que fue creado con ese propósito, iniciar el exe sin ejecutar esa dll!

Eleкtro

#3
¿Y cómo has llegado a la conclusión de que la función "exportar" se encuentra en una de esas dll, y no es algún procedimiento del código compilado en el exe?, ¿lo has analizado bien, o solo es una suposición?.

¿En que lenguaje está programada la aplicación?, ¿en C#?;
en C# (y otros lenguajes) puedes cargar dinamicamente una dll, es decir, no necesariamente se debe cargar una dll en el startup de la aplicación si el programador no quiere, siempre y cuando dicha dll no sea una dependencia "crítica" para el inicio de la app, claro está.

Ten en cuenta también, que las dll se podrían adjuntar/embedir en el exe, es decir, unir las dependencias .dll en un archivo .exe unificado, lo comento por eso de que tienes una versión sin dlls y otra con dlls, ese podría ser un motivo, o tal vez simplemente en una versión el autor no usó ninguna dll y en una actualización posterior añadió el uso de esas dll, quien sabe realmente cómo es sin poder analizar la app que comentas...

De todas formas por lo que has comentado me parece que esto no tiene que ver con la programación, sino más bien con la ingeniería inversa, ya que si no entiendo mal lo que realmente pretendes es bypassear la prohibición de la característica de exportar sin tener que registrarte,
en ese caso debes saber que en el foro no se da soporte para craquear aplicaciones comerciales, pero de todas formas puedes probar suerte a ver que opinan los moderadores del foro de Ingeniería Inversa.

Saludos!








gonzalitosk8

Muchísimas gracias por responder,  definitivamente me parece que tiene que ver con dicha dll, ya que abrí con "odbg" dicha dll y hay un contexto que parece borrar el menú de exportar(" ?MenuDelete@ifViewer@@AAEXXZ ").

ahora es cuestión de ver como puedo evitar esa acción! seguiré buscando información! saludos!