Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.114
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
¿Cómo evitar que una DLL se ejecute antes que cualquier otra cosa de mi programa?

¡Hola a todos!

Pues eso. Hace poco me propuse validar las licencias de mis programas "online", de modo que los "keygen" que había por ahí ya no funcionan. Sé perfectamente que la lucha contra la piratería está perdida de antemano, pero, me ha resultado curioso el "crack" que se ha ideado cierto "cracker" (por lo visto español) para saltarse las licencias de mis programas. Veréis.

El "crack" de este hombre consiste en una DLL de nombre "shfolder.dll" que hay que situar al lado de los ejecutables de mis programas. Dicha DLL, en efecto, hace su trabajo, y, mis programas aparecen como "registrados". Pero este no es el tema que yo quiero tratar. El caso es que yo he tratado de contrarestar el "crack" de estos modos:

1º En el formulario principal, en el evento "OnCreate", comprobando que exista cualquier DLL en el directorio del programa, y, si es así, cerrar el programa. Este "contraparche" no tardó nada en saltárselo el "cracker", publicando una nueva versión de su "parche" que hacía inútil mi comprobación.

2º En el bloque "inicialización" de una unidad situada en primer lugar en mi programa, de modo que, según yo (equivocadamente) es el primer código que se ejecuta. De nuevo, se trata de comprobar si existe un archivo DLL, y, cerrar el programa si es así. Pero el "cracker" contrarestó de nuevo y dejó mi intento otra vez en nada.

Ahora bien, entonces, mi pregunta es, ¿qué demonios pasa? ¿Cualquier DLL (de nombre "shfolder.dll" u otra) situada en el directorio de mi programa se cargará sin más antes que mi programa y podrá hacer con el mismo lo que quiera? A mí me da la risa (literalmente), porque, ciertamente, no es algo que pueda evitarse, según me parece.

La DLL en cuestión "shfolder.dll" es en efecto usada en mis programas, puesto que ella se incluye en la unidad "Winapi.SHFolder.pas" de la VCL de Delphi, que sirve para obtener las rutas de ciertos directorios del sistema como "Mis Documentos", etc. Parece ser que, al incluirse dicha DLL sin indicar una ruta absoluta, Windows carga la DLL que se encuentre en el directorio de nuestro programa.

Realmente a mí me llama la atención que nuestro programa no pueda hacer nada contra eso, al menos no tratando de localizar dicha DLL previamente, puesto que, como he indicado arriba, aunque uno compruebe la existencia de la DLL en un código que, supuestamente, será el primero en ejecutarse, en realidad no sucede así y el código de la DLL se ejecuta primero.

Me parece que esta técnica se llama "DLL hijacking", pero, poca información se encuentra en Google en relación a Delphi, sino es que deberíamos indicar las rutas absolutas de las DLL, lo que implicaría tocar el código de la VCL, y, posibles problemas también, puesto que tal vez no sea tan sencillo indicar las rutas de las DLL de forma absoluta para distintas versiones de Windows, por ejemplo.

En fin, ya no os aburro más, porque, como digo, en realidad lo de la piratería es lo que menos me preocupa. En realidad mi "post" surge de la necesidad de saber cómo evitar dichas DLL... pero no tanto por el caso particular del "crack" que han creado para mis programas, sino porque, en efecto, igual que este "crack" podría ser cualquier otro tipo de código "malicioso"...

¡Un saludo a todos, espero que estéis bien y podáis ayudarme en algo!
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 08-11-2016 a las 19:09:53.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como evitar q se ejecute el Explorer.exe ing_arismendy API de Windows 3 02-02-2009 06:13:08
Como evitar que una apicacion se ejecute dos veces. manitoba C++ Builder 4 28-05-2007 16:50:04
Como evitar que se ejecute el msn JODELSA Varios 7 26-12-2005 14:17:22
Cualquier cosa me puede servir cmgenny Conexión con bases de datos 1 02-07-2003 22:27:24


La franja horaria es GMT +2. Ahora son las 19:16:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi