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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  ¿Como puedo crear una libreria estatica con flat assembler?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como puedo crear una libreria estatica con flat assembler?  (Leído 5,889 veces)
Avoidance25

Desconectado Desconectado

Mensajes: 12


inot !!!


Ver Perfil
¿Como puedo crear una libreria estatica con flat assembler?
« en: 6 Noviembre 2009, 21:26 pm »

Tengo un codigo de una dll, que es una modificacion mia de un ejemplo que traia el compilador, y quisiera compilar este codigo de tal manera a que se compile como una libreria estatica (".a" o ". lib"). ¿Como lo hago?

Este es mi codigo:
Código:
format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'
cadena db 'asd',0

;section '.text' code readable executable

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


proc MiFuncion
        invoke  MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK
        ret
endp

section '.idata' import data readable writeable

  library user,'USER32.DLL'

  import user,\
         MessageBox,'MessageBoxA'

section '.edata' export data readable

  export 'midll.dll',\
         MiFuncion,'MiFuncion'

section '.reloc' fixups data discardable
 


En línea

--Recuerda siempre que eres único… Exactamente igual que todos los demás.
--Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #1 en: 6 Noviembre 2009, 23:00 pm »

Esto es muy especifico de la herramienta que uses, FASM por lo que veo. Yo no puedo ver como hacerlo aca en el manual:

http://flatassembler.net/docs.php?article=manual#2.4

format PE GUI 4.0 LIB fue mi primera intuicion pero no funciona y obviamente no figura ahi.

Agrego, es posible generar archivos objeto COFF y con VC++ entonces generar una libreria estatica, esto es algo muy basico que apenas ensambla, enlaza y funciona pero tendras que hacer mas.

Tu codigo para .obj:
Código
  1. format MS COFF
  2. ;entry DllEntryPoint
  3.  
  4. include 'win32a.inc'
  5. cadena db 'asd',0
  6.  
  7. section '.text' code ;readable executable
  8.  
  9.  
  10. proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
  11.        mov     eax,TRUE
  12.        ret
  13. endp
  14.  
  15. public MiFuncion
  16. public MiFuncion as '_MiFuncion'
  17.  
  18.  
  19. proc MiFuncion
  20.        invoke  MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK
  21.        ret
  22. endp
  23.  
  24. section '.idata' data ;Mimport data ;readable writeable
  25.  
  26.  library user,'USER32.DLL'
  27.  
  28. extrn '__imp__MessageBoxA@16' as MessageBox:dword
  29.  
  30. ;  import user,\
  31. ;         MessageBox,'MessageBoxA'
  32.  
  33. section '.edata' data ;export data readable
  34.  
  35. ;  export 'midll.dll',\
  36. ;         MiFuncion,'MiFuncion'
  37.  
  38.  
  39. section '.reloc' data; fixups data discardable

fasm faLib.asm generara faLib.obj
lib faLib.obj generara faLib.lib

Un ejemplo para llamar a la libreria (MASM):
Código
  1. .386
  2. .model flat, stdcall
  3.  
  4. MiFuncion PROTO C:DWORD
  5.  
  6. .code
  7. main:
  8. call miFuncion
  9. ret
  10. end main

ml call.asm faLib.lib user32.lib


« Última modificación: 6 Noviembre 2009, 23:14 pm por Eternal Idol » En línea

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
Avoidance25

Desconectado Desconectado

Mensajes: 12


inot !!!


Ver Perfil
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #2 en: 8 Noviembre 2009, 18:29 pm »

Muchas gracias por tu respuesta.

Entonces, ¿lib es un comando de VC++?. ¿No conoces alguna forma de linkear el archivo objeto con MinGW ?.
En línea

--Recuerda siempre que eres único… Exactamente igual que todos los demás.
--Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #3 en: 8 Noviembre 2009, 18:37 pm »

Si, no lo se, consulta la documentacion de MinGW ... tal vez tambien quieras averiguar sobre otros ensambladores como MASM o NASM.
En línea

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
Avoidance25

Desconectado Desconectado

Mensajes: 12


inot !!!


Ver Perfil
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #4 en: 8 Noviembre 2009, 19:01 pm »

Ok, muchas gracias.
En línea

--Recuerda siempre que eres único… Exactamente igual que todos los demás.
--Diplomacia es el arte de decir “bonito perrito”… hasta que puedas encontrar una piedra.
--Morir es como dormir, pero sin levantarse a hacer pis.
--En las guerras, los soldados reciben las balas y los generales las medallas.
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #5 en: 8 Noviembre 2009, 21:52 pm »

No es necesario el DllEntryPoint ;)

Por ejemplo

Codigo que llama a la lib creada
Código
  1. format MS COFF
  2. include 'win32ax.inc'
  3. extrn '__imp__ExitProcess@4' as ExitProcess
  4. extrn '_MiFuncion' as MiFuncion
  5. public Main as '_Main'
  6. section '.text' code readable executable
  7. Main:
  8. stdcall MiFuncion
  9. stdcall dword[ExitProcess]

y el codigo de la libreria
Código
  1. format MS COFF
  2. include 'win32ax.inc'
  3. extrn '__imp__MessageBoxA@16' as MessageBox:dword
  4. public MiFuncion as '_MiFuncion'
  5. proc MiFuncion
  6.        invoke  MessageBox,HWND_DESKTOP,cadena,cadena,MB_OK
  7.        ret
  8.        cadena db "asd",0
  9. endp                            

Para crear la .lib desde el .obj que crea el fasm puedes como decia eternal usar el "lib" del VC++ de la siguiente forma
Código:
lib TuLibreria.obj
y luego para linkear el .obj ( el primero , el del codigo principal ) con la libreria puedes linkear con el link de VC++ de la siguiente manera
Código:
link Principal.obj  /entry:Main /subsystem:windows /DEFAULTLI
B:TuLibreria.lib /DEFAULTLIB:kernel32.lib  /DEFAULTLIB:user32.lib
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.958


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: ¿Como puedo crear una libreria estatica con flat assembler?
« Respuesta #6 en: 8 Noviembre 2009, 23:18 pm »

Es su codigo con lo minimo comentado para que ensamble ... en fin, ahora ya sabra otra manera de enlazar el codigo de la libreria estatica que quiere generar con las herramientas que no quiere usar.
« Última modificación: 8 Noviembre 2009, 23:23 pm por Eternal Idol » En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿algun tuto y libro sobre flat assembler?
ASM
AlxSpy 4 9,482 Último mensaje 24 Junio 2011, 07:30 am
por d(-_-)b
[DUDA]uso del mov en flat assembler
ASM
AlxSpy 2 5,004 Último mensaje 26 Junio 2011, 23:08 pm
por AlxSpy
[DUDA] Como crear una Librería Dinámica.
Programación C/C++
Zodiak98 2 2,385 Último mensaje 25 Mayo 2013, 00:05 am
por Zodiak98
Como puedo instalar la librería <conio.h>
Programación General
Xylibox.RD 2 2,632 Último mensaje 26 Septiembre 2013, 00:09 am
por Xylibox.RD
Proyecto traducción Flat Assembler Programmer's Manual
ASM
Ózar 0 2,275 Último mensaje 1 Junio 2018, 06:46 am
por Ózar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines