FAQ 2 | WKT Tutorialz Site | FAQ 4 |
[WkT!] | FAQ | We'll Rock in 1999 |
Introducci≤n |
Estas leyendo la FAQ Oficial de [WkT!]. Este proyecto fue iniciado en su momento (1997) por Mr.Red [WkT!], y ahora volvemos a reabrirlo para deleite de todos nuestros lectores.
La versión inglesa aún no esta disponible, y es posible que nunca llegue a ver la luz. A no ser que algún alma caritativa se ofrezca voluntaria a iniciar la traducción. Algún voluntario???? Si es así, por favor envianos un e-mail. Si tus dudas aún no están resueltas en esta FAQ, [WkT!] te recomienda que te pases por la Web de Gerza, donde encontrarás la FAQ Oficial del "Spanish ReverseEngineering Forum". Si alli tampoco encuentras lo que buscas, utiliza ese foro. |
┐Qué es el Procdump? |
ProcDump es una herramienta que te permite (entre otras cosas) copiar el contenido de un proceso al disco duro. TambiΘn te permite editar la cabecera de los programas de tipo PE (Portable Executable). |
┐Cómo puedo saber si un programa está comprimido? |
La mejor forma de averiguar si un programa está comprimido es utilizar alguna herramienta como el Gettyp. Es conveniente tenerlo siempre a mano, al igual que el Procdump (para descomprimir el programa en cuestión). Utilizando el Gettyp sabremos el tipo de compresor utilizado (Aspack, petite, upx....etc). |
┐Qué es la función Hmemcpy? |
HMEMCPY es una API de Windows, que utiliza la memoria RAM para leer, manipular,
comparar y almacenar cadenas (texto que introducimos cuando un programa nos pide
el numero de serie por ejemplo). La funcion recoge la informacion que le proporcionamos y la
carga en memoria. Despues manipula esas cadenas, las mueve y las compara (por ejemplo compara
tu numero de serie con el correcto), y despues decide si la cadena es o no la correcta. La funcion HMEMCPY devuelve esta informacion al programa en cuestion, y si has puesto el serial correcto te lo aceptara o de lo contrario te mostrara una bonita ventana de error. HMEMCPY se puede utilizar para "cazar" numeros de serie validos en programas shareware. Utilizando un debugger (depurador) como el SoftIce, podemos poner un breakpoint en HMEMCPY para que el programa se pare y nos avise cuando llama a la funcion. Muchos programas shareware utilizan esta función para comparar numeros de serie, sobre todo cuando han sido escritos en Delphi o en Visual Basic. |
┐Por qué a veces no puedo ver las "string references" cuando utilizo el W32Dasm? |
Pues depende. En ocasiones se debe a que el programa tiene algún tipo de protección anti-desensamblado.
Un ejemplo: En el caso del programa Winboost 2000 (Protección analizada por Mr.WhiTe, véase http://ecd.tsx.org) Sucede que al editar el *.exe (previamente descomprimido con el ProcDump) y seleccionar "Edit section". Abajo, donde pone "Section Characteristics" si modificamos el valor C0000040 por E0000020 y guardamos los cambios, la protección habrá desaparecido mágicamente. |
┐QuΘ significa "Crippleware"? |
Cuando un programa incorpora alguna de sus opciones deshabilitada (como por ejemplo guardar un archivo) existen dos posibilidades:
Es muchisimo más dificil que un Cracker consiga habilitar esa función (pero no imposible). |
┐C≤mo puedo saber si un programa accede al registro del Windows? |
Utilizando una herramienta llamada REGMON (Registry Monitor) |
┐C≤mo puedo saber si un programa accede a algún archivo? |
Utilizando una herramienta llamada FILEMON (File Monitor) |
┐Cómo se puede "cazar" un serial en un programa escrito en Visual Basic? |
El Visual Basic no es precisamente el lenguaje más apropiado para programar una aplicación comercial. En el caso de toparnos con una de estas "joyas", una opción muy aconsejable es echar mano del Smartcheck de la empresa Numega |
┐Qué es eso del "Color Crack" o "crack en colores"? |
Se trata de una "nueva" técnica de cracking empleada por Estado+Porcino. Es bastante útil cuando el mensaje de "error" no es una ventana sino una cadena dentro de una ventana. Debemos averiguar el color que se aplica al mensaje y colocar en el SoftIce: bpx nombreRutina if (*(esp+8)==00BBGGRR) Recordad que los valores de Blue(azul), Green (Verde), Red (rojo) estßn en hexadecimal. Para más información véase el tutorial sobre el Multimedia Builder en http://ecd.tsx.org. |
┐Qué es una Nag Screen? ¿C≤mo se puede eliminar? |
Una Nag Screen es una ventana que nos molesta durante la ejecución de un programa. Los motivos pueden ser muchos (Aparece al arrancar el programa recordandonos que no estamos registrados, nos informa de algo y nos obliga a esperar a que desaparezca, nos obliga a pulsar un botón para mandarla a paseo......etc)
No existe ningún método estandar para crackear las Nags. Depende del programa y de la función utilizada para pintar la ventana. No es lo mismo el típico MessageBox con el botón de aceptar que otro con varios botones. Tambien hay que tener en cuenta si el programa realiza alguna modificación en la pila. Un par de ejemplos sencillos para entender "el concepto": Programa: Lotus SmartSuite Millenium Edition (Protección analizada por Mr.WhiTe) véase http://ecd.tsx.org. En este caso la ventana se presenta en pantalla haciendo uso de la función dialogboxparama. Nos aparecen varios botones. El que nos interesa pulsar es el botón de "Ok". ¿Soluciones? La mejor opción dadas las circunstancias será provocar que el programa pulse por si mismo el botón. ¿Como conseguimos esto? Si pulsamos el boton "OK" nos devolvera el valor 10, así que en el momento de pasarle los parámetros a la función dialogboxparama, forzamos el programa a introducir el valor 10 en EAX. Para más información consulta la Win32 Programmer's Reference Programa: Ulead PhotoImpact v4.12 (Protección analizada por Mr.WhiTe) véase http://ecd.tsx.org. En este caso podemos saltarnos la molesta ventana simplemente evitando que el programa llame a la función DialogBoxParamA. Para ello sustituimos la llamada por unos cuantos bytes inofensivos: :4EB066CD FF15F4A3B14E Call dword ptr [4EB1A3F4] <--- Llamada a DialogBoxParamA :4EB066CD 909090909090 NOP NOP NOP NOP NOP NOP <--- Código inofensivoOjo: Esta opción no siempre es posible. En este caso sabemos que no sucedera ningún imprevisto porque el programa no realiza ninguna modificación en los valores almacenados en la Pila. |