Sorry , NO ENGLISH VERSION yet.


Respuesta a preguntas muy frecuentes

WKT
(c) Mr.Red
1998
┐QuΘ es crackear?
┐QuΘ es un debugger?
┐QuΘ es un desensamblador?
┐QuΘ es un editor hexadecimal?
┐Todos los programas se desprotegen de la misma forma?
┐QuΘ diferencias hay entre programas hechos en Visual C++ y Visual Basic?
┐C≤mo saber si un programa esta hecho en Visual Basic?
┐QuΘ es una DLL?
Pongo un break point en Winice y nunca para el programa en Θl
Cuando paro un programa con Ctrl+D en Winice me aparece el listado en una zona llamada KERNEL32


┐QuΘ es crackear?
No tiene nada que ver con las drogras...(el famoso Crack) : (

"Crackear es el arte de reventar protecciones software/hardware con fines intelectuales, personales pero no lucrativos. Crackear también se llama "ingeniería inversa" (Reverse Engineering), ya que sin el programa fuente  se es capaz de analizar el comportamiento del programa y modificarlo para tus intereses."
Ref.- Como crackear por Estado Porcino.

┐QuΘ es un debugger?
Permite ver  paso a paso (instrucción a instrucción)  un programa mientras se está ejecutando en la memoria del ordenador. Las instrucciones se visualizan en ensamblador normalmente. Nos servira para ver como se comportan las rutinas de protección ya que son parte del programa. En el podremos cambiar instrucciones para comprobar y asi eludir las protecciones. Estos cambios no son permanentes en el fichero ejecutable.

El mejor debugger es WinIce (Softice para Windows 95) http://www.numega.com
Para MSDOS existe una versión Softice y otras versiones poco potentes llamadas DEBUG y SymDebug.

┐QuΘ es un desensamblador?
Un desensamblador toma un fichero de instrucciones en hexa y lo convierte a lenguaje ensamblador. El lenguaje ensamblador, es el conjunto de sentencias que entiende el microprocesador
(tu Pentium o mi 486). El procesador es el corazón del ordenador, todas las sentencias son ejecutadas por él y sólo por él.
Por ejemplo un 43 en hexa se transforma en inc eax. Se necesitan algunos  conocimientos de ensamblador pa esto de crackear.
Nosotros usaremos el desensamblador para crakear con la técnica de la lista muerta...
Ref.- Como crackear por Estado Porcino.
Puedes pillar un magnífico desensamblador para W95 en http://www/expage.com/page/w32dasm
┐QuΘ es un editor hexadecimal?
"Los programas no son más que un conjunto de instrucciones y cada instrucción no es más que un conjunto de bits, pero donde demonios se guardan esos bits?. Los bits del programa se localizan en los ficheros, p.e. las instrucciones del programa de compresión arj se guardan en el fichero arj.exe. Hay algunos programas que no guardan todas sus instrucciones en único fichero, si no en varios, un ejemplo de esto son los programas que utilizan librerías dinámicas (o dll)."

Un editor hexadecimal, no es más que un programa, que permite "editar" los ficheros de instrucciones de otros programas, osea, que permite ver,modificar,copiar,pegar... los bits de los programas. Para simplificar la cosa no se muestran los bits a pelo, sino que se muestran en hexadecimal, de ahí su nombre.

Nosotros lo utilizaremos para  alterar el comportamiento de los programas. Supongamos que conocemos la instrucción sentencia de la rutina de protección que debemos modificar, sea jz 23 y queremos modificarla por jnz 23, bien como toda instrucción no es más que un conjunto de bits, sea 0110 para jz 23 y 1001 para jnz 23, sólo nos queda buscar estos bits dentro del fichero ejecutable del programa (que es, en general, el contiene las sentencias del programa). Como usamos un editor hexadecimal, debemos buscar la secuencia de un unos y ceros en hexa en el fichero del programa que queremos modificar. Si la secuencia que buscamos es muy común deberemos utilizar las instrucciones que se encuentran entorno a la instrucción a modificar.

Esto es muy importante, sólo debe existir una localización del patrón de búsqueda en el  fichero, si existe más de una, debemos añadir a la búsqueda las sentencias de alrededor, sino se corre el riego de modificar la sentencia equivocada, lo que provoca casi siempre un "cuelgue".
Ref.- Como crackear por Estado Porcino.
Uno de los más completos es  UltraEdit-32 Professional http://www.uedit.com
┐Todos los programas se desprotegen de la misma forma?
No...
Un programa a·n haciendo lo mismo puede programarse de mil formas... Esto se entiende en las protecciones del mismo modo (protecciones de numero de serie, etc..).

Pueden existir miles de formas de proteger un programa, a·n siendo el mismo tipo de protecci≤n.
No obstante la "estupidez" de muchos programadores de pacotilla (aquellos que solo ven dinero en sus programas), y a la falta de imaginaci≤n de otros, hacen que la tarea de desproteger sea a veces muy sencilla.
┐QuΘ diferencias hay entre programas hechos en Visual C++ y Visual Basic?
La mayoría de las aplicaciones programadas mas profesionalmente para Windows 95 (requieren un conocimiento mas exhaustivo de programación) son las compiladas en  C++... aparte de ser siempre las mas rápidas.
De hecho Windows 95 está hecho prácticamente en C++...

La diferencia entre Visual C++ y Visual Basic es la siguiente:

Con Visual C++ somos como el director general de una oficina mientras que con Visual Basic somos los empleados (si entregamos un informe pasaremos por varios departamentos hasta que llegue al despacho del director general).
E incluso no podremos hacer cosas que no pueda hacer el director general. Todo ese proceso interno de pasar de un departamento a otro lo realizan unas librerías que actúan mientras se ejecuta el programa (librerías Run-time). Estas son VBRUN300, VB40032, MSVBM50 según sea la versión de Visual Basic.

Desde el punto de vista de un cracker es mucho mas interesante un programa en C++...
Los crackers suelen huir de programas hechos en Visual Basic, por lo incomodos y pesados que son y porque casi nunca aportan nada interesante que investigar. Aunque esto no significa que sean los mas dificiles de desproteger.
┐C≤mo saber si un programa esta hecho en Visual Basic?
Existen muchas maneras, pero todas consisten en lo mismo. Hay que localizar  referencias a varias librerias de ejecucion. Sus nombres son VBRUNxxx (xxx =100,200,300  para la versión 1,2 y 3 respectivamente), VB40032.DLL para la versión 4 del compilador de Visual Basic y MSVBM50.DLL para la versión 5. Las formas de localizarlas podrían ser:
  • Usar un editor hexadecimal con el fichero EXE a tratar y usar la opción de busqueda....     Ejemplos de texto a buscar:  VBRUN300, VB40032, MSVBM50
  • Usar un desensamblador (W32Dasm) con el archivo EXE y una vez desensamblado mirar al principio del listado en la zona de :

  • +++++++++++++++++++ IMPORTED FUNCTIONS ++++++++++++++++++
    Number of Imported Modules =    1 (decimal)

       Import Module 001: MSVBVM50.DLL

Aquφ se observa una referencia a la libreria de ejecución de Visual Basic 5.0, con lo que este ejecutable está compilado con VBasic.
┐QuΘ es una DLL?
Es una librería dinámica (Dynamic Link Library). Es un fichero en el que residen funciones(código ejecutable) o recursos (ventanas de un programa, menues, iconos, bitmaps, etc...) y que pueden ser llamadas por cualquier otro programa de Windows. Existen  una gran variedad de  DLL personalizadas y  comerciales que permiten sacar partido a muchos programadores (Jscript.dll =librería de Java Script, Tl32v20.dll =Timelock, rutina de protección de programas en periodo de prueba, etc...).
De hecho Windows 95 usa en su mayoria DLLs... KERNEL32.DLL, USER32.DLL, GDI32.DLL...
Incluso los archivos DRV y FON  (fuentes) son DLL, aunque estos se cargan de forma no automatica...
Pongo un break point en Winice y nunca para el programa en Θl
Hay muchas  instrucciones de programas que nunca se ejecutan si no se dan las condiciones adecuadas...
Siempre conviene estudiar un poco el ejecutable, o bien con la lista muerta o con el Winice.
Poner en cualquier punto del programa un breakpoint no lleva a nada si no sabemos donde lo ponemos.
Cuando paro un programa con Ctrl+D en Winice me aparece el listado en una zona llamada KERNEL32
Esto es muy normal, teniendo en cuenta que Windows 95 usa internamente un API
(Interfaz de Programación Avanzada)  núcleo de sistema (Kernel) de 32 bits.
El kernel32 es el minimo de código que necesita Windows95 para arrancar el sistema.

También la mayoria de los programas suelen usar esta API para realizar operaciones basicas con sus funciones( uso de archivos, tareas, recursos, carga de librerías, uso de la memoria, etc..). Hay unas 780 funciones dentro de esta librería.
Muchas rutinas de protección  hacen uso de funciones de esa librería y de otra llamada USER32.DLL.

Para nosotros el listado interno de estas librerias no interesa. Usaremos estas funciones como cajas tontas (solo interesará lo que nos muestre por fuera no como esté hecha por dentro). Es decir, si un programa usa la función GetComputerName (obtener el nombre de la computadora), solo nos interesará el nombre que la computadora, no como lo obtiene internamente.

FAQ 2

Esta FAQ la iremos completando a medida que recibamos vuestras consultas a traves de nuestro buz≤n estadoporcino@hotmail.com. Si estas empezando, no te cortes y preguntanos tus dudas. ;o) Mr.WhiTe

Volver Arriba



[ Entrada | Documentoz GenΘricoz | WKT TEAM Main Site ]
[ Todo el ECD | x Tipo de Protecci≤n | x Fecha de Publicaci≤n | x orden AlfabΘtico ]