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
  #41  
Antiguo 10-11-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Aunque consigas evitar la carga de la dll maliciosa en el arranque de tu app, siempre se puede inyectar con un pequeño ejecutable. Esto quiere decir que no puedes quedarte en la defensa de la carga, has de ir más allá y cambiar el código de protección. Además deberás comprobar, en ese código, que no está cargada una dll no deseada. Puedes usar la API GetModuleFileName para ello pues te da la ruta completa de la dll. También puedes explorar las funciones que exporta. Un hook a la indocumentada ldrLoadDll también te puede ayudar a evitar cargas e inyecciones. Eso puede dificultar al crack en la investigación de un nuevo crack. Pero todo esto no quita para que no fortalezas y ofusques el sistema inicial de protección, es fundamental.

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

Cita:
Empezado por escafandra Ver Mensaje
Aunque consigas evitar la carga de la dll maliciosa en el arranque de tu app, siempre se puede inyectar con un pequeño ejecutable. Esto quiere decir que no puedes quedarte en la defensa de la carga, has de ir más allá y cambiar el código de protección. Además deberás comprobar, en ese código, que no está cargada una dll no deseada. Puedes usar la API GetModuleFileName para ello pues te da la ruta completa de la dll. También puedes explorar las funciones que exporta. Un hook a la indocumentada ldrLoadDll también te puede ayudar a evitar cargas e inyecciones. Eso puede dificultar al crack en la investigación de un nuevo crack. Pero todo esto no quita para que no fortalezas y ofusques el sistema inicial de protección, es fundamental.

Saludos.
Gracias escafandra. La verdad sea dicha, no estoy muy seguro de cómo fortalezer el sistema en cuestión, aunque, al comprobarse las licencias "online", ciertamente los "keygen" que habían creado en el pasado han dejado de funcionar... o sea que igual por ahí esto ya "podría servir". El problema está en que alguien "inyecte" cierto código que se salte dicha comprobación... yo creo que en ese caso lo daría por perdido, porque, ciertamente, este tipo de "usuarios" probablemente nunca serán clientes, así que, igual no merece la pena el tiempo ni el trabajo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #43  
Antiguo 10-11-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por dec Ver Mensaje
Hola a todos,



Gracias escafandra. La verdad sea dicha, no estoy muy seguro de cómo fortalezer el sistema en cuestión, aunque, al comprobarse las licencias "online", ciertamente los "keygen" que habían creado en el pasado han dejado de funcionar... o sea que igual por ahí esto ya "podría servir". El problema está en que alguien "inyecte" cierto código que se salte dicha comprobación... yo creo que en ese caso lo daría por perdido, porque, ciertamente, este tipo de "usuarios" probablemente nunca serán clientes, así que, igual no merece la pena el tiempo ni el trabajo.
El problema es que ese tipo de usuarios son los que publicarán o difundirán el crack. Puedes crear un sistema anti-inyección realizando un control exhaustivo de la carga de dll que impida la carga de la no deseada, al fin y al cabo toda inyección realiza un ldrLoadDll que puedes interceptar, si quieres información sobre el tema te la facilito.

Saludos.
Responder Con Cita
  #44  
Antiguo 10-11-2016
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
El problema es que ese tipo de usuarios son los que publicarán o difundirán el crack.
No creo que sea tan practico intentar "ganar" el pulso.

Me hace recordar a:

http://www.codeproject.com/Articles/...ntional-Wisdom

---
Una forma de verlo es que cada descarga es una perdida. Es cierto que es muy dificil que se conviertan de pago asi como asi.

----
Otra forma de verlo es que es publicidad.

Seria interesante que tantas descargas genera el sitio. Ves forma de estimarlo?

---
Ahora, digamos que en vez de pelear contra un hacker en un area en la que no eres experto, te pones a pelear por "convertir" los clientes de no pago a pago. En este negocio, lograr un <10% en conversiones se considera "normal".

Asi que en vez de invertir en anti-hacking, invierte en un actualizador automatico.

Que NO INTENTE DESACTIVAR EL HACK.

Entonces, empiezas a recolectar algunos datos utiles. (Por ejemplo, sabes cuantos clientes/instalaciones tienes?). Para no hacerlo intrusivo, puedes simplemente hacer el logeo de la informacion en el servidor que tiene la descarga (sino te parece estar haciendo "ping" desde el cliente) en cada vez que haya una actualizacion.

Asi obtienes la primera metrica util: Cuantos clientes hay por ahi vs. Cuanto se supone que has perdido.

Eso te dejara ver si la pelea tiene o no tiene sentido.

Si no tiene sentido, mejor que te sigan distribuyendo la app lo mas posible!

Luego, si tiene sentido, empiezas a utilizar tecnicas de conversion de clientes. Hay que estudiar el tema, en especial si como intuyo no quieres ponerte de spammer sino hacerlo bien.

---

Por lo demas, darle mas publicidad a la app, y quizas mirar la forma de ganar un cliente corporativo (quizas un distribuidor?) terminaria siendo mas rentable a largo plazo.
__________________
El malabarista.
Responder Con Cita
  #45  
Antiguo 11-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por escafandra Ver Mensaje
El problema es que ese tipo de usuarios son los que publicarán o difundirán el crack. Puedes crear un sistema anti-inyección realizando un control exhaustivo de la carga de dll que impida la carga de la no deseada, al fin y al cabo toda inyección realiza un ldrLoadDll que puedes interceptar, si quieres información sobre el tema te la facilito.

Saludos.
¡Gracias por comentar escafandra! Yo trataba de indicar el hecho de que, en este caso, el "vector de ataque" (siempre quise decir esto...) se basa en una DLL, pero, mañana puede ser usando otra DLL... o un "parche" desde otro ejecutable, o... en fin, es un camino sin retorno en el que uno debe acompañar al "cracker" hasta el final, y, ciertamente, ¿para conseguir qué?

Sea como sea, si no me equivoco, este "cracker" en concreto, no parece haber sacado aún el crack "cinco", o sea,... igual para él ya no es posible seguir usando el mismo "vector de ataque"... o bien es que sencillamente no encontrado el "crack" todavía pero este ya existe y está publicado por ahí. ¡Ya veremos!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #46  
Antiguo 11-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Gracias por comentar Mario. En general estoy de acuerdo contigo. Ahora estoy leyendo el artículo que enlazas. Seguramente después comente más respecto de lo que dices tú y/o el artículo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #47  
Antiguo 11-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Leído (yo creo que releído) el artículo que enlaza Mario, este resume muy bien lo que pienso sobre el asunto de la "piratería", ciertamente. Algunas cosas son matizables, por ejemplo, él dice que tal vez, cuando uno habla de "pan" quiere decir "dinero", mientras que, muchos "piratas", cuando hablan de "pan" quieren decir "pan"... Bien. Yo discrepo en esto. Ciertamente, vivo (¡sobrevivo!) en un país del llamado "primer mundo", pero, me gusta utilizar las palabras con propiedad también, y, puedo asegurar que cuando yo hablo de "pan"... estoy hablando del mismo "pan" del que hable cualquiera. No sé si me explico. Pero en fin, seguramente esto mismo es matizable también...

Pero el artículo deja algunas cosas claras que, en realidad, ya tenía yo claras: seguramente leí el artículo hace tiempo también enlazado por Mario. Yo creo que mis esfuerzos contra la piratería esta semana no pueden ni deben ir mucho más allá por las razones mencionadas por otro lado en el mismo artículo. A nivel personal, no me gusta incluir demasiado código específico "antipiratería", porque, ¿y si este código funciona (por error) en algún cliente legítimo? ¿Y si este código causa algún problema, por ejemplo, requiere de alguna DLL, que antes el programa no tenía? Esto también podría afectar a clientes legítimos. ¿Y si el código ralentiza el programa? Y así podríamos seguir.

Yo creo que he tomado una buena dirección validando las licencias "online". De este modo y como ya he dicho, los "keygen" que había para mis programas ya no funcionan, directamente. Además, el hecho de tener una base de datos "online" con las licencias y clientes, también me ha permitido añadir una sección en mi sitio web "sólo para clientes", que, tampoco puede "crackearse", o, al menos no tiene nada que ver con el "crack" de los programas. Actualmente en dicha "sección de clientes" básicamente estos pueden descargar sus licencias (que no moco de pavo, puesto que están ahí disponibles "online" para cuando las necesiten) y en el futuro intentaré añadir más "valor añadido" (siempre quise decir esto...).

¿Más cosas positivas del artículo en cuestión? Pues, también lo había pensado, pero, el artículo vuelve a recordármelo: ¿qué tal si intento poner los precios de mis productos acordes a cada país? Es decir, actualmente, ha de pagar lo mismo un suizo acaso millonario (que oyes, bienvenido sea) que un ugandés acaso no tan rico (pero bienvenido). Creo que esto sería complicado de hacer, y, tampoco tengo muy claro cómo tendría yo que lidiar con este tipo de ventas a nivel fiscal, pero, desde luego, suena muy interesante poner precios a los productos acordes a la generalidad de las gentes en un determinado país. Por lo demás sigo las instrucciones del artículo ya mencionado en bastantes puntos y coincido en prácticamente todo con el autor.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 11-11-2016 a las 10:06:00.
Responder Con Cita
  #48  
Antiguo 13-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

Pues nada, informaros de que, según me cuentan (un infiltrado que tengo en el foro "warez" donde el "cracker" en cuestión publica) este hombre ya no puede ir más allá, o sea, de momento, no habrá "crack" número cuatro por parte de este hombre, al menos. Tal vez mi información no es fiable del todo. Seguramente otra persona o esta misma podrá seguir adelante en un momento dado. La solución que estoy empleando ahora mismo es la que ha propuesto Neftalí, o sea, cerrar el programa si se encuentra cargada cualquier DLL desde el directorio de los programas.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #49  
Antiguo 13-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.293
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

Me alegro.
Aunque sólo sea temporal, al menos a ver si dura.

Otra cosa he de decir David, a raiz de todo esto.
Siempre he dicho que hay programas que se protegen solos, porque son tan malos que no vale la pena crackerlos.

Creo que en tu caso es todo lo contrario, y el hecho de que alguien esté poniendo tanto empeño en ello, habla directamente de la valía del producto.
__________________
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
  #50  
Antiguo 13-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
¡Hola a todos!

Cita:
Empezado por Neftali Ver Mensaje

Me alegro.
Aunque sólo sea temporal, al menos a ver si dura.

Otra cosa he de decir David, a raiz de todo esto.
Siempre he dicho que hay programas que se protegen solos, porque son tan malos que no vale la pena crackerlos.

Creo que en tu caso es todo lo contrario, y el hecho de que alguien esté poniendo tanto empeño en ello, habla directamente de la valía del producto.
Muchas gracias Germán, majo. Cómo se nota que miras mi trabajo con buenos ojos.

Y muchas gracias también por la solución, pues, ciertamente, es la que ahora mismo aplico.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #51  
Antiguo 13-11-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
+1
Responder Con Cita
  #52  
Antiguo 14-11-2016
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El siguiente artículo es de recomendable lectura para el tema en cuestión: Carga segura de las bibliotecas para evitar ataques de precarga de DLL

Saludos.
Responder Con Cita
  #53  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por escafandra Ver Mensaje
El siguiente artículo es de recomendable lectura para el tema en cuestión: Carga segura de las bibliotecas para evitar ataques de precarga de DLL

Saludos.
Gracias escafandra. Leído el artículo se hace hincapié en el uso de "SetDLLDirectory" para eliminar el directorio "actual" de la búsqueda de DLL. Sin embargo, en el mismo artículo se indica que esto no sirve si el "atacante" tiene acceso al directorio de la aplicación, que, es precisamente donde se situaban los "cracks" en mi caso. Claro, no estamos hablando de ningún "atacante", sino de un "crack" con unas instrucciones precisas que indican dónde copiar la DLL "maliciosa": como será el propio usuario (y no un "atacante") el que lo haga, poco podemos hacer para evitarlo.

También he probado (además de con "SetDLLDirectory") probé con "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)", pero, aunque se ejecuta correctamente, no parece surtir el efecto que buscamos, pues la DLL "maliciosa" consigue ser cargada, aunque, ignoro porqué, en este escenario podemos comprobar su existencia y cerrar el programa. La solución de Neftalí se me antoja la más acertada mientras la DLL en cuestión no pueda evitar su correcto funcionamiento: en este caso nos da igual que la DLL se cargue... porque cerraremos el programa en tal caso.

En fin, según parece, el "cracker" hasta ahora encargado no puede seguir adelante, tal vez porque quiera ser elegante y encontrar un método que no "toque" los ejecutables de los programas. Ya veremos.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 14-11-2016 a las 08:11:27.
Responder Con Cita
  #54  
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
  #55  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
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
  #56  
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: 18.293
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
  #57  
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
  #58  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
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
  #59  
Antiguo 14-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
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
  #60  
Antiguo 15-11-2016
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
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
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:36:46.


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