Extraccion de archivo LUA de un ActionPlugin

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Hey... saludos a tod@s.
Ok, conseguí un Action Plugin creado por reteset dicho plugin es "BassPlayer" para la gestión de mp3's utilizando las librerías Bass, el problema es que dicho plugin fue dejado inconcluso y con solo unas cuantas funciones (las cuales van de maravilla), y al parecer fue dejado en el olvido.
El caso es que me gustaría intentar ampliar dicho plugin y para ello eché mano de la utilidad Extract From Action Plugin by CoMaster & Kindly, pero me lanza un error y no me abre ningún archivo .lmd entonces decidí utilizar el Resource Tuner y he logrado extraer el archivo .xml, pero no consigo obtener un archivo .lua en donde deberían estar las funciones en sí.
Alguno de ustedes conoce otra alternativa para extraer o visualizar los script LUA de los action plugin?.

Les agradecería que me echaran una ayudita en este dilema.

Muchas gracias.

Oscar.-
conozco este plugin, y imagino que estará compilado con el visual por eso no se puede abrir con el programa que as nombrado, para poder modificar este plugin tendrías que saber C, ademas de tener source, para conseguirlo puedes hablar con reteset y seguro que no tendrá problema en pasarte el source.... mas no te puedo decir.
Ok, gracias Ceone por responder, ya le envié varios mensajes a reteset pero sin ninguna respuesta, imagino que estará muy ocupado... Bueno, continuaré con mi odisea pues me interesa mucho ver completado dicho plugin.

Edit:
Me olvidaba decir que las funciones del plugin las puedo realizar sin necesidad del mismo, por lo tanto creo que optare por hacer funcionar mi player trabajando directamente con las librerías Bass (sin necesidad del Plugin, valga la redundancia), será más trabajo, pero creo que la satisfacción sera mayor.

:pc:
si tienes la librería podrías hacer un plugin ya que dices que reteset pasa del tema... no?
Hola, te iba a comentar que usaras las librerias de bass en modo standalone, yo por mi parte usaría alguna libreria como alien o memory

Debes mirar si la estructura de los resources coincide con la estructura de un plugin compilado con APC, si es asi es posible que el tio haya cambiado la contraseña de encriptacion del archivo, cosa que me cuadra ya que me ha reprochado alguna que otra vez juankearle el software, me cuadraria mucho que haya cambiado la clave

si quieres obtener codigo lua mediante un debugger te dejo unos pasos basicos para hacerlo

Debes debugguear la dll APC.dll, y buscar la posicion de la funcion buildplugin(), aunque primero debes quitarle la compresion realizada con PECompack creo que version 2.2, encrontraras el unpacker en cualquier foro, alguno para las versiones 2.x, una vez unpackeado abre tu debugguer favorito, estilo olly, haz un attach hacia la dll APC.dll una vez este abierto el apc, y busca con la funcion ultra string reference "WriteLua", encontraras algo asi...

10002400 > 56 PUSH ESI = > Breakpoint aqui 
10002401 . 8B7424 08 MOV ESI,DWORD PTR SS:[ESP+8]
10002405 . 68 60E70210 PUSH APC.1002E760 ; ASCII "WriteLua"
1000240A . 56 PUSH ESI
1000240B . E8 30220000 CALL APC.10004640
10002410 . 6A 00 PUSH 0
10002412 . 68 701D0010 PUSH APC.10001D70 = > Direccion real de la funcion
10002417 . 56 PUSH ESI
10002418 . E8 63220000 CALL APC.10004680


Crea el breackpoint donde te indico, y construye algun plugin, el breckpoint sera lanzado y veras algo asi

100019C0 $ 6A FF PUSH -1 
100019C2 . 68 F0C60210 PUSH APC.1002C6F0 ; SE handler installation
100019C7 . 64:A1 00000000 MOV EAX,DWORD PTR FS:[0]
100019CD . 50 PUSH EAX
100019CE . 64:8925 000000>MOV DWORD PTR FS:[0],ESP
100019D5 . 51 PUSH ECX
100019D6 . 55 PUSH EBP
100019D7 . 56 PUSH ESI
100019D8 . 57 PUSH EDI
100019D9 . C74424 0C 0000>MOV DWORD PTR SS:[ESP+C],0
100019E1 . C74424 18 0000>MOV DWORD PTR SS:[ESP+18],0
100019E9 . E8 89F20100 CALL APC.10020C77
100019EE . 8B10 MOV EDX,DWORD PTR DS:[EAX]
100019F0 . 8BC8 MOV ECX,EAX
100019F2 . FF52 0C CALL DWORD PTR DS:[EDX+C]
100019F5 . 83C0 10 ADD EAX,10
100019F8 . 894424 0C MOV DWORD PTR SS:[ESP+C],EAX
100019FC . 8B7424 24 MOV ESI,DWORD PTR SS:[ESP+24]
10001A00 . 68 F4E60210 PUSH APC.1002E6F4 ; ASCII "Crypto"
10001A05 . 56 PUSH ESI
10001A06 . C64424 20 01 MOV BYTE PTR SS:[ESP+20],1
10001A0B . E8 302C0000 CALL APC.10004640
10001A10 . 68 EFD8FFFF PUSH -2711
10001A15 . 56 PUSH ESI
10001A16 . E8 252D0000 CALL APC.10004740
10001A1B . 68 DCE60210 PUSH APC.1002E6DC ; ASCII "BlowfishEncryptString"
10001A20 . 56 PUSH ESI
10001A21 . E8 1A2C0000 CALL APC.10004640
10001A26 . 6A FE PUSH -2
10001A28 . 56 PUSH ESI
10001A29 . E8 122D0000 CALL APC.10004740
10001A2E . 6A FE PUSH -2
10001A30 . 56 PUSH ESI
10001A31 . E8 9A290000 CALL APC.100043D0
10001A36 . 6A FF PUSH -1
10001A38 . 56 PUSH ESI
10001A39 . E8 622A0000 CALL APC.100044A0
10001A3E . 8B6C24 58 MOV EBP,DWORD PTR SS:[ESP+58]
10001A42 . 83C4 30 ADD ESP,30
10001A45 . 83F8 06 CMP EAX,6
10001A48 . 75 6A JNZ SHORT APC.10001AB4
10001A4A . 55 PUSH EBP
10001A4B . 56 PUSH ESI
10001A4C . E8 EF2B0000 CALL APC.10004640
10001A51 . 68 B8E60210 PUSH APC.1002E6B8 ; ASCII "3BDD1190493728022EEDDA93FFD39C79"


Creo que esta parte ni requiere explicacion, simplemente añade a la pila la funcion crypto.blowfish... y la contraseña a utilizar, es un poco caotico pero bueno es lo que tiene

saludos
Ok... gracias Pabloko, voy a ver que obtengo.

@Ceone, De las librerías Bass ya he realizado ciertos progresos tomando como punto de partida algunos ejemplos que andan rodando por la red.
Puedo cargar y reproducir mp3's, wma, ape, ogg y flac, también puedo obtener los Float points del channel utilizado para el audio y así mostrar un VU meter o un spectrum analyzer (con imágenes, pues con el plugin de reseted este lo hace con un objeto flash... y consume exagerada cantidad de recursos), puedo manejar el balance del audio así como el control de volumen, ya consigo las ID3Tags... Ahora voy a por el ecualizador.

Es emocionante... jejejeje, parezco un niño con juguete nuevo.
Al final de cuentas no resulta tan difícil como lo planteaban en el foro de IndigoRose algunos de los "Gurus" que allí habitan.

Cuando finalize mi tarea lo publico en este foro y pueda que algunos de los entendidos con los plugins puedan compilar uno a partir de dicho trabajo y así hacerle la vida mas fácil a otros que se vienen iniciando como yo.
hombre yo mas que nada te lo digo por que si andas manejando esas librerías y progresos podrías compartirlos en plan plugin, peo bueno eso como prefieras, como tu bien dices hacer un plugin partiendo de algo que ya funciona en ams es muy fácil pero ya que eres tu el que lo as echo hacer el plugin no entraña ni dificultad ni un gran tiempo añadido...
Ceone escribió:hombre yo mas que nada te lo digo por que si andas manejando esas librerías y progresos podrías compartirlos en plan plugin, peo bueno eso como prefieras, como tu bien dices hacer un plugin partiendo de algo que ya funciona en ams es muy fácil pero ya que eres tu el que lo as echo hacer el plugin no entraña ni dificultad ni un gran tiempo añadido...
Oh!!... de compartirlo en plan plugin... que mas quisiera, pero como dije en otro post yo no soy programador sino diseñador gráfico... jejejeje, lo que hago es ir probando cosas con los scripts y los que me van resultando los anoto (disculpa lo troglodita de esto... jejejeje), así he conseguido hacer funcionar muchas cosas con las librerías en cuestión, es por ello que prefiero compartir el ejemplo de un player en si con todas las funciones basadas en Bass que haya hecho funcionar (valga la redundancia), y de ese modo los que si tienen experiencia en la creación de plugins puedan asumir esa tarea de compilación a partir de dicho ejemplo.
Compilar un plugin desde cero para mi seria una odisea, aunque no imposible, es por ello que procuraba el archivo .lua del plugin creado por reteset... (por cierto me ha respondido a la correspondencia y me dice que no ha dejado de lado el desarrollo de su plugin, solo que ha hecho una pausa para dedicarse a otras cosas de mayor urgencia para él.).

Terminar el ejemplo me llevara cierto tiempo pero tan pronto esté listo lo publico.

Gracias.-
Sería interesante ese Player, ya que eso de dar el bitrate en tiempo real, tener equalizador y además de decodificar varios formatos añadiría varias funciones interesantes al AMS, ya que este solo lee OGG y muy a lo cutre.
genius mac, me he bajado la libreria bass y le he echado un ojo al punete c++, estoy pensando que no seria muy dificil hacer un plugin nativo o una dll para esta libreria, yo de un principio creia que solo servia para los tipicos archivos de sonido chiptune, pero estoy viendo muchas cosas que me gustaria como por ejemplo la posibilidad de obtener la frecuencia de una entrada, ya que llevo un tiempo queriendo construir un osciloscopio a partir de una entrada de audio (con los 44kHz de limitacion claro)

ponte en contacto conmigo seguro que llegamos a algo
jjaja al final me estoy hasta divirtiendo con esto



los vecinos tienen que estar flipando...
Moooooolaaaaaa!!!!
Madre de Dios yo me tome todo un día para echar a andar un mp3 y Pabloko en tan solo unos minutos ha destripado el Bass.dll... jajajajaja.

Veo que de aquí saldrá algo interesante y podremos decirle adiós al motor de audio de AMS y al MediaPlayer plugin.

:)
No es nada del otro mundo, esta hecho con trozos de ejemplo que vienen en la propia libreria bass la verdad es que me he agobiado un poco entre y funciones y ya no solo eso cada funcion puede retornar un numero inmenso de movidas, parece ser algo que se complica bastante digamos...

quede claro que en el ejemplo cada cosa es cada cosa, por una parte bass reproduce el sonido y extrae su imformacion, y una libreria basada en GDI imprime el grafico

Yo podria aportar una primera y ligerisima implementación, pero el desarrollo ya no puedo hacerme cargo, por tiempo y nivel de alcohol en sangre

Voy a ir preparando una implementacion, supongo que un action plugin el principal problema que veo es que no creo que ams pueda manejar información tan velozmente, y mas haciendo tantas conversiones de por medio, para mi que se va a quedar muy limitado a la hora de por ejemplo, tratar informacion sampleada en tiempo real y traducirla mediante funciones metematicas... nose no lo veo
Yo tengo una duda, como has hecho para hacer esa ventanita en AMS, has convertido la librería en un Object Plugin gracias a los ejemplos o has incrustado la imagen dentro de otro objeto?
Pabloko escribió:quede claro que en el ejemplo cada cosa es cada cosa, por una parte bass reproduce el sonido y extrae su imformacion, y una libreria basada en GDI imprime el grafico
Con razón el reproductor AIMP2 tiene ese sonido de primera...