[TOOL] AMXX UnCompress 1.1
(modificar plugin compilado .amxx)
Descripción:
Es un programa para descomprimir un .amxx y dejar solo el raw generado al compilar. También es posible volver a comprimir el raw, ademas de poder hacer cambios en el código utilizando el archivo .memory.
Info:
Al compilar un script (.sma) se genera toda la información necesaria para que pueda correr en la maquina virtual de pawn, si esta habilitado también se genera la información de depuración (debug). Al finalizar la compilacion se comprime y empaqueta en un archivo .amxx.
amxx file header: contiene información sobre la composición del archivo.
amxx header: contiene información sobre todo el plugin.
debug header: contiene información sobre la depuración.
Uso:
Lo básico:
Arrastrar un archivo .amxx al .exe del programa, en segundos genera dos archivos, uno .raw y otro .memory con el mismo nombre del .amxx .
Archivo .RAW:
Contiene toda la información de la compilacion sin comprimir, es posible editar varias cosas con un editor hexadecimal.
Archivo .MEMORY:
Es un archivo que utiliza el AMXX UnCompress para realizar modificaciones en el plugin. En el se pueden definir direcciones de memoria para modificar, ya sean datos(data) o codigos(code).
Lo mas facil es usarlo para modificar string, ya que las direcciones de memoria son auto generadas y el valor es un string y no hexadecimal.
Formato:
Type: Address = Value
Type: code o data
Address: Dirección de memoria en hexadecimal con el formato 0x00000000
Value: Un string entre comillas solo para el tipo data o valores hexadecimales entre corchetes [ ] separados por espacio. El valor hexadecimal es de 4bytes, es decir que de hasta 8 caracteres.
Comment line: Se utiliza ; para comentar una linea.
(Reemplazar string)
data:address="string"
ejemplo:
data:0x00000008="hola"
(Reemplazar string y forzar escritura sobrepasando el length)
data:address="string"f
ejemplo:
data:0x000000A1="hola mundooooo"f
(Modificar dato)
data:address=[hex value]
ejemplo:
data:0x00000050=[ff 23CEFF f0ff00a AAEFD01 33]
(Modificar codigo)
code:address=[hex value]
ejemplo:
code:0x0000012F=[ff 33 C000E]
Ejemplo archivo .memory auto generado:
Código:
;data:0x00000000="Mensaje 1"
;data:0x00000028="Hacked :P"
;data:0x00000050="Final"
;data:0x00000068="Prueba amxx uncompress"
;data:0x000000C4="1.0"
;data:0x000000D4="Destro"
;data:0x000000F0="%s"
;data:0x000000FC="prueba"
;data:0x00000118="svcmd_prueba"
;data:0x00000154="string:[%s] static:[%d]"
Reemplazar String:
Lo básico:
Utilizando como ejemplo el archivo .memory de arriba.
Lo abrimos con cualquier editor de texto y modificamos.
Código:
data:0x00000000="cambiado"
data:0x00000068="Titulo del plugin"
Guardamos.
Arrastramos el archivo .raw al .exe del programa y nos comprime el .raw con las modificaciones de .memory en un nuevo .amxx .
very easy, antes solo los putos amos en pawn podían llegar a modificar algo de un .amxx,ahora cualquiera
.
Plugin utilizado:
Código PHP:
#include <amxmodx>
#define PLUGIN "Prueba amxx uncompress"
#define VERSION "1.0"
#define AUTHOR "Destro"
new const string[] = "Mensaje 1"
new const string2[] = "Hacked :P"
new const string3[] = "Final"
const const_value = 2
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
server_print("%s", string)
new value = 1
if(value == const_value)
{
server_print(string2)
return
}
funtion_print2()
register_srvcmd("prueba", "svcmd_prueba")
}
public svcmd_prueba()
{
funtion_print()
}
funtion_print()
{
static value
value++
server_print("string:[%s] static:[%d]", string, value)
}
funtion_print2()
{
server_print(string3)
}
Guiá de como modificar codigo de un .amxx:
AMXX UnCompress - CodeHack
Proteger plugin:
Para evitar que tu plugin sea descomprimido con este programa agrege el string
"no_amxx_uncompress" en cualquier parte de su plugin.
Ejemplo:
Código PHP:
server_print("no_amxx_uncompress")
Descarga:
amxx_uncompress_source.zip (Tamaño: 6.26 KB / Descargas: 359)
amxx_uncompress.zip (Tamaño: 47.79 KB / Descargas: 849)