![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Ya te digo, esto da para una película y todo
![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#2
|
||||
|
||||
|
#3
|
||||
|
||||
|
¡Hola a todos!
Siguiendo con el tema... no... todavía no he visto el nuevo "crack", aunque tal vez no se tarde mucho. El caso es que me llama la atención lo siguiente, y, es que incluso llamando a la función "SetDefaultDllDirectories(LOAD_LIBRARY_SEARCH_SYSTEM32)", mejor dicho, sólo con esto, la DLL en cuestión hace su trabajo y consigue "registrar" el programa o "anteponerse" al código del mismo. O sea, que, curiosamente, si después de ejecutar la función de marras, compruebo si existe la DLL, en efecto, parece que la comprobación es correcta y así el programa se cierra. Pero, si no compruebo la existencia de la DLL el programa sigue adelante sin problemas, esto es, cargando la DLL "shfolder.dll" que se encuentra en el directorio de la aplicación y no en el directorio del sistema... La verdad es que esto desconcierta a cualquiera... esto es, se supone que usando la función "SetDefaultDllDirectories" estamos indicando a Windows que busque las DLL en el directorio del sistema, donde, en efecto, se encuentra una DLL "shfolder.dll", pero, aún y con esas la DLL que copiamos en el directorio del ejecutable del programa parece seguir cargándose antes sin problemas... Vamos, que me espero al cuarto "crack", pero no tengo muchas esperanzas. ![]() |
|
#4
|
||||
|
||||
|
¿Estás haciendo pruebas con un programa mínimo, limpio, sin nada más, solamente hecho para probar eso?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
Hola,
Ciertamente no, Casimiro, aunque, mis programas (porque ojo, hablamos de seis de ellos...) no hacen nada raro con las DLL ni nada... de hecho se distribuyen sin empaquetar siquiera. Creo yo que en un programa "limpio" ocurriría igual, pero, no lo he probado. Fíjate que el proyecto Inno Setup, así como otro instalador, NSIS, se preocupan de esto... en efecto, una simple DLL como "shfolder.dll" pude interponerse en el código de nuestro programa, sin modicar ningún ejecutable, y, conseguir, pues... lo que quiera, digo yo... |
|
#6
|
||||
|
||||
|
Cita:
Aquí está la documentación. Por otro lado podrías intentar mirar a otro frente. Imagino que la DLL debe "parchear" en cierta manera el comportamiento del programa en cuanto al registro. Ese comportamiento normalmente se deduce utilizando debuggers. ¿Has probado a dificultar este paso? No es imposible, porque como tú bien dices con tiempo al final todo se consigue, pero se puede llegar a complicar, de forma que quien lo está haciendo llegue a desistir si el esfuerzo es demasiado grande. Esta también va en el mismo sentido. Tú mismo puedes buscar, pero además de herramientas externas, hay mucha otra documentación al respecto.
__________________
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. Última edición por Neftali [Germán.Estévez] fecha: 09-11-2016 a las 15:14:32. |
|
#7
|
|||
|
|||
|
Interesante la trama. Espero con ansias el desenlace.
![]() |
|
#8
|
||||
|
||||
|
Hola,
Sí, je je je. De momento no he visto un cuarto "crack", pero, seguramente no tardará. ![]() |
|
#9
|
||||
|
||||
|
Hola,
Cita:
Sin embargo, como he dicho, no parece funcionar del todo bien... es cierto que el último "crack" de que tengo constancia no funciona, pero, está lo que no me cuadra: tengo que comprobar que la DLL exista, cuando, en teoría (hasta donde yo llego) no sería necesario, puesto que dicha DLL no se cargaría, puesto que lo haría la que se encuentra en el directorio del sistema. Curiosamente, la función en cuestión se ejecuta sin errores, de modo que tampoco puedo ver si algo falla. Respecto de ponérselo más difícil al "cracker", en efecto, podría intentarse, por ejemplo, usando algún programa "empaquetador" y "protector". Pero, hete aquí que cualquier programa de este tipo que uno busque está a su vez "crackeado"... entonces, ¿qué confianza me ofrece un programa que se supone va a proteger mi ejecutable, si el propio programa no puede protegerse a sí mismo? Ninguna. Por otro lado, me constan programas que usan este tipo de protectores y que están "crackeados". Pudiera ser que este "cracker" en concreto no supiese ir más allá... pero posiblemente otro podría hacerlo. En todo caso, el sistema que uso ahora no me disgusta, en el sentido de que los keygen, por ejemplo, no fucnionan. Como ahora compruebo las licencias "online", ya no sólo vale que uses un número de serie "formalmente" válido, porque este no se encontrará en la base de datos remota. Mi objetivo, como he dicho arriba, es que al menos tengan que "parchear" los propios ejecutables... De este modo la firma de mis ejecutables se perderá, y, bueno, yo con eso me medio conformo, aunque, tengo que reconocer que el medio conformo viene de que no sabría ir más allá: si el "cracker" es capaz de meterse en el código del programa y saltarse la función que valida la licencia "online"... creo que no sabría cómo contrarestarlo. Pero ya digo, al menos tendría que parchear el programa, cosa que ahora mismo (bueno, ya veremos si hay cuarto "crack") no necesita, puesto que con poner al lado del programa una DLL ya le basta y le sobra al cabrito. ![]() |
|
#10
|
||||
|
||||
|
Cita:
le indicas a tu aplicación que incluya la dll implícitamente, esto es, añade código que carga automáticamente la dll muy posiblemente antes de que cualquier código tuyo tenga la oportunidad de detenerlo o decirle dónde buscar. Yo creo que lo más seguro sería, en la medida de lo posible, que te olvides de esa unidad y la hagas tú mismo (creo que son pocas funciones). Esto significa que uses tú mismo LoadLibrary y GetProcAddress para cargar la biblioteca exactamente de dónde la quieres e importar las funciones. De todas formas, no me queda claro cómo esto te puede servir. Vamos a suponer que logras forzar la carga del shfolder.dll que está en el sistema. Pero estamos hablando del sistema del cracker. ¿Qué le impide al cracker reemplazar aunque sea temporalmente la bilbioteca del sistema, localizada en su directorio de sistema por la suya propia? LineComment Saludos |
|
#11
|
||||
|
||||
|
Cita:
__________________
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. |
|
#12
|
||||
|
||||
|
Cita:
LineComment Saludos |
|
#13
|
||||
|
||||
|
Hola,
Cita:
Pero no es igual que te digan, copia esta DLL en el directorio del programa, a que te digan, sustituye la DLL del sistema X por esta otra... que yo te doy... algunos usuarios se lo pensarían, al menos. Tal vez no mucho. ![]() |
|
#14
|
||||
|
||||
|
Cita:
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. |
|
#15
|
||||
|
||||
|
Hola,
Cita:
![]() |
|
#16
|
||||
|
||||
|
¡Hola a todos!
Cita:
Cita:
¡Y todo esto para conformarme conque tengan que "tocar" el programa! Porque de llegarse a ese punto... allá el usuario que quisiera usar un programa "parcheado". Y además yo no podría hacer más, la verdad sea dicha. Por otro lado, esto está relacionado con esto otro: Cita:
|
|
#17
|
||||
|
||||
|
Cita:
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 |
|
#18
|
||||
|
||||
|
Hola,
Cita:
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! ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|