Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: GDoBle en 25 Febrero 2022, 21:39 pm



Título: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: GDoBle en 25 Febrero 2022, 21:39 pm
Muy buenas a todos

Alguien me pudiera ayudar con un pequeño problemita, esto que estoy diciendo se tiene que poder porque he visto programas que lo hacen, hay alguna manera de que en un proyecto de C# yo pueda referirme a un dll que esta dentro de un exe ?? por ejemplo, digamos que yo quiera copiar un dll a una carpeta, pero ese dll esta dentro de un exe, ¿como podria yo poner en la ruta del dll si esta dentro de un exe? (y cuando digo .dll no me refiero a uno hecho por .net, si no un dll... hecho  por otra cosa que no sea .net XD)

En fin ¿alguna manera de hacer eso?


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: @XSStringManolo en 26 Febrero 2022, 01:50 am
Prueba incorporando este código a tu programa RE (https://github.com/rgl/ResourceExtractor), sacas el .dll y haces con él lo que quieras.

Ha sido el primer resultado al buscar extract dlls from exe in C# github (https://google.com/search?q=extract+dlls+from+exe+in+C%23+github). Si el código no funciona, prueba con los siguientes resultados.


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: fary en 26 Febrero 2022, 07:34 am
Puedes probar como dice @XSStringManolo hechando un ojo a los recursos del ejecutable por si guarda la DLL en ellos. Mirate el programa llamado Resource Hacker. Este te ayudará a ver los recursos del ejecutable  y extraer la DLL sin problema.

Si no te resulta eso,  habrá que hecharle un ojo al ejecutable a ver donde guarda y como la DLL.



Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: .xAk. en 26 Febrero 2022, 12:50 pm
una dll no puede estar dentro de un exe, a no ser que este esté empaquetado, y para utilizarla antes tenga que sacarla fuera. El linkado de librerías con binarios estáticos se lleva a cabo con archivos .lib .a

si la .dll forma parte de un paquete exe, tiene que ser sencillo extraerla. Como se ha comentado, es un recurso integrado.


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: Danielㅤ en 26 Febrero 2022, 16:47 pm
una dll no puede estar dentro de un exe, a no ser que este esté empaquetado, y para utilizarla antes tenga que sacarla fuera.

Falso
Una dll tranquilamente puede estar dentro de un exe, incluso hasta dentro de una variable.
La forma sería que esa dll esté convertida a base64 y el texto codificado esté guardado dentro de una variable interna del mismo ejecutable.

Por supuesto que esa operación se debería hacer antes de crear el exe, ya que cuando el exe esté creado ya tendrá la dll en base64 dentro de él, por lo tanto el exe solo tendría que decodificar la dll para convertirla de base64 a archivo binario y ésto lo tendría que hacer cuándo el programa exe es ejecutado/abierto.


Saludos


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: .xAk. en 26 Febrero 2022, 19:11 pm
Falso

Falso no es. La librería es de enlace dinámico. La utilizas aunque sea en un archivo en memoria. Eso es empaquetado.


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: juanedwin en 28 Febrero 2022, 03:14 am
A mi me interesa este tema, entonces pensaba poner una dll (de tipo NDI 5) en una carpeta dentro del proyecto y ejecutarlo, en el exe ahi ya lo incluiria la dll, asi que no será asi? , soy novato, conozco lo basico de VB, si pudieran explicar como para un novato, mi idea estará mal.... disculpen mi intromision


Título: Re: Como hacer referencia a un .dll dentro de un .exe C#
Publicado por: fary en 28 Febrero 2022, 07:47 am
A mi me interesa este tema, entonces pensaba poner una dll (de tipo NDI 5) en una carpeta dentro del proyecto y ejecutarlo, en el exe ahi ya lo incluiria la dll, asi que no será asi? , soy novato, conozco lo basico de VB, si pudieran explicar como para un novato, mi idea estará mal.... disculpen mi intromision

Quieres usar las funciones de una DLL  por lo que entiendo... ¿No?

Tienes 3 opciones que se me vengan a la cabeza.

1- Meter la DLL a la carpeta del sistema.
2- Poner la DLL en la misma ruta de tu ejecutable
3- Hacer referencia directa a donde tiene que ir a buscar la DLL cuando vayas a llamar a alguna función que este dentro.

Mi recomentación en la segunda opción.