SPANISH Creando cheats Cleo 3 4
SPANISH Creando cheats Cleo 3 4
NOTA: entrar al post para ver bien la syntaxis.
comunmente vemos mucho Scripts que tienen un monton de n�meros que no entendemos, y magicamente al escribir un Cheat en el teclado, se activa.
bueno, no hay tanta "magia" en eso, solo es necesario entender que existen diferentes formas para crear un Cheat.
CLEO 3
Cleo 3 tiene la particularidad de utilizar m�s codigo para realizar algo, requiere un poco m�s de conocimientos en leguajes de programaci�n. Esto se debe a que no existe acceso directo a algunas car�cter�sticas. Como a continuaci�n, les ense�ar�:Informaci�n b�sica:
0A8D: 0@ = read_memory 0x00969110 size 4 virtual_protect 0
Par�metros:
1. variable que almacena la informaci�n
2. Direcci�n de la memoria
3. N�mero de bytes para leer/escribir (1, 2 o 4)
4. Protecci�n virtual: 1 = Solo-lectura, 0 = re-escribible
Strings:(Texto)
en Cleo, para asignar o guardar un Texto en una variable, existen variables espec�ficas. NO podemos guardar un texto en una variable convencional (0@, 1@, 2@, 3@... 30@, 31@).
pero, podemos modificarlas para que SI puedan hacerlo, lo unico que se debe hacer es agregar despes de la arroba, una S o una V, por ejemplo:
0@s, 2@s, 4@s, 6@s, 8@s, etc.
0@v, 4@v, 8@v, 12@v, etc.
mmm pero cual es la diferencia?
S -> string de 8 bytes, almacena palabras cortas Max. 7 letras*
V -> string de 16 bytes, alamacena palabras largas Max. 14 letras*
*valores maximos recomendados, Olvid� este dato.
ahora, como funcionan?...
0@s utiliza 8 bytes, lo que significa que utiliza Dos variables convencionales, en este caso 0@ y 1@
0@v utiliza 16 bytes, lo que significa que utiliza Cuatro variables convencionales, en este caso 0@, 1@, 2@ y 3@
Forma 1 - Creando cheat por medio de ASCII
solo se permite utilizar esta forma para cheats con palabras que tengan solo 4, 6, 8, 10, 12 letras (pares)
-Creando un cheat de 4 letras:
el cheat ser�: "JUMP"
vamos a almacenar el cheat en la variable 0@ y tenemos la direccion de memoria, que es: 0x00969110 sabemos tambi�n, que por ser 4 letras tendr� un tama�o de 4 bytes, 1 byte por letra. y esta direcci�n de memoria es re-escribible(0). por lo tanto, la parte de nuestro script para activarlo se veria de la siguiente forma:
:LABEL
wait 0
0A8D: 0@ = read_memory 0x00969110 size 4 virtual_protect 0
if
04A4: 0@ == 0X4A554D50 // Texto en Hex -> JUMP
jf @LABEL
0A8C: write_memory 0x00969110 size 4 value 0 virtual_protect 0 // borrar buffer para prevenir bucles del cheat
omg! :O pero que significa esto: 0x4A554D50
Ese es nuestro Cheat en caracteres ASCII (hex)
en este caso:
jump -> 4A 55 4D 50
y le agregamos 0x al inicio, a continuaci�n les dejo la lista de los caracteres
Caracteres ASCII (HEX)
41 = A
42 = B
43 = C
44 = D
45 = E
46 = F
47 = G
48 = H
49 = I
4A = J
4B = K
4C = L
4D = M
4E = N
4F = O
50 = P
51 = Q
52 = R
53 = S
54 = T
55 = U
56 = V
57 = W
58 = X
59 = Y
5A = Z
-Creando un cheat de 6 letras:
el cheat ser�: "KILLME"
OJO: vean que ahora el c�digo ha cambiado, pero esto por que?... solo se admiten 4 bytes por variable y nuestro cheat, tiene 6, entonces, debemos utilizar otra variable para completar el cheat.
de igual forma que en el anterior;
KILLME -> 4B 49 4C 4C 4D 45
pero no admite 6 bytes, entonces, debemos separar nuestro cheat en dos, y debemos colocarlo en orden reverso, como que si se estuviera leyendo de ABAJO para ARRIBA, de la siguiente manera:
LLME ----- 4C4C4D45
KI ----------- 4B49
no olvidar que cada letra tiene 1 byte. y ya le hemos dicho al juego con las primeras dos l�neas, del codigo de arriba que utilizaremmos las variables 1@ y 2@ donde 1@ tiene 4 bytes disponibles y 2@ tiene 2 bytes.
entonces quedar�a de la siguiente forma: (siempre anteponiendo 0x )
1@ == 0x4C4C4D45
2@ == 0x4B49
con esas dos l�neas, estamos diciendo; escribimos "KILLME" en el teclado?
-Creando un cheat de 8 letras:
Ejemplos;
:LABEL
wait 0
0A8D: 1@ = read_memory 0x00969110 size 4 virtual_protect 0 // 4 bytes
0A8D: 2@ = read_memory 0x00969114 size 2 virtual_protect 0 // 2 bytes
if and
0039: 1@ == 0x4C4C4D45 // LLME
0039: 2@ == 0x4B49 // KI
jf @LABEL
0A8C: write_memory 0x00969110 size 4 value 0 virtual_protect 0 // borrar buffer
0A8C: write_memory 0x00969114 size 2 value 0 virtual_protect 0 // borrar buffer
OJO: vean que ahora el c�digo ha cambiado, pero esto por que?... solo se admiten 4 bytes por variable y nuestro cheat, tiene 6, entonces, debemos utilizar otra variable para completar el cheat.
de igual forma que en el anterior;
KILLME -> 4B 49 4C 4C 4D 45
pero no admite 6 bytes, entonces, debemos separar nuestro cheat en dos, y debemos colocarlo en orden reverso, como que si se estuviera leyendo de ABAJO para ARRIBA, de la siguiente manera:
LLME ----- 4C4C4D45
KI ----------- 4B49
no olvidar que cada letra tiene 1 byte. y ya le hemos dicho al juego con las primeras dos l�neas, del codigo de arriba que utilizaremmos las variables 1@ y 2@ donde 1@ tiene 4 bytes disponibles y 2@ tiene 2 bytes.
entonces quedar�a de la siguiente forma: (siempre anteponiendo 0x )
1@ == 0x4C4C4D45
2@ == 0x4B49
con esas dos l�neas, estamos diciendo; escribimos "KILLME" en el teclado?
-Creando un cheat de 8 letras:
el cheat ser�: "JUMPRAMP"
:LABEL
wait 0
0A8D: 1@ = read_memory 0x00969110 size 4 virtual_protect 0
0A8D: 2@ = read_memory 0x00969114 size 4 virtual_protect 0
if and
04A4: 1@ == 0x52414D50 // RAMP
04A4: 2@ == 0x4A554D50 // JUMP
jf @LABEL
0A8C: write_memory 0x00969110 size 4 value 0 virtual_protect 0 // borrar buffer
0A8C: write_memory 0x00969114 size 4 value 0 virtual_protect 0 // borrar buffer
Ejemplos;
// high End struct
{$CLEO}
0000:
While true /// escribir KILLME para activar
0A8D: 0@ = read_memory 0x969110 size 4 virtual_protect 0
0A8D: 1@ = read_memory 0x969114 size 2 virtual_protect 0
if and // KILLME
0039: 0@ == 0x4C4C4D45 // LLME
0039: 1@ == 0x4B49 // KI
then
0A8C: write_memory 0x969110 size 4 value 0x0 virtual_protect 0
03E5: show_text_box HELP101 // ignorar mensaje...
// TURNED ON
wait 500
while true
0A8D: 0@ = read_memory 0x969110 size 4 virtual_protect 0
0A8D: 1@ = read_memory 0x969114 size 2 virtual_protect 0
if and // KILLME
0039: 0@ == 0x4C4C4D45 // LLME
0039: 1@ == 0x4B49 // KI
then
0A8C: write_memory 0x969110 size 4 value 0x0 virtual_protect 0
03E5: show_text_box HELP101 // ignorar mensaje...
// TURNED OFF
break
end
wait 0
end
wait 3000
end
wait 0
end
// low End strucct
{$CLEO}
0000:
:LABEL_ON /// escribir JUMP para activar
wait 0
0A8D: 0@ = read_memory 0x00969110 size 4 virtual_protect 0
if
04A4: 0@ == 0X4A554D50 // Texto en Hex -> JUMP
jf @LABEL_ON
0A8C: write_memory 0x00969110 size 4 value 0 virtual_protect 0 // borrar buffer para prevenir bucles del cheat
03E5: show_text_box HELP101 // ignorar mensaje...
// TURNED ON
wait 500
:LABEL_OFF
wait 0
0A8D: 0@ = read_memory 0x00969110 size 4 virtual_protect 0
if
04A4: 0@ == 0X4A554D50 // Texto en Hex -> JUMP
jf @LABEL_OFF
0A8C: write_memory 0x00969110 size 4 value 0 virtual_protect 0 // borrar buffer para prevenir bucles del cheat
03E5: show_text_box HELP101 // ignorar mensaje...
// TURNED OFF
wait 3000
goto @LABEL_ON
Forma 2 - Usando Strings(texto)
esta es una variante del m�todo anterior, en este m�todo no convertiremos las letras en hex, sino que sencillamente escribiremos el texto, veamos;
-Creando un cheat de 4 letras:
el cheat ser�: "JUMP"
:LABEL
wait 0
0A8D: 0@ = read_memory 0x969110 size 4 virtual_protect 0
0006: 1@ = 0x0
if
05AE: 0@s == "PMUJ" // @s == short
jf @LABEL
0A8C: write_memory 0x969110 size 4 value 0x0 virtual_protect 0 // borrar bufer
entonces, asignamos nuestro cheat de 4 letras a una variable String, utilizando el opcode 05ae
OJO: el texto en este caso se debe escribir en orden reverso, veamos
J U M P -> cheat
P M U J -> empezando con la ultima letra
y listo.
-Creando un cheat de 6 letras:
el cheat ser�: "KILLME"
:LABEL
wait 0
0A8D: 0@ = read_memory 0x969110 size 4 virtual_protect 0
0A8D: 1@ = read_memory 0x969114 size 2 virtual_protect 0
if
05AE: 0@s == "EMLLIK" // @s == short
jf @LABEL
0A8C: write_memory 0x969110 size 4 value 0x0 virtual_protect 0 // borrar bufer
El cheat: K I L L M E
-> E M L L I K
y listo.
-Creando un cheat de 14 letras:
el cheat ser�: "THEBANANAPHONE"
:LABEL
wait 0
0A8D: 0@ = read_memory 0x969110 size 4 virtual_protect 0
0A8D: 1@ = read_memory 0x969114 size 4 virtual_protect 0
0A8D: 2@ = read_memory 0x969118 size 4 virtual_protect 0
0A8D: 3@ = read_memory 0x96911C size 2 virtual_protect 0
if and
05AE: 2@s == "ENOHPA" // @s == short
05AE: 0@s == "NANABEHT" // @s == short
jf @LABEL
0A8C: write_memory 0x969110 size 4 value 0x0 virtual_protect 0
El cheat: T H E B A N A N A P H O N E
-> E N O H P A N A N A B E H T
pero, como estamos utilizando Strings cortos, de 8 bytes, este cheat tiene 14 bytes, por lo tanto es necesario separar el cheat en dos, de la siguiente manera;
0@s -> contiene a 0@ y 1@ con un total de 8 bytes (8 letras)
2@s -> contiene a 2@ y 3@ con un total de 6 bytes (6 letras)
2@s -> contiene a 2@ y 3@ con un total de 6 bytes (6 letras)
entonces;
0@s -> 8 letras -> N A N A B E H T
2@s -> 6 letras -> E N O H P A
y listo ;)
Forma 3 - Usando Arrays
-pendienteCLEO 4
CLEO 4 fu� dise�ado para facilitarnos la vida... en vez de utilizar los m�todos anteriores, �ste nos ofrece un opcode:0ADC: test_cheat "BLOWUP"
asi de f�cil....
Conclusion:
utilizar el que mejor les convenga, si lo que desean es proteger sus scripts, entonces, entre m�s complejo sea, m�s dif�cil ser� que se los roben, ahora, si lo que desean es ense�ar, entonces el m�todo de CLEO4 es la mejor opcion.
espero les sirva...
;)
download file now
Comments
Post a Comment