Raised This Month: $51 Target: $400
 12% 

ASM2SMA - Codificador experimental de AMXX Assembly


  
 
 
Thread Tools Display Modes
Author Message
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 08-10-2012 , 17:03   ASM2SMA - Codificador experimental de AMXX Assembly
#1

**NOTA: Si por cualquier razon, el programa queda colgado, usen el parametro -d **

¿Que es el ASM2SMA?
El ASM2SMA es un codificador (encoder) para convertir lenguaje ensablador de un plugin compilado para el AMX Mod X (.amxx) a su codigo fuente original escrito en Pawn (.sma)

¿Como funciona?
Como ya se ha descrito antes, el ASM2SMA codifica el lenguaje ensamblador de un plugin compilado (.amxx) a su codigo fuente en Pawn (.sma). Para ello hace uso de la herramienta amxxdump creada por el usuario de AlliedModders sawce. Una vez que se obtiene el dump del plugin en ensamblador, el ASM2SMA realiza una serie de operaciones para codificar el dump y obtener un codigo fuente en Pawn similar al original

¿Necesito algun conocimento especial para usarlo?
En el estado actual del programa, SI es necesario tener un conocimiento medio/avanzado de Pawn aplicado al AMX Mod X y de como decompilar plugins. Dado a su estado actual de desarrollo, el codigo fuente obtenido representa un ~10% o un ~8% del codigo original, por lo tanto, si se desea obtener el codigo fuente completo es necesario seguir codificando el resto del dump a mano.
El proposito de este programa es llegar a un nivel de desarrollo para que cualquier persona, con unos minimos conocimientos de la sintaxis de Pawn pueda decompilar un plugin.

Ademas de esto, es imprescindible conocer el manejo de la consola de Windows (cambiar de directorio basicamente)

¿Esta el codigo fuente del ASM2SMA disponible?
Por ahora, el codigo fuente del ASM2SMA NO esta disponible. Sera publico cuando el proograma este en un estado de desarrollo mas avanzado (y tenga un codigo mas bonito y optimizado)

¿Donde puedo descargar una version beta del ASM2SMA?
Cada vez que haya una version nueva, sera puesta aqui.
Ultima version:
-Download ASM2SMA v1.1

Nota: Desde que fue añadido el soporte para plugins compilados, la descarga del ASM2SMA es un archivo .zip que contiene el ASM2SMA y el amxxdump

¿Que funciona?
  • Deteccion de modulos
  • Cabeceras de funciones
  • Listado de tods las natives en su correspondiente funcion
  • Asignaciones (Parcialmente)


¿Como se usa?
  1. Extraer el contenido del ASM2SMA.zip en la ruta deseada
  2. Copie su plugin compilado o su dump del plugin deseado en la carpeta en la que extrajo el contenido del ASM2SMA.zip
  3. Abra la consola de comandos de Windows (presione Windows+R, escriba cmd.exe y pulse enter)
  4. Navegue hasta el directorio donde extrajo el ASM2SMA.zip mediante el comando cd
  5. -Para plugins compilados (.amxx) escriba: ASM2SMA my_plugin.amxx
  6. -Para dumps obtenidos mediante el amxxdump escriba: ASM2SMA my_dump.extension
  7. Pulse Enter en ambos casos

Una vez realizado lo anteriormente descrito, se creara en la carpeta donde se encuentra el ASM2SMA los siguientes archivos:

-Plugins compilados (.amxx):
-my_plugin.amxx.dump (dump del plugin obtenido mediante el amxxdump)
-my_plugin.amxx.dump.sma (source obtenido mediante el ASM2SMA)

-Plugins dumpeados con el amxxdump
-my_dump.extension.sma (source obtenido mediante el ASM2SMA)

Parametros
* -o -> Especifica en que fichero se escribirar el resultado de la codificacion
* -d -> Activa el debug, todo el prodeso de codificacion se mostrara
* -v -> Muestra la version y la ayuda del programa

Ejemplos
-Sin entrada:
Code:
C:\..\..\..>ASM2SMA

                        ASM 2 SMA v.1.1 PRE-BETA
                         S34Qu4K3 (C) 2012-2013
Thanks to:
-= sawce for his amxxdump, BAILOPAN for his 'Decompiling plugins' thread =-
-= gladius, lucas_7_94, rak, Kiske...ALL SPANISH SECTION FROM ALLIEDMODS =-



No ASM plugin :( ...
Use -v to display version and usage information
-Parametro -v
Code:
C:\..\..\..>ASM2SMA -v

                        ASM 2 SMA v.1.1 PRE-BETA
                         S34Qu4K3 (C) 2012-2013
Thanks to:
-= sawce for his amxxdump, BAILOPAN for his 'Decompiling plugins' thread =-
-= gladius, lucas_7_94, rak, Kiske...ALL SPANISH SECTION FROM ALLIEDMODS =-


Options:
        -o              - Specify file to write
        -d              - Enable debug
        -v              - Display version
-Plugin compilado(.amxx)
Code:


Creditos
-> sawce por su amxxdump
-> BAILOPAN por su thread 'Decompiling Plugins'

->gladius por su soporte con C++
->Javivi por reñirme por mezclar C y C++
->rak por hacer que el ASM2SMA falle, crashee o entre en un loop infinito cada vez que uso uno de sus plugins
->lucas_7_94, Kiske por hacer plugins que no se entienden, ni en amxxdump ni en .sma
->toda la seccion SPANISH de AlliedModders por molestar con su ZP y ayudarme el todo lo posible
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.

Last edited by S34Qu4K3; 01-25-2013 at 14:24. Reason: *UPDATE*
S34Qu4K3 is offline
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 08-10-2012 , 18:08   Re: ASM2SMA Log
#2

Ese ejemplo que colocaste, puedes agregar también lo que te da el amxxdump y el amx dissasembler para ver que más podrías obtener o ayudarte en algo.
Y en lo posible agregar el plugin base source que compilaste para probar, aunque ya se vea de que se trata.
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 08-10-2012 at 18:09.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
Old 08-10-2012, 18:09
gladius
This message has been deleted by gladius. Reason: asda
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 08-10-2012 , 18:25   Re: ASM2SMA Log
#3

Todo lo que hace el programa es con las primeras lineas del amxxdump, que muestran la lista de librerias, funciones etc. Aun no empeze directamente con el codigo en ensamblador.
Mañana cuando este en el pc te pongo el resultado del amxxdump. Y el plugin es uno que busque por ahi sin sma y q decompile a mano, svcbadkiller.amxx Las funciones fuckme, el stock y alguna libreria la añadi yo para testear nada mas
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.
S34Qu4K3 is offline
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 08-10-2012 , 19:20   Re: ASM2SMA Log
#4

Mmm interesante programa, te deseo suerte al tratar de pasar lo que contiene una función. Muchas direcciones de memoria que para saber que es debes analizar duramente la línea con bastantes if o simplemente dejar partes en blanco para que la persona asumiendo con respecto a lo que da el amxdump coloque lo que estime que va, a no ser que hagas en vez de dar al parámetro exacto, mediante condiciones colocar distintas alternativas de lo que puede ser. Así la persona solo va guiarse por esas alternativas y será más fácil obtenerlo (Hablando de personas que aún no saben muy bien analizar un plugin, como detectar cuando es un arreglo o un simple int).

También te sugiero hacer algo como el amxx profiler como un txt del plugin que decompiles. Y quizás te sirva para otras cosas.

Detestaría usar decompilar un plugin grande, porque te da como 10 líneas en el amxdump por cada línea del sma xD
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 08-10-2012 at 19:22.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 08-10-2012 , 19:46   Re: ASM2SMA Log
#5

Quote:
Originally Posted by gladius View Post
Mmm interesante programa, te deseo suerte al tratar de pasar lo que contiene una función. Muchas direcciones de memoria que para saber que es debes analizar duramente la línea con bastantes if o simplemente dejar partes en blanco para que la persona asumiendo con respecto a lo que da el amxdump coloque lo que estime que va, a no ser que hagas en vez de dar al parámetro exacto, mediante condiciones colocar distintas alternativas de lo que puede ser. Así la persona solo va guiarse por esas alternativas y será más fácil obtenerlo (Hablando de personas que aún no saben muy bien analizar un plugin, como detectar cuando es un arreglo o un simple int).

También te sugiero hacer algo como el amxx profiler como un txt del plugin que decompiles. Y quizás te sirva para otras cosas
Detestaría usar decompilar un plugin grande, porque te da como 10 líneas en el amxdump por cada línea del sma xD
Ya, no me tiene pinta de ser nada sencillo pero bueno, ire poquito a poquito, con cosas que tengan todos los plugins, el register plugin por ej. Luego a condiciones simples y asi, poquito a poquito, igual logro un programita que ahorre algo de tiempo al decompilar un plugin, aunqur no lo haga entero
No entiendo a que te refieres con el txt del profiler :S

Y creo ademas que mi code no es muy eficiente u.u Creo que mañana cambio todas las funciones para usar unicamente un stream para leer/escribir
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.

Last edited by S34Qu4K3; 08-10-2012 at 19:56.
S34Qu4K3 is offline
gladius
Veteran Member
Join Date: Jul 2008
Location: Santiago, Chile
Old 08-10-2012 , 20:13   Re: ASM2SMA Log
#6

El profiler te podía servidor para guiarte más o menos en las funciones más fácilmente, pero creo que no es buena idea al momento de que necesitamos todo, más allá de los nombres de las funciones.

Creo que mi comentario te hizo pensar que va a ser más difícil de lo que creías jajajaja. A lo que voy claro partir de las cosas básicas como partir definiendo simplemente como texto lo que vaya dentro de la función por ejemplo si en plugin_init es.

// Source
PHP Code:
#include <amxmodx>

public plugin_init() 
{
    
register_plugin("a""b""c");
    
    
register_cvar("cvar_name""cvar_value"flag_optionalflvalue);
    
    new 
Float:fltime get_gametime();
    
    
server_print("%f"fltime);

// Suponiendo que ya compilaste y obtuviste el resultado del amxxdump

// Que tu programa devuelva esto
PHP Code:
#include <amxmodx>

public plugin_init() 
{
    
// Funcion register_plugin
    // 3 Parametros
    // String
    // String
    // String
    
    // Funcion register_cvar
    // 4 parametros
    // String
    // String
    // Int
    // Float
    
    // Variable
    // Float
    // Funcion get_gametime
    // 0 Parametros
    
    // Funcion server_print
    // 2 Parametros
    // String
    // Float

Ya devolviendo eso se tiene bastante claridad de lo que hace o no?

No es necesario que devuelva la línea tal cual a como debería ser(Al menos al principio mientras aún trabajas en lo básico del programa)
__________________
Proyects
Kreedz Chile Mod [100%] (Fixing some details).


Last edited by gladius; 08-10-2012 at 20:15.
gladius is offline
Send a message via MSN to gladius Send a message via Skype™ to gladius
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-10-2012 , 20:31   Re: ASM2SMA Log
#7

muy interesante podrías seguirlo con el .amxx del chanta que te pase
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 08-10-2012 , 20:34   Re: ASM2SMA Log
#8

No, ya sabia que iba a ser dificil, mas aun sabiendo mi nivel de C++ pero bueno, ya aprendi bastante con lo poco que llevo
Eso es lo que voy a hacer cuando llegue a esa parte, primero separar el codigo en asm en trozos que correspondan a las natives, tal y como estan en el amxxdump y luego las ordenare, luego ya vere que hago

@Rak
El plugin ese aun no lo tengo ni decompilado y me va a complicar un poquito el hacer el programa, pero para mejorarlo lo usare ;)
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.

Last edited by S34Qu4K3; 08-10-2012 at 20:36.
S34Qu4K3 is offline
rak
Veteran Member
Join Date: Oct 2011
Location: banned country
Old 08-10-2012 , 20:40   Re: ASM2SMA Log
#9

Quote:
Originally Posted by S34Qu4K3 View Post
No, ya sabia que iba a ser dificil, mas aun sabiendo mi nivel de C++ pero bueno, ya aprendi bastante con lo poco que llevo
Eso es lo que voy a hacer cuando llegue a esa parte, primero separar el codigo en asm en trozos que correspondan a las natives, tal y como estan en el amxxdump y luego las ordenare, luego ya vere que hago

@Rak
El plugin ese aun no lo tengo ni decompilado y me va a complicar un poquito el hacer el programa, pero para mejorarlo lo usare ;)
si necesitas el sma decime que te lo paso xD
__________________

www.amxmodx-es.com

Steam: Luchokoldo
rak is offline
Send a message via MSN to rak Send a message via Skype™ to rak
S34Qu4K3
Veteran Member
Join Date: Jan 2010
Location: Galicia
Old 08-10-2012 , 20:50   Re: ASM2SMA Log
#10

Cuando empieze con el, posiblemente xD Por ahora esta bien asi, ademaz podre comprobar la eficacia del programa decompilando plugins como el tuyo

@gladius
Me olvide de mencionarte que hay un problema añadiido, las librerias como fakemeta, hamsandwich, etc como ya sabes, copian los stocks por ej al code, con lo que se añaden funciones que no es necesario decompilar, con lo que hay que saber cuales son, lo que es un rollo... Tengo q pensar como arreglar eso...
__________________

- ASM2SMA: Experimental AMXX Assembly encoder

- Defuse Bar Fix

Quote:
Originally Posted by Arkshine
I DON'T WANT TO SEE NOOOOOOOOOOOOOOO AHHHHH. MY EYES ARE ALREADY HURT.

Last edited by S34Qu4K3; 08-10-2012 at 21:26.
S34Qu4K3 is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:57.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode