First commit ~0,10
This commit is contained in:
478
trucos.htm
Normal file
478
trucos.htm
Normal file
@ -0,0 +1,478 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type"
|
||||
content="text/html; charset=iso-8859-1">
|
||||
<meta name="Autor"
|
||||
content="Jose-David.Guillen@.cs.us.es || 1998 (c) || ">
|
||||
<meta name="AvisoLegal"
|
||||
content="No me hago responsable de las aplicaciones delictivas, derivadas de mis tutoriales. Y me remito al ejemplo del Zapato">
|
||||
<meta name="Trabajo"
|
||||
content="Dise<73>o p<>ginas Web para empresas, Calidad y Profecionalidad garantizadas, implementaci<63>n de las <20>ltimas t<>cnicas de desarrollo.">
|
||||
<meta name="Zapato"
|
||||
content="No es ilegal llevar un zapato en la mano, pero seguro que te detienen si vas dando zapataZos a la gente.">
|
||||
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
|
||||
<title>Trucos, sobre como crackear un juego</title>
|
||||
</head>
|
||||
|
||||
<body background="Webj-f0.gif" bgcolor="#FFDE00" topmargin="10"
|
||||
leftmargin="20">
|
||||
|
||||
<p><a name="Inicio"></a><font size="2">Todo lo que siempre
|
||||
quisiste saber, y nunca nadie supo decirte: <strong><EFBFBD>Como
|
||||
crackear un Juego?</strong></font></p>
|
||||
|
||||
<p><font size="2">Aqui aprenderas, con el tiempo, desde como
|
||||
llegar al final de cualquier juego, sin dificultades, hasta como
|
||||
eliminar las claves de los mismos, con ejemplos e ilustraciones,
|
||||
para que hasta tu, puedas hacerlo, no te ofendas.</font></p>
|
||||
|
||||
<p><font size="2">-- Antes de empezar, quiero decir que nada de
|
||||
los que hay aqui infringe la ley, salvo la utilizaci<63>n que tu
|
||||
hagas de la informaci<63>n, es como los zapatos, no es ilegal
|
||||
llevarlos ni que te los vean, pero seguro que te detienen si vas
|
||||
por hay usandolos para tirarselos a la cabeza a la gente.--</font></p>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="2" cellpadding="4" width="90%"
|
||||
bordercolor="#FF7331" bordercolordark="#808000"
|
||||
bordercolorlight="#FFFFFF">
|
||||
<tr>
|
||||
<td width="50%"><strong>Parte I</strong>: <a
|
||||
href="#Parte I">Las partidas salvadas son faciles</a></td>
|
||||
<td width="50%"><strong>Parte II:</strong> <a
|
||||
href="#Parte II">La memoria es incierta</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="50%"><strong>Parte III: </strong><a
|
||||
href="#Parte III">Que molestas son las claves</a></td>
|
||||
<td width="50%"><strong>Parte IV: </strong><a
|
||||
href="#Parte IV">Algunos prog. de interes</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p><a name="Parte I"></a><strong>Parte I</strong>: Las partidas
|
||||
salvadas son faciles</p>
|
||||
|
||||
<p>Antes de empezar, aviso que ser<65> necesaria alguna utilizadad
|
||||
capaz de abrir un archivo binario y mostrarlo de forma
|
||||
hexadecimal. Visita la "Parte IV", para y consiguete
|
||||
alguno. Si te sirve de algo, yo utilizo el TurboDebuger de
|
||||
Borland Inc. a parte, es el que necesitaras utilizar en la
|
||||
"Parte III", o almenos otro parecido.</p>
|
||||
|
||||
<p><EFBFBD>Tienes ya las herramientas? </p>
|
||||
|
||||
<p>Vale, empecemos con un poco de teor<6F>a:</p>
|
||||
|
||||
<blockquote>
|
||||
<p><em>Cuando un juego graba una partida, normalmente lo hace
|
||||
de forma ordenada, siempre coloca en las mismas posiciones
|
||||
cosas similares. Estos datos no son mas que la posici<63>n y
|
||||
estado en que se encontraba el juego, justo en el momento de
|
||||
salvar la partida. Algunos de estos datos son f<>ciles de
|
||||
localizar como "vidas, energ<72>a, cantidad de
|
||||
disparo...". </em></p>
|
||||
<p><em><EFBFBD>C<EFBFBD>mo buscar?, Bien, lo que debemos hacer es </em><em><u>grabar</u></em><em>
|
||||
un m<>nimo de </em><em><u>tres partidas</u></em><em>, con
|
||||
tres </em><em><u>estados diferentes</u></em><em> del valor
|
||||
que nos interesa mantener, (por ejemplo la cantidad de
|
||||
dinero). Acto seguido </em><em><u>buscaremos las
|
||||
coincidencias</u></em><em> de esos valores, en los tres o
|
||||
m<>s archivos, hasta encontrar una coincidencia en todos y
|
||||
que se encuentra </em><em><u>en la misma posici<63>n</u></em><em>,
|
||||
esa ser<65> la posici<63>n de lo que buscamos, no tenemos mas que
|
||||
camibiar el valor, (cambiando asi la cantidad de dinero,
|
||||
ejem.).</em></p>
|
||||
<p><em>No te apresures, debes saber que los n<>meros no se
|
||||
almacenan como piensas, sino que depende de tu m<>quina:
|
||||
existen del tipo LittelEndian (parte baja del n<> primero) o
|
||||
BigEndian (parte alta del n<> primero) caso del PC.</em></p>
|
||||
<p align="right"><em>(</em><em><strong>d</strong></em><em>)ecimal
|
||||
/ (</em><em><strong>h</strong></em><em>)exadecimal</em></p>
|
||||
<p><em>Ejemplo: </em></p>
|
||||
<blockquote>
|
||||
<p><em>Si buscas el n<>mero 34.500</em><em><strong>d</strong></em><em>
|
||||
--> 86C4</em><em><strong>h</strong></em></p>
|
||||
<p><em>Se guardar<61> la parte alta (8 bits) primero y la
|
||||
parte baja (8 bits) despues: C486</em><em><strong>h</strong></em><em>.</em></p>
|
||||
</blockquote>
|
||||
<p><em>Eso no es todo, <20>C<EFBFBD>mo es de grande el n<>mero que
|
||||
buscas?. Debes pensar como un programador, o almenos con un
|
||||
poco de intuici<63>n. En el ordenador, los n<>meros, vienen
|
||||
representados, como norma general, en bloques de 8 bits, o lo
|
||||
que es lo mismo 1 byte.</em></p>
|
||||
<p><em>Si lo que buscamos es el lugar de almacenamiento de
|
||||
las vidas, es l<>gico pensar que para ello han utilizado un
|
||||
simple "byte". A continuaci<63>n os ense<73>o cuantos
|
||||
bits, ocupan los ditintos tipos de n<>meros que existen, y
|
||||
cual es la cantidad m<>xima que pueden contener, (con o sin
|
||||
signo).</em></p>
|
||||
<div align="center"><center><table border="1" width="80%"
|
||||
bordercolordark="#808000" bordercolorlight="#FFFFFF">
|
||||
<tr>
|
||||
<td><div align="center"><center><table border="1"
|
||||
cellpadding="2" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#000000"><font color="#FFC832"><strong>Tipo</strong></font></td>
|
||||
<td align="center" bgcolor="#000000"><font
|
||||
color="#FFC832"><strong>Longitud</strong></font></td>
|
||||
<td align="center" bgcolor="#000000"><font
|
||||
color="#FFC832"><strong>Rango</strong></font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unsigned char</td>
|
||||
<td align="right">8 bits</td>
|
||||
<td align="center"><em>0 to 255</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>char</td>
|
||||
<td align="right">8 bits</td>
|
||||
<td align="center"><em>-128 to 127</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unsigned int</td>
|
||||
<td align="right">16 bits</td>
|
||||
<td align="center"><em>0 to 65,535</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>int</td>
|
||||
<td align="right">16 bits</td>
|
||||
<td align="center"><em>-32,768 to 32,767</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>unsigned long</td>
|
||||
<td align="right">32 bits</td>
|
||||
<td align="center"><em>0 to 4,294,967,295</em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>long</td>
|
||||
<td align="right">32 bits</td>
|
||||
<td align="center"><em>-2,147,483,648 to
|
||||
2,147,483,647</em></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div><p><em><strong>Nota:</strong></em><em> Si el
|
||||
n<>mero que buscas esta dentro del rango de arriba, aunque no
|
||||
est<73> completo debes rellenar lo que falta al buscar.</em></p>
|
||||
<p><em>Ejemplo:</em></p>
|
||||
<blockquote>
|
||||
<p><em>Buscamos el dinero, y en este momento tenemos 10
|
||||
creditos, pero sabemos que podemos tener hasta 20.000
|
||||
creditos como m<>ximo -> el n<>mero estar<61> en el
|
||||
rango de los enteros (int 16bits).</em></p>
|
||||
<p><em>Al buscar 10</em><em><strong>d</strong></em><em>
|
||||
hemos de escribir A000</em><em><strong>h</strong></em><em>,
|
||||
<20>no?, Pues no, recuerda que tu m<>quina es BigEndian por
|
||||
lo que tendras que escribir 00A0</em><em><strong>h</strong></em><em>.</em></p>
|
||||
</blockquote>
|
||||
</blockquote>
|
||||
|
||||
<p>Si te has empapado bien de la teor<6F>a, podemos pasar a un
|
||||
ejemplo pr<70>ctico, que aplicaremos al juego <em>Civilization 2</em>:</p>
|
||||
|
||||
<p>Buscamos la posici<63>n f<>sica del dinero, dentro de la partida
|
||||
salvada.</p>
|
||||
|
||||
<p>1<EFBFBD> <20>Qu<51> sabemos? Sabemos que el dinero puede sobrepasar los
|
||||
256 creditos asi que el dinero ocupo, por lo menos 16 bits.</p>
|
||||
|
||||
<p>2<EFBFBD> Hemos salvado tres partidas; ( a1.sav | a2.sav | a3.sav ),
|
||||
con ( 300 | 75 | 250 ) creditos respectivamente.</p>
|
||||
|
||||
<p>3<EFBFBD> Pasamos las cantidades a hexadecimal y agrupamos las
|
||||
partes altas y bajas: ( 300<strong>d</strong> = 12C<strong>h</strong>
|
||||
| 75<strong>d</strong> = 4B<strong>h</strong> | 250<strong>d</strong>
|
||||
= FA<strong>h</strong> )</p>
|
||||
|
||||
<p>4<EFBFBD> Buscamos las primeras coincidencias en cada archivo de las
|
||||
cadenas ( C012<strong>h</strong> | 004B<strong>h</strong> | 00FA<strong>h</strong>
|
||||
).</p>
|
||||
|
||||
<p><EFBFBD>Coinciden las posiciones f<>sica? No = continua en el paso
|
||||
4<EFBFBD>.</p>
|
||||
|
||||
<p>5<EFBFBD> Hemos encontrado la posici<63>n f<>sica, cuanto queriamos <20>
|
||||
20.000 creditos ?. Pues 20.000<strong>d</strong> = 4E20<strong>h</strong>,
|
||||
por lo que sustituimos el valor a partir de la posici<63>n
|
||||
encontrada por 20E4<strong>h</strong>, recuerda: BigEndian.</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>Fin del Capitulo, si te queda alguna duda dimelo, de ese modo,
|
||||
sabr<EFBFBD> los puntos debiles de este tutorial, y los elimar<61> para
|
||||
de ese modo ir perfeccionandolo.</p>
|
||||
|
||||
<p><a href="#Inicio"><img src="back4.gif" align="right"
|
||||
border="0" hspace="0" width="20" height="22"></a></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p><a name="Parte II"></a><strong>Parte II:</strong> La memoria
|
||||
es incierta</p>
|
||||
|
||||
<p>Lo que quiero decir, es que la memoria es incostante, todo en
|
||||
ella cambia, lo que ahora esta en una posici<63>n, dentro de cinco
|
||||
minutos, estar<61> en otra. </p>
|
||||
|
||||
<p>Todo lo dicho en el capitulo anterior, ser<65>a aplicable a
|
||||
este, de hecho, para juegos antiguos de MS-DOS, es totalmente
|
||||
valido, incluso existen aplicaciones (ver. Parte IV) para ello.
|
||||
El problema de ahora, es que todo es din<69>mico, todo cambia, y es
|
||||
mas dificil localizar, lo que buscamos. Pero a pesar de esto,
|
||||
siempre existe el orden dentro del caos, y para aplicar las
|
||||
lecciones anteriores, se requieren cierta modificaciones a
|
||||
nuestra forma de pensar.</p>
|
||||
|
||||
<p>Ahora, lo constante, no son las posiciones f<>sicas que
|
||||
contienen los valores, sino punteros, dirigidos a esos valores.
|
||||
La busqueda, a partir de ahora es tediosa y complicada, pero el
|
||||
fruto de esta busqueda es el conocimiento del orden, mediante el
|
||||
cual podemos construir un peque<75>o programa que se ejecute en
|
||||
segundo plano, bloqueando el contenido, apuntado por el puntero,
|
||||
del cual siempre conoceremos su posici<63>n f<>sica.</p>
|
||||
|
||||
<p>Para la localizaci<63>n del puntero, debemos realizar los pasos
|
||||
de la Parte I, pero aplicados a memoria, una vez conocida la
|
||||
direcci<EFBFBD>n, buscaremos por todo el rango de memoria destinado al
|
||||
programa, valores que concuerden con la direcci<63>n f<>sica
|
||||
(segmento:desplazamiento), del valor. Direcci<63>nP = direcci<63>n
|
||||
f<EFBFBD>sica - direcci<63>n de carga del programa.</p>
|
||||
|
||||
<p>Una vez conocida estas direcciones, el programa de segundo
|
||||
plano, estar<61> continuamente o cuando se requiera, escribiendo en
|
||||
la direccion apuntada por el puntero. La direcci<63>n del puntero,
|
||||
ser<EFBFBD> la direcci<63>n de carga del programa + Direcci<63>nP.</p>
|
||||
|
||||
<p>Podemos ver ejemplos de esta parte, por ejemplo, en los
|
||||
programas residentes que te permiten cambiar los niveles de oro,
|
||||
petroleo, y le<6C>a en Warcraft 2, yo poseo esos programas si os
|
||||
interesan... </p>
|
||||
|
||||
<p>Si no incluyo ejemplos de esta secci<63>n es poque requeririan
|
||||
conocimientos de programacion Muy Altos, y aquel que los tenga,
|
||||
seguro que con solo leer esto, sabe como encaminar mas o menos
|
||||
sus pasos, si no, siempre puede preguntarme las dudas que tenga.</p>
|
||||
|
||||
<p><a href="#Inicio"><img src="back4.gif" align="right"
|
||||
border="0" hspace="0" width="20" height="22"></a></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><a name="Parte III"></a><strong>Parte III: </strong>Que
|
||||
molestas son las claves</p>
|
||||
|
||||
<p>Este capitulo es algo m<>s complicado, y en <20>l aprenderemos a
|
||||
eliminar la ya casi obsoleta protecci<63>n o claves de los juegos.
|
||||
Debo decir que aunque tratar<61> de simplificar el tutorial, lo mas
|
||||
que pueda, ser<65>n<u> imprescindibles</u> conocimientos
|
||||
medios/altos de programaci<63>n, as<61> como algunas nociones de
|
||||
ensamblador.</p>
|
||||
<div align="center"><center>
|
||||
|
||||
<table border="1" cellpadding="5" bordercolordark="#FFC832"
|
||||
bordercolorlight="#FFFFFF">
|
||||
<tr>
|
||||
<td align="center" width="50%"><a href="#JNEasm">No se
|
||||
programar</a> <font color="#FF0000"><strong>:-(</strong></font></td>
|
||||
<td align="center" width="50%"><a href="#JEasm">!Quiero
|
||||
ser un Hacker<65></a> <font color="#FF0000"><strong>P-)</strong></font></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center></div>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><a name="JEasm"></a>Las herramientas necesarias, vuelven a
|
||||
estar disponibles entre las aplicaciones de la "Parte
|
||||
IV". Necesitaremos un desensamblador, (hasta el <em>debug</em>
|
||||
de MS-DOS puede servirte).</p>
|
||||
|
||||
<p>La Teor<6F>a:</p>
|
||||
|
||||
<blockquote>
|
||||
<p><em>Cualquier aplicaci<63>n no es mas que una serie de
|
||||
instrucciones una detras de otras, cada una de ellas con una
|
||||
funci<63>n especifica. Si intentamos profundizar cada vez mas,
|
||||
(espera, retrocede, vale hay esta bien), hasta llegar a las
|
||||
instrucciones antes de ser decodificadas nos encontramos con
|
||||
ordenes simples del tipo </em>Mov AX, BX<em> <20> </em>JNZ ###<em>.
|
||||
</em></p>
|
||||
<p><em>Si realizamos un seguimiento del programa en cuestion,
|
||||
llegaremos al momento de las claves, tras introducir una,
|
||||
(cualquiera </em><em><u>no valida</u></em><em>), seguro que
|
||||
unas cuantas instrucciones mas tarde se realiza una
|
||||
comparacion </em>CMP<em>, y un salto </em>J**<em>, es aqu<71>
|
||||
donde intervenimos nosotros, los opcode de los saltos son de
|
||||
la misma longitud, por lo que no tendremos problemas. </em></p>
|
||||
<p><em>Pregunta: Si el salto es tal que </em>JE<em>, <20>qu<71>
|
||||
pasar<61>a si lo cambiasemos, digamos por </em>JNE<em>?.</em></p>
|
||||
<p><em>Respuesta: Cualquier c<>digo introducido al azar
|
||||
provocar<61> que la aplicaci<63>n crea que es correcto (de hecho,
|
||||
ahora lo es), y solo cuando tengamos la mala suerte de
|
||||
introducir un c<>digo correcto, nos expulsar<61> la
|
||||
aplicaci<63>n, diciendo: CODIGO NO VALIDO.</em></p>
|
||||
</blockquote>
|
||||
|
||||
<p>Para el ejemplo pr<70>ctico usaremos debuger de MS-DOS,
|
||||
intentar<EFBFBD> ser lo m<>s descriptivo posible. Nuestra victima
|
||||
ser<EFBFBD>, ser<65> <a href="ftp:juego.exe">Juego.exe</a>, dado que
|
||||
ser<EFBFBD>a ilegal incluir un programa real para eliminar su
|
||||
protecci<EFBFBD>n, eliminaremos el de este programa ejemplo, que puedes
|
||||
bajarte de aqu<71> mismo.</p>
|
||||
|
||||
<p>write.textfile('dbug.txt')</p>
|
||||
|
||||
<p><a name="JNEasm"></a><strong><u>No se programar</u></strong></p>
|
||||
|
||||
<p>No te preocupes, seguro que muchos de los que intenten seguir
|
||||
el documento anterior no llegar<61>n a nada. Reconozco que es
|
||||
bastante complicado.</p>
|
||||
|
||||
<p>Esta es, como se suele decir, la puerta trasera. Las claves
|
||||
estan siempre en el mismo orden, <20>c<EFBFBD>mo? <20>qu<71> cada vez que te
|
||||
pide una clave tu juego, es una clave distinta?. Bueno, eso es
|
||||
por que no sabes que lo <20>nico que pasa es que la aplicaci<63>n
|
||||
busca una clave al <em>azar</em>, pero el azar no existe, (ver mi
|
||||
p<EFBFBD>g. de pensamientos filos<6F>ficos). Para extraer una clave al
|
||||
azar, por lo general, las aplicaciones se basan en el reloj del
|
||||
sistema, por lo que:</p>
|
||||
|
||||
<p><strong>Hipotesis:</strong> si cambiamos la fecha y hora, a
|
||||
momentos constantes, y cargamos una vez, tras otra el juego
|
||||
(previo arranque al juego, cambiamos siempre fecha y hora), la
|
||||
clave que se extrae es siempre la misma (por lo que si la clave
|
||||
es simplemente escribir un n<> entre 1 y 100, de entre 1.000.000
|
||||
de posibilidades, como mucho solo tendremos que ejecutar el juego
|
||||
100 veces para conseguir obtener la clave, que <u>siempre ser<65>
|
||||
la misma</u>).</p>
|
||||
|
||||
<p><strong>Teorema:</strong> siempre y cuando el tiempo
|
||||
transcurrido entre el cambio de fecha, hora y la carga de la
|
||||
aplicaci<EFBFBD>n sea constante, conseguimos que siempre nos pida la
|
||||
misma clave.</p>
|
||||
|
||||
<p>Bueno, os dir<69> que esto da resultados muy buenos por lo
|
||||
general, y para poneros algunos ejemplos, os dir<69> que lo he
|
||||
probado en <em>"Simon the sorcerer"</em>, <em>"PC
|
||||
Futbol 3.0"</em>, y otros m<>s...</p>
|
||||
|
||||
<p>Seguro que ya, os esta<74>s preguntado: <20>es imposible, como
|
||||
mantenemos el tiempo constante desde que ponemos el reloj
|
||||
constante hasta que ejecutamos el juego?. Pues yo os digo
|
||||
hermanos, je je, no es imposible de hecho, mas abajo se describe
|
||||
el peque<75>o archivo de proceso por lotes, que consigue, que el
|
||||
tiempo transcurrido en las cargas, sea cte. (Siempre y cuando no
|
||||
estemos bajo MS-DOS, no en una sesi<73>n)</p>
|
||||
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>MClave.BAT </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>......date 01/01/01</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>......time 00:00:00</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>......<em>JUEGO</em>.EXE</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p><a href="#Inicio"><img src="back4.gif" align="right"
|
||||
border="0" hspace="0" width="20" height="22"></a></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p><a name="Parte IV"></a><strong>Parte IV: </strong>Algunos
|
||||
prog. de interes</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p>Siento que no est<73>n disponibles los enlaces, pero tengo que
|
||||
encontrar algun sitio, donde "albergar", dichos
|
||||
programas, o almenos, otro lugar donde ya esten. Pasaros por
|
||||
aqu<EFBFBD>, de vez en cuando, para ver si van apareciendo los enlaces.</p>
|
||||
|
||||
<table border="1" bordercolordark="#FFC832"
|
||||
bordercolorlight="#FFFFFF">
|
||||
<tr>
|
||||
<td valign="top" width="50%"><strong>Editores hexadecimal</strong><p>Te
|
||||
permitir<69>n editar un fichero binario, y escribir dentro
|
||||
de <20>l.</p>
|
||||
<p align="left">TurboDebuger</p>
|
||||
<p align="left">PcToolsHex</p>
|
||||
<p align="left"><a href="http://www.yurisw.com">HEdit</a></p>
|
||||
</td>
|
||||
<td valign="top" width="50%"><strong>Desassembler</strong><p>Tecnolog<EFBFBD>a
|
||||
inversa, convierte el .EXE a .ASM para tocarlo como te de
|
||||
la gana.</p>
|
||||
<p><a href="http://www.numega.com">SoftIce 3.x</a></p>
|
||||
<p><a href="http://www/expage.com/page/w32dasm">DAsm 8.9</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top" width="50%"><strong>Desprotectores de
|
||||
Juegos</strong><p>Igual que el capitulo III, pero de
|
||||
forma autom<6F>tica, est<73>n muy bien, para los juegos
|
||||
prehistoricos, que todos tenemos ya llenos de polvo.</p>
|
||||
<p>RawCopy</p>
|
||||
<p>DeCripter</p>
|
||||
<p>LockStmith </p>
|
||||
<p>RawCopy</p>
|
||||
</td>
|
||||
<td valign="top" width="50%"><strong>Utilidades</strong><p>Ver
|
||||
"Parte II", programas que realizan eso mismo,
|
||||
genial para los juegos antiguos, pero casi todos fallan
|
||||
con los modernos, y son solo para MS-DOS.</p>
|
||||
<p>GameWizard Pro </p>
|
||||
<p><a href="savecrack.htm">SaveCrack (W95)</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>(Por falta de espacio, y no haberlos encontrado en la red,
|
||||
puede que algunos de los prog. anteriores, no esten, si realmente
|
||||
te interesan; "<em>e-mail</em>" al canto.)</p>
|
||||
|
||||
<p><a href="#Inicio"><img src="back4.gif" align="right"
|
||||
border="0" hspace="0" width="20" height="22"></a></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<hr>
|
||||
|
||||
<p>.</p>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user