elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Libreria en ensamblador (FASM)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Libreria en ensamblador (FASM)  (Leído 7,812 veces)
farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Libreria en ensamblador (FASM)
« en: 2 Agosto 2010, 22:11 pm »

Soy un poco novato en este aspecto, pero quizás a muchos les sea útil para adjuntar librerias a sus programas.

Yo, de hecho llevaba tiempo buscando como crear una DLL en FASM, y toqué con el código para hacerlo. Asi podrán usar FASM, que es un ensamblador inmejorable, sin escusas.

Código:
; DLL creation example

format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.code' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp

; VOID ShowErrorMessage(HWND hWnd,DWORD dwError);

proc ShowErrorMessage hWnd,dwError
  local lpBuffer:DWORD
lea eax,[lpBuffer]
invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
invoke LocalFree,[lpBuffer]
ret
endp

; VOID ShowLastError(HWND hWnd);

proc ShowLastError hWnd
invoke GetLastError
stdcall ShowErrorMessage,[hWnd],eax
ret
endp

section '.idata' import data readable writeable

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

  import kernel,\
GetLastError,'GetLastError',\
SetLastError,'SetLastError',\
FormatMessage,'FormatMessageA',\
LocalFree,'LocalFree'

  import user,\
MessageBox,'MessageBoxA'

section '.edata' export data readable

  export 'ERRORMSG.DLL',\
ShowErrorMessage,'ShowErrorMessage',\
ShowLastError,'ShowLastError'

section '.reloc' fixups data discardable

Espero que les sea útil. Este código se encuentra entre uno de los ejemplos de FASM. Las funciones exportadas, en este caso son ShowErrorMessage y ShowLastError.

Saludos!

PD: Si ya sabian hacer esto, porfavor, no critiquen. Comparto lo que puedo a la comunidad; a algunos les será util, a otros quizás no.


En línea

fary


Desconectado Desconectado

Mensajes: 1.084



Ver Perfil WWW
Re: Libreria en ensamblador (FASM)
« Respuesta #1 en: 3 Agosto 2010, 01:45 am »

buen aporte, muchas gracias de sirvio de mucho.

salu2!


En línea

Un byte a la izquierda.
farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Libreria en ensamblador (FASM)
« Respuesta #2 en: 3 Agosto 2010, 18:44 pm »

buen aporte, muchas gracias de sirvio de mucho.

salu2!
Me alegro que te haya servido. Como dije, no puedo explicar mucho más sobre su funcionamiento. Si lo compilais con FASM (flatassembler.net) el resultado que os dará será una DLL en vez de un EXE. Es decir, escribis el codigo a continuacion de esto y lo compilais; se os creará automaticamente la DLL sin cambiar nada en el compilador ni añadir nada en especial. Es automatico.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
KolibriOS está escrito completamente en lenguaje ensamblador usando el FASM. « 1 2 »
ASM
Weeken 11 12,042 Último mensaje 3 Diciembre 2012, 21:14 pm
por Fantasma Errante
Problema al atrapar excepcion en ensamblador cambiando [fs:0] manualmente (FASM)
ASM
harry_the_blogger 6 4,430 Último mensaje 16 Septiembre 2014, 04:02 am
por harry_the_blogger
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines