visual ver una studio programa para modificar inversa ingenieria desensamblar desencriptar decodificador contenido como archivos delphi dll openssl indy indy10

delphi - ver - Cómo usar un dll fuera de la ruta del sistema



programa para desencriptar dll (3)

Hice una aplicación que usa los dlls de openssl ( libeay32.dll y ssleay32.dll ). Es indy usarlos, no llamo directamente a los dlls.

La solución más simple que encontré para evitar un instalador (me limito a delegar un exe y estoy de acuerdo con este enfoque) es:

  1. pon los dlls como recursos del exe
  2. en el inicio del programa, los extraigo en la carpeta exe
  3. el exe los usa

Esto es perfecto, pero me gustaría mejorar el enfoque extrayendo los dlls en una carpeta temporal y no en la carpeta exe (que en muchos casos es el escritorio).

El problema es que no sé cómo forzar a la aplicación a usar los dlls en la carpeta temp, porque ahora el comportamiento es: si los dlls no están en el directorio actual, intente buscar en los directorios definidos en la ruta del sistema.

¿Quién sabe una solución para obligar a Indy a usar los dlls en mi ruta temporal? (como "registrar temporalmente los dlls")


Cargue los archivos DLL usted mismo con LoadLibrary tan pronto como los haya escrito en la carpeta temporal.
Esto hará que LoadLibrary de Indy use sus archivos DLL cuando los necesiten:

Si lpFileName no incluye una ruta y hay más de un módulo cargado con el mismo nombre base y extensión, la función devuelve un identificador al módulo que se cargó primero.



Si está utilizando una versión actualizada de Indy 10, la unidad IdSSLOpenSSLHeaders tiene una función pública IdOpenSSLSetLibPath() para indicarle a Indy qué carpeta personalizada buscar en los archivos DLL de OpenSSL:

procedure IdOpenSSLSetLibPath(const APath: String);