Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ~~

#271
Pues no se que mas quieres que profundice, son instruccioes básicas y viene un ejemplillo de cada una. Lo mejor es que hagas una prueba de cada una y mires con un debugger (el olly mismo q es el que yo he explicado o con los que a dicho Eternal Idol) para ver bien como funcionan. Una vez las entiendas intenta hacer los ejercicios y si te salen es q ya las tienes casi dominadas :P

Salu2 y si no entiendes alguna pregunta
#272
El primer post se ha actualizado. Se a añadido el capitulo "INSTRUCCIONES BÁSICAS DE ASM" Para hacer los ejercicos, ya que aun no se ha explicado por falta de tiempo como se estructura el código en FASM, pegad este código y haced las prácticas donde se indica:

Código (asm) [Seleccionar]
include 'C:\archivos de programa\fasm\include\win32ax.inc'

.code
start:
       
    ; Colocad aqui vuestro codigo

.end start


Para comprobar si os el código hace lo que quereis utilizad el olly y para cualkier duda preguntad ;)

Salu2 E0N




CitarYo 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.

Te da algún tipo de error al intentar ensamblar el código o ensambla bien y no se te crea el ejecutable?
#273
Hola

Lo que viene siendo el código para inyectar la dll lo puedes hacer en net y en cualker lenguaje q permita el uso de apis, por eso no hay problemas.
El problema viene a la hora de crear la dll, q las de net no te valen. Tienes q usar alguna con código nativo

Salu2
#274
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 ;)
#275
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
#276
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
#277
Fijate en los parametros del MessageBoxA. Si miras en la MSDN la descripcion de este api veras que para modificar el icono hay que cambiar el último parametro.
http://msdn2.microsoft.com/en-us/library/ms645505(VS.85).aspx

Por poner un ejemplo:
include 'H:/Archivos de Programa/FASM/include/win32ax.inc'

.code
start:
        invoke MessageBox, 0, 'Error', 0, MB_ICONERROR
        invoke MessageBox, 0, 'Pregunta', '', MB_ICONQUESTION
        invoke MessageBox, 0, 'Warning', '', MB_ICONWARNING
        invoke MessageBox, 0, 'Información', '', MB_ICONINFORMATION

        invoke ExitProcess, 0
.end start 


En la MSDN encontrarás prácticamente todo lo que necesites respecto a apis
Salu2 E0N
#278
@Distorsion

Si, mira, por poner un ejemplo compila esto con el fasm:

Código (asm) [Seleccionar]

format PE GUI 4.0
include 'H:\archivos de programa\fasm\include\win32a.inc'


        invoke  MessageBox,0,cuerpo, titulo,MB_OK
        invoke  ExitProcess,0

        cuerpo db 'Hola mundo', 0
        titulo db ':P', 0

data import

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

  import kernel32,\
        ExitProcess,'ExitProcess'
  import user32,\
        MessageBox,'MessageBoxA'

end data   


Veras que solo se crea una sección en el ejecutable, la flat, q es la crea fasm por defecto cuando se estructura de esta manera el código ;)

Ahora haz esto: borras todos los bytes con un editor hexadecimal a partir del 0x2BC
y cambias el RawSize de la sección por 0xBC. Con esto te kedará un archivo de 700 bytes ;)


Posiblemente se pueda reducir un poco mas el tamaño del ejecutable, pero de esta manera ya tienes la sección de "codigo" bien ajustadita




Respecto a lo de Rozor, ya lo hemos hablado por privado y me a pedido disculpas, parece q por fin ha entrad en razon, asi q si algun mod puede borrar todos los post q no estén relaccionados con el taller pues mejor.

Salu2
#279
Ta muy bien Ferchu, pero el siguiente capitulo ya va a ser como añadir secciones y eso? falta la it y la iat  :-(

Ta muy bien el tuto Ferchu, felicidades ;)
#280
Rozor, lo que estás haciendo no tiene mucho sentido, siento decirtelo. Pero en fin no pasa nada, esto es un taller, es weno q demos ideas, y ademas yo tb me puedo ekivocar q no soy programador profesional ni nada de eso ;)

Salu2