Abril Negro 2008: Taller de ASM

Iniciado por ~~, 13 Abril 2008, 16:52 PM

0 Miembros y 2 Visitantes están viendo este tema.

~~

A ok xD pues para eso tienes que añadir una sección de resources al ejecutable, fijate en el ejemplo "MINIPAD" al final del todo ;)

Para q te hagas una idea tienes que añadir algo así:
Código (asm) [Seleccionar]
section '.rsrc' resource data readable

  directory RT_ICON,icons,\
            RT_GROUP_ICON,group_icons

  resource icons,\
           1,LANG_NEUTRAL,icon_data

  resource group_icons,\
           17,LANG_NEUTRAL,main_icon


  icon main_icon,icon_data,'NombreDeTuIcono.ico'     


Salu2

Distorsion


elmeister

lo he añadido y no sale el icono (he cambiado la linea del icono para poner el nombre del icono que quiero que tenga), y con el resource hacker me aparecen las categorías de Icon y Icon Group, pero me dan un error diciendo Out of System Resources

~~

Te pongo un ejemplo 100% funcional y miras a ver en lo que te has ekivocado:

Código (asm) [Seleccionar]
format PE GUI 4.0
entry start

include 'H:\Archivos de programa\FASM\INCLUDE\win32ax.inc'

section '.data' data readable writeable

        mensaje db 'Tengo icono!!', 0
        titulo  db 'lol', 0


section '.code' code readable executable
start:

       invoke MessageBox, 0, mensaje, titulo, 0
       invoke ExitProcess, 0

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
          user,'USER32.DLL'

  import kernel,\
         ExitProcess,'ExitProcess'

  import user,\
         MessageBox, 'MessageBoxA'


section '.rsrc' resource data readable

  directory RT_ICON,icons,\
            RT_GROUP_ICON,group_icons

  resource icons,\
           1,LANG_NEUTRAL,icon_data

  resource group_icons,\
           17,LANG_NEUTRAL,main_icon

  icon main_icon,icon_data,'icono.ico'


Solo tienes que poner un icono llamado icono.ico en la misma ruta y ya tira
Salu2

elmeister

#34
vale, es que habría que reestructurar el codigo casi al completo, muchas gracias, ahora lo pruebo,


funciona, pero ahora no consigo hacerlo para que haga como el beer.asm

~~

Mira, en la sección '.code' tienes que meter el código ejecutable, las variables las metes en la seción '.data' y la it en la sección '.idata' (las apis que usas vamos). Este es el estandar por así decirlo aunke a las secciones las pudes llamar como kieras y darles los permisos q kieras ;) Resumiendo:

Código (asm) [Seleccionar]
format PE GUI 4.0
entry start

include 'H:\Archivos de programa\FASM\INCLUDE\win32ax.inc'

section '.data' data readable writeable

        _message db 'Te veo aburrido, quieres echar unas canastas?',0
        _caption db 'Estás aburrido',0

        _cmd_open db 'open cdaudio',0
        _cmd_eject db 'set cdaudio door open',0
        _cmd_close db 'close cdaudio',0

        _aburrimiento db 'Hala! Haz un Triple!',0
        _aburres db 'NBA',0


section '.code' code readable executable
start:

        invoke   MessageBoxA,0,_message,_caption,MB_ICONQUESTION+MB_YESNO
        cmp     eax,IDYES
        jne     exit

        invoke  mciSendString,_cmd_open,0,0,0
        invoke  mciSendString,_cmd_eject,0,0,0
        invoke  mciSendString,_cmd_close,0,0,0
        invoke  MessageBoxA,0,_aburrimiento, _aburres,MB_ICONQUESTION+MB_OK

       exit:
        invoke  ExitProcess,0

section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
         user32,'USER32.DLL',\
         winmm,'WINMM.DLL'

import kernel32,\
        ExitProcess,'ExitProcess'

import user32,\
        MessageBoxA,'MessageBoxA'

import winmm,\
        mciSendString,'mciSendStringA'


section '.rsrc' resource data readable

  directory RT_ICON,icons,\
            RT_GROUP_ICON,group_icons

  resource icons,\
           1,LANG_NEUTRAL,icon_data

  resource group_icons,\
           17,LANG_NEUTRAL,main_icon

  icon main_icon,icon_data,'icono.ico'   


Todo esto lo explicaré mas adelante, q no me esta dando tiempo! xD
Saludos E0N ;)

elmeister

muchas gracias, lo estaba haciendo bien, menos porque en la  sección '.idata' no puse el

import winmm,\
        mciSendString,'mciSendStringA'

Stacker

Está bien enfocado, a ver si saco tiempo, pienso seguir el taller. Yo ya me habia iniciado un poco en TASM, con el debug... pero me he decidido profundizaré con FASM.

Enhorabuena E0N

Saludos

Eternal Idol

Rozor te dejo una pista asi dejas de hacer el ridiculo: STDCALL.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Xerok1!

Yo tengo una pregunta, no se si lo estoy compilando bien, pero al guardarlo como E0N explica en el primer post, no se me crea el ejecutable.. :-( ... Perdon por mi ignorancia,pero tengo conocimientos nulos sobre este tema y me parece muy interesante..

PD:E0N me ha encantado esta parte de taller, muy bien explicada, te felicito  ;)..

un saludo!
[Firma]Esperando haber si acaba el concurso de firmas y la pongo[/Firma]