Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali Ver Mensaje
Código Delphi [-]
        // Es el mismo directorio del EXE?
Creo que hay que tener cuidado aquí. Hasta donde entiendo, el primer directorio donde se busca una dll es el current working directory (CWD) o directorio de trabajo actual, que no necesariamente coincide con el directorio donde se ubica el ejecutable. Por ejemplo aquí, donde se habla del DLL preloading, menciona una prueba abriendo la aplicación haciendo doble clic sobre un archivo asociado a la aplicación (en caso de que la aplicación maneje archivos) en cuyo caso, el CWD será el directorio donde se ubica el archivo.

LineComment Saludos
Responder Con Cita
  #2  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
¡Hola a todos!

Gracias al código de Neftalí acabo de descubrir que la función "SetDefaultDllDirectories" no funciona, o, mejor dicho, no lo hace como se espera. Esto se demuestra situando la DLL del "crack" en el directorio del programa: incluso después de ejecutar la función susomentada (recordemos que sin errores, o sea, se ejecuta correctamente) la DLL del "crack" (situada en el directorio del programa) aparece listada por el código de Neftalí. *

O sea, aunque usando la función que no funciona... puedo comprobar si existe la DLL en el directorio del programa, ya he dicho que esto no me convence y que creo que el siguiente "crack" podría con ello. El código que propone Neftalí me parece mejor que usar la función "SetDefaultDllDirectories" (ojo, al menos en mi caso particular) puesto que el "cracker" no consiguiese saltárselo de otra forma que no fuese tocando el propio ejecutable.

*También se lista la DLL "shfolder.dll" del directorio del sistema, pero, más abajo en el listado...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Probado el código de Neftalí este funciona como se espera y me convence más que el uso de la función "SetDefaultDllDirectories" y la posterior comprobación de la existencia de la DLL maliciosa. El código podría quedar poco más o menos que como se ve abajo, siendo la unidad en cuestión situada la primera en el "uses" del archivo de proyecto del programa:

Código Delphi [-]
unit Cracker.Welcome;

interface

implementation

uses
  // Delphi
  Winapi.Windows,
  Winapi.TlHelp32,
  System.SysUtils;

var
  H: THandle;
  M: TModuleEntry32;

initialization

  H := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0);
  Win32Check(H <> INVALID_HANDLE_VALUE);
  try
    M.dwSize := Sizeof(M);
    Win32Check(Module32First(H, M));
    repeat
      if LowerCase(ExtractFileExt(M.szExePath)) = '.dll' then
      begin
        if ExtractFilePath(M.szExePath) = ExtractFilePath(ParamStr(0)) then
        begin
          Halt(1);
        end;
      end;
    until not Module32Next(H, M);
  finally
    CloseHandle(H);
  end;

end.

Dicho código supone que en el directorio del ejecutable del programa no debe existir DLL alguna. Me queda la duda de si debo cerrar el "handle" antes del "Halt"...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
¡Hola!

Acabo de actualizar todos los programas (pero sin cambiar la versión) para usar el código anterior, en primer lugar, porque creo que puede salvar el "ataque" mediante DLL situadas en el directorio del programa (al menos funciona con el último "crack" conocido), y, en segundo lugar, por jorobar un poco al "cracker", hombre, a ver si ya estaba trabajando sobre el código anterior y su trabajo no sirve para este nuevo código. El que no se consuela es porque no quiere, ¿eh? Je je je.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 10-11-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Una cosa.
Prueba a abrir el programa, ejecutando directamente un fichero .AB (Application Builder File) que tengas en cualquier directorio y colocando junto a ese fichero la DLL "parcheada".


Tal vez habrá que añadirle el "Directorio actual" además del de la aplicación.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 10-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Neftali Ver Mensaje
Una cosa.
Prueba a abrir el programa, ejecutando directamente un fichero .AB (Application Builder File) que tengas en cualquier directorio y colocando junto a ese fichero la DLL "parcheada".


Tal vez habrá que añadirle el "Directorio actual" además del de la aplicación.
Ejem:

Cita:
Empezado por roman Ver Mensaje
Creo que hay que tener cuidado aquí. Hasta donde entiendo, el primer directorio donde se busca una dll es el current working directory (CWD) o directorio de trabajo actual, que no necesariamente coincide con el directorio donde se ubica el ejecutable. Por ejemplo aquí, donde se habla del DLL preloading, menciona una prueba abriendo la aplicación haciendo doble clic sobre un archivo asociado a la aplicación (en caso de que la aplicación maneje archivos) en cuyo caso, el CWD será el directorio donde se ubica el archivo.

LineComment Saludos
LineComment Saludos
Responder Con Cita
  #7  
Antiguo 10-11-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Neftali Ver Mensaje
Prueba a abrir el programa, ejecutando directamente un fichero .AB (Application Builder File) que tengas en cualquier directorio y colocando junto a ese fichero la DLL "parcheada".
(Tal como había dicho Román).

Cita:
Empezado por roman Ver Mensaje
Creo que hay que tener cuidado aquí. Hasta donde entiendo, el primer directorio donde se busca una dll es el current working directory (CWD) o directorio de trabajo actual, que no necesariamente coincide con el directorio donde se ubica el ejecutable. Por ejemplo aquí, donde se habla del DLL preloading, menciona una prueba abriendo la aplicación haciendo doble clic sobre un archivo asociado a la aplicación (en caso de que la aplicación maneje archivos) en cuyo caso, el CWD será el directorio donde se ubica el archivo.
Lo he probado y parece que funciona correctamente.
Es decir, carga la DLL del directorio de sistema, no la que hay en el directorio donde se encuentra el fichero .AB.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Neftali Ver Mensaje
Una cosa.
Prueba a abrir el programa, ejecutando directamente un fichero .AB (Application Builder File) que tengas en cualquier directorio y colocando junto a ese fichero la DLL "parcheada".


Tal vez habrá que añadirle el "Directorio actual" además del de la aplicación.
He probado abriendo un archivo "AB" y sigue funcionando bien, esto es, el programa no se inicia si se encuentra la DLL "maliciosa" en el directorio del mismo.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 10-11-2016 a las 18:16:39.
Responder Con Cita
  #9  
Antiguo 14-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
De verdad, hay veces que parece que no me leen :

Cita:
Empezado por roman Ver Mensaje
Creo que hay que tener cuidado aquí. Hasta donde entiendo, el primer directorio donde se busca una dll es el current working directory (CWD) o directorio de trabajo actual, que no necesariamente coincide con el directorio donde se ubica el ejecutable. Por ejemplo aquí, donde se habla del DLL preloading, menciona una prueba abriendo la aplicación haciendo doble clic sobre un archivo asociado a la aplicación (en caso de que la aplicación maneje archivos) en cuyo caso, el CWD será el directorio donde se ubica el archivo.

LineComment Saludos
LineComment Saludos
Responder Con Cita
  #10  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Cita:
Empezado por roman Ver Mensaje
De verdad, hay veces que parece que no me leen :

LineComment Saludos
Sí hombre, sí que se te lee... ejem,... ¿te refieres a que acaso sería bueno comprobar si, además de en el directorio de la aplicación, alguna DLL se ha cargado desde el "directorio actual"? ¿No podría causar esto algún problema que acaso se solucionase cambiando nosotros mismos dicho directorio al principio?

__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 14-11-2016
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec Ver Mensaje
Hola a todos,



Sí hombre, sí que se te lee... ejem,... ¿te refieres a que acaso sería bueno comprobar si, además de en el directorio de la aplicación, alguna DLL se ha cargado desde el "directorio actual"? ¿No podría causar esto algún problema que acaso se solucionase cambiando nosotros mismos dicho directorio al principio?

Me refiero a que el enlace que pone escafandra está desde mi mensaje referido Ahí donde dice Por ejemplo

LineComment Saludos
Responder Con Cita
  #12  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Me refiero a que el enlace que pone escafandra está desde mi mensaje referido Ahí donde dice Por ejemplo

LineComment Saludos
Bueno, al menos no necesitas que nadie te dé la razón...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

En todo caso, Román, ¿tal vez sería buena idea incluir el "directorio actual" entre los excluídos (actualmente sólo el de la aplicación) como fuente de DLLs? No me queda muy claro el asunto... aunque, bueno, de momento el "cracker" no lo ha visto así, quiero decir, igual conviene esperarse sin más al próximo "ataque", si es que existe, y, si va en dicha dirección...

Edición: Pensándolo dos veces, para excluir el directorio actual podría usarse la función "SetDllDirectory" según la documentación...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #14  
Antiguo 15-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Estoy alucinando... me he registrado en el foro del "cracker", y, lo primero que sorprende es la actividad de dicho foro: cientos de usuarios conectados y cientos de miles de mensajes publicados. Curiosamente, he podido leer el hilo en donde se trata de "crackear" mis productos: es increíble la falta de respeto con la que tratan mi trabajo, pero, también mi persona. Baste con citar el último mensaje del propio "cracker":

Cita:
Anyway, i think we'll find a way to make this guy stop bothering a little bit.
O sea... que cuando trato de proteger mi trabajo, al que llevo dedicado años (no porque yo quiera, sino porque los años pasan) es una molestia para este hombre, les estoy molestando, así que pronto verán cómo pueden hacer para que deje de molestarlos. No cito más mensajes, pero, todos siguen más o menos el mismo camino: el "cracker" es ponderado por el resto de usuarios, "muchas gracias", "eres el mejor", "gran trabajo"...

Je je je... me tengo que tomar esto a cachondeo y así lo hago de modo que ahora mismo me estoy partiendo de la risa.

He dudado entre si contestar en el hilo o no hacerlo... pero como que paso: que se diviertan crackeando programas y sigan considerando a sus autores "molestias" que quitar de en medio... ¡qué cosas!
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 15-11-2016 a las 11:50:50.
Responder Con Cita
  #15  
Antiguo 14-11-2016
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por roman Ver Mensaje
De verdad, hay veces que parece que no me leen :
Ya sabes que no.
El problema es que en este hilo se nos ha notado mucho...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 06:22:58.


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