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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 09-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
En primer lugar, no se trata de las mismas DLL. Es decir, el cracker usa una DLL del mismo nombre, pero, el contenido de las mismas difieren, de modo que creo que aquí sería él quien tendría un problema: su DLL tendría que "emular" toda la otra DLL...
Tu programa crakeado, ¿funciona? Entiendo que sí, de lo contrario no sería un crack sino un killer Esto quiere decir que sigues pudiendo buscar rutas y folders y demás, es decir, sigue existiendo la funcionalidad de la dll original. Así que sí, ya hizo la emulación. Muy posiblemente desde su dll carga la original para ejecutar el código original después del suyo.

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

Cita:
Empezado por roman Ver Mensaje
Tu programa crakeado, ¿funciona? Entiendo que sí, de lo contrario no sería un crack sino un killer Esto quiere decir que sigues pudiendo buscar rutas y folders y demás, es decir, sigue existiendo la funcionalidad de la dll original. Así que sí, ya hizo la emulación. Muy posiblemente desde su dll carga la original para ejecutar el código original después del suyo.

LineComment Saludos
Sí; en efecto el programa funciona. También pensé en ello Román... y es cierto, al ser una DLL tan "pequeña" (a tenor de la unidad de Delphi que la envuelve, que puede no estar completa...) tal vez el "cracker" "simplemente" la reemplace toda. Pero, ¿usa las funciones que incluye para su propósito? Yo creo que no... sino que en la DLL el "cracker" incluye otro código que es el que hace "algo" que acaso no tenga que ver con la DLL ni con las funciones de la misma... no estoy seguro.

Si veo el cuarto "crack"... que todavía no he visto, pero, no quiere decir que no exista ya, entonces tal vez mi próximo contraataque pase por usar otras funciones en lugar de las incluidas en "SHFolder.dll", pero, tengo para mí (ojalá me equivocase) que al "cracker" le da igual esta DLL que otra cualquiera... y uno no sabe ni las DLL que usa su programa, quiero decir que la VCL de Delphi envuelve un buen número entre su código y vaya usted a saber...

Por otro lado, qué demonios... ¿es que no se puede evitar que una DLL extraña completamente a nuestro programa no sólo se cargue con nuestro programa pero logre cambiar su comportamiento? ¿No es esto ya de por sí un fallo de seguridad, más allá de "crackers" y demás? En fin... de momento podemos esperar al cuarto "crack"... ¡tal vez con el último contraataque el "cracker" no sepa ir más allá usando esta técnica! ¡Veremos!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #23  
Antiguo 09-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
Oye, pero mira que el cracker es decente:

Cita:
Empezado por el cracker
Support the developer if u can. The Deserve it.


En fin, dentro de lo malo yo creo que puedes rescatar lo más positivo: tu aplicació ya es crackeable. Esto no se hace por cualquier aplicación.

LineComment Saludos
Responder Con Cita
  #24  
Antiguo 09-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola Román,

Cita:
Empezado por roman Ver Mensaje
Oye, pero mira que el cracker es decente:





En fin, dentro de lo malo yo creo que puedes rescatar lo más positivo: tu aplicació ya es crackeable. Esto no se hace por cualquier aplicación.

LineComment Saludos
Je je je... no lo he leído en este "crack", pero, sí en otros. Sea como sea sobre esto hay mucha tela que cortar. A mí me consta que las páginas "warez" usan "bots" para estar al tanto de cada publicación de mis programas: y no sólo de mis programas, lógicamente. Con esto consiguen que sus sitios web aparezcan "actualizados" y atractivos para los usuarios. Ahora bien, estos sitios "warez", el mejor de ellos, se conforma con ponerte publicidad en la web, o bien usar enlaces "de pago" a servidores "de pago" también... el peor de los sitios "warez" puede acaso colarte de matute algo que haga lo que no esperas en tu ordenador...

O sea, lo que quiero decir es que esta gente no trabaja por amor al arte... que estoy seguro de que hacen su buen dinerito entre publicidad, enlaces y servidores de pago, amén de otras cosas que se me escapen. Lo cierto es que uno no puede luchar contra la piratería. Si todos los programas, empezando por Windows, pasando por Photoshop y terminando por Delphi, están "crackeados"... ya me dirás qué puede hacer uno para evitarlo. Estoy seguro de que no se trata de algo personal (tal vez por parte del "cracker"... un poco...) sino de ganar dinero, en este caso atrayendo a visitantes con las últimas versiones de los programas "crackeados".

Pero yo lo veo como toda una industria... "bots" preparados para rastrear los sitios web de los programas, que saben (miran en la base de datos) si el "crack" actual funciona o tal vez toque esperar un poco para publicar la nueva versión, etc., etc. En definitiva, el número mayor posible de visitas a la página warez de marras con el único y exclusivo fin de ganar el máximo de dinero posible. No hay más. No hay romanticismo ni "compra el programa si te va bien" ni nada de eso... porque además los usuarios "warez" sean acaso usuarios más o menos jóvenes que se dedican a probar todo programa que cae en sus manos: seguramente lo desinstale a continuación y no se sepa más.

Por eso preocuparte demasiado o en exclusiva por este tipo de usuarios puede ser garantía de fracaso seguro, vaya...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 09-11-2016 a las 18:58:50.
Responder Con Cita
  #25  
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: 18.310
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
Claro, pero nada me impide publicar la dll maliciosa junto con las instrucciones de uso.
¿El problema es que entonces estás invalidando la DLL de sistema, no?
Por lo que yo he entendido, al copiar la DLL hackeada en el directorio de la aplicación, el resto del sistema sigue funcionando correctamente, porque nadie más usa esa DLL, el resto de aplicaciones usan la correcta (que está en el directorio de sistema).
Si sustituimos la del directorio de sistema (la correcta) por esta, entiendo que el resto del sistema utilizará también la librería modificada.

¿Qué pasa con la original? ¿Se mantiene? ¿La renombras?
¿La modificada llama a la original?
__________________
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
  #26  
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: 18.310
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 dec Ver Mensaje
... y uno no sabe ni las DLL que usa su programa, quiero decir que la VCL de Delphi envuelve un buen número entre su código y vaya usted a saber...
Eso es bastante fácil de averiguar si necesitas hacerlo. Hay utilidades que te dan la lista (y creo que las funciones de cada una).
__________________
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
  #27  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
¡Hola a todos!

Cita:
Empezado por Neftali Ver Mensaje
¿El problema es que entonces estás invalidando la DLL de sistema, no?
Por lo que yo he entendido, al copiar la DLL hackeada en el directorio de la aplicación, el resto del sistema sigue funcionando correctamente, porque nadie más usa esa DLL, el resto de aplicaciones usan la correcta (que está en el directorio de sistema).
Si sustituimos la del directorio de sistema (la correcta) por esta, entiendo que el resto del sistema utilizará también la librería modificada.

¿Qué pasa con la original? ¿Se mantiene? ¿La renombras?
¿La modificada llama a la original?
Apuntas a algo que yo no había pensado, ciertamente. Sustituir la DLL original implica también "cambios" para otros programas y no sólo para el nuestro. Siempre será mejor un "crack" que no tenga que tocar para nada los archivos del sistema a otro "crack" que tenga que meterse en esos berengenales.

Sin embargo estamos hablando de una DLL particularmente "pequeña" (tres o cuatro funciones), os sea que acaso podría hacerse lo que apuntó Román arriba: que el "cracker" sustituya toda la DLL, de modo que igual no habría problema en situar la DLL en el directorio del sistema y sustituir con ella la DLL original.

Ya veremos cuando "salga" el cuarto "crack"...

Lo que me preocupa bastante es el hecho de que aún llamando a la función "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)" la DLL del "crack" sigue funcionando, a no ser que compruebe su existencia: en este caso parece que dicha función hace "algo" (que no logro entender) permite al programa al menos comprobar la existencia de la DLL.

Yo creo que los tiros van por lo que apuntó Román arriba: la DLL se carga antes que cualquier código de mi programa, esto es, antes de la llamada a la función "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)", y eso que esta función es llamada a partir de la cláusula "initialization" de una unidad situada en primer lugar en el programa. Se me ocurre usar la propia cláusula o bloque "initialization" en lugar de llamar a nada desde ahí, aunque probablemente esto no evite que la DLL se cargue y ejecuta antes que cualquier otro código del programa.

¡Os mantendré informados a todos de lo que vaya ocurriendo!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #28  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Dándole vueltas a este tema, digo que uno piensa que el código "initialization" de la primera unidad que se incluye en el programa es lo primero que se ejecuta, pero, ¿no será que antes de eso se incluyen las DLL que el programa necesita? De este modo, la DLL "maliciosa" siempre podrá hacer "algo" que impida a nuestro propio código funcionar como se espera.

Si lo de arriba es cierto, me pregunto si una posible solución (que no tomaré al menos hasta descubrir el siguiente "crack"... si es que al final sale) sería usar nosotros una DLL, de modo que esta sea además la primera que se cargue (no estoy muy seguro, pero, tal vez, importando una función de la DLL en la primera unidad del programa) y así poder tomar medidas ahí mismo.

Creo que puede funcionar: siempre que nuestra DLL sea la primera que se cargue, ya podremos comprobar la existencia de otras DLL "maliciosas" y podremos borrarlas (supongo) sin problemas antes de que dichas DLL se lleguen a cargar siquiera. Creo que el razonamiento es válido a no ser que Windows cargue primero las DLL "del sistema"...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #29  
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: 18.310
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 dec Ver Mensaje
Dándole vueltas a este tema, digo que uno piensa que el código "initialization" de la primera unidad que se incluye en el programa es lo primero que se ejecuta, pero, ¿no será que antes de eso se incluyen las DLL que el programa necesita? De este modo, la DLL "maliciosa" siempre podrá hacer "algo" que impida a nuestro propio código funcionar como se espera.
Pues parece que es así, aunque parece raro.
yo he realizado una sencilla prueba y no he conseguido que ese código se ejecute antes de la carga de la DLL, pues siempre se accede a los métodos de la DLL modficada.

Una solución sencilla en este caso, que creo que ya has comentado, es cargar esta DLL de forma dinámica, en lugar de estática. A tí te sería sencillo, pues como sólo hay 2 funciones, puedes hacerlo fácilmente.
Se supone que si la carga es dinámica, antes ya puedes haber ejecutado el método en cuestión y ya no debería cargar la "modificada".

Esto le obligará a repetir todo el proceso con otra DLL, con el trabajo que eso conlleva, contando que como has dicho esta es sencilla y lleva 2 métodos (no pasa eso con otras -supongo que por eso debe haber escogido esta-).
__________________
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
  #30  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Gracias por comentar Neftalí. Acabo de probar yo también con mi propia DLL con resultados dispares. No he conseguido ejecutar ningún código en dicha DLL antes que el código de la primera unidad del programa, pero, parece que esta DLL sí que consigue cargarse antes que la del "cracker". Claro, ahora habría que pensar que quizás él podría reemplazar mi propia DLL por la suya o intentar el asunto de otro modo. De momento, puesto que no he visto un cuartro "crack", quiero pensar que el uso de "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)" está consiguiendo el objetivo: al menos puedo comprobar si existe la DLL del "cracker" y parar el programa.

Pero todo este asunto de las DLL es muy interesante, por lo menos a mí me lo parece vaya.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #31  
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: 18.310
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
Supongo que el resultado es similar al que finalmente has utilizado, pero otra cosa que podrías hacer aprovechando que tu programa (por ahora) no utiliza DLL's diseñadas por ti, es lo siguiente:

Código Delphi [-]
var
  Handle: THandle;
  ModuleEntry: TModuleEntry32;
  Str1, Str2, Str3:String;
begin
  // Path de todos los módulos cargados
  Handle := CreateToolHelp32SnapShot(TH32CS_SNAPMODULE, 0);
  Win32Check(Handle <> INVALID_HANDLE_VALUE);
  try
    ModuleEntry.dwSize := Sizeof(ModuleEntry);
    Win32Check(Module32First(Handle, ModuleEntry));
    repeat
      // Añadirlo
      Memo1.Lines.Add(ModuleEntry.szExePath);
      // Para todas las DLL's...
      if (UpperCase(ExtractFileExt(ModuleEntry.szExePath)) = '.DLL') then begin
        // Es el mismo directorio del EXE?
        if ExtractFilePath(ModuleEntry.szExePath) = ExtractFilePath(Application.ExeName) then begin
          Str1 := ExtractFilePath(ModuleEntry.szExePath);
          Str2 := ExtractFilePath(Application.ExeName);
          Str3 := ModuleEntry.szExePath;

          // Eliminar el mensaje ··············································.
          ShowMessage('Halt!!'  + sLineBreak +
                      Str1 + sLineBreak +
                      Str2 + sLineBreak +
                      Str3);
          // ···································································
          Halt;
        end;
      end;
    until not Module32Next(Handle, ModuleEntry);
  finally
    CloseHandle(Handle);
  end;
end;
__________________
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
  #32  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Muchas gracias Neftalí, tengo que probar ese código.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #33  
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
  #34  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
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
  #35  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
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
  #36  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
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
  #37  
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: 18.310
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
  #38  
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
  #39  
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: 18.310
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
  #40  
Antiguo 10-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
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
Respuesta



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 09:55:22.


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