ASM2SMA - Codificador experimental de AMXX Assembly
**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?
¿Como se usa?
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 Code:
C:\..\..\..>ASM2SMA -v 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 |
Re: ASM2SMA Log
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. |
Re: ASM2SMA Log
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 :) |
Re: ASM2SMA Log
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 |
Re: ASM2SMA Log
Quote:
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 |
Re: ASM2SMA Log
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:
// Que tu programa devuelva esto PHP Code:
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) |
Re: ASM2SMA Log
muy interesante :3 podrías seguirlo con el .amxx del chanta que te pase :3
|
Re: ASM2SMA Log
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 :P @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 ;) |
Re: ASM2SMA Log
Quote:
|
Re: ASM2SMA Log
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... |
All times are GMT -4. The time now is 01:48. |
Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.