Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: .:UND3R:. en 29 Noviembre 2011, 18:15 pm



Título: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 18:15 pm
Hola a todos, bueno les cuento estoy con IDE RadASM, poseo el siguiente código:

Código
  1. TITLE Pruebas
  2. INCLUDE c:\masm32\include\Irvine32.inc
  3.  
  4. .data
  5. origen byte 10h,20h,30h,40h
  6. origen2 byte 12h,34h,56h,78h
  7. .code
  8. main PROC
  9.     mov ax,word PTR [origen]
  10.     mov ax,word PTR [origen2]
  11.     call DumpRegs
  12.     exit
  13. main ENDP
  14. END main

Cuando coloco TOOLS->MASM32->BUILD

el código de objeto se genera sin ningún problema, pero en cuanto se quiere enlazar las bibliotecas de enlace me marca el siguiente error:
Código:
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

prueba2.obj : error LNK2001: unresolved external symbol _ExitProcess@4
prueba2.obj : error LNK2001: unresolved external symbol _DumpRegs@0
prueba2.exe : fatal error LNK1120: 2 unresolved externals
_
Link error
Presione una tecla para continuar . . .

En cuanto uso la bibliotecas de enlace de MS-Windows (kernel32.lib) y el INCLUDE kernel32.inc no tengo problema alguno.

Lo que poseo dentro de c:\masm32\include\ y \lib\ es lo siguiente:
Código:
SmallWin.inc
Irvine32.inc
Irvine16.inc
Irvine36.lib
Irvine16.lib
kernel32.lib

He intentado colocar las correspondientes lib en el path include (junto con las .inc) y en lib las include (junto con las .lib correspondientes)

y de ninguna forma consigo poder generar el ejectuable, si alguien me pudiera decir como se puede ensamblar y enlazar el codigo que adjunté se lo agradecería
entiendo que la librebría Irvine son parte de un libro pero las utilizo por que me estoy iniciando en la programación ASM

Muchas gracias

Solución se deben incluir las siguientes librerías:
Código
  1. INCLUDELIB c:\masm32\include\Irvine32.lib
  2. INCLUDELIB c:\masm32\include\Kernel32.lib
  3. INCLUDELIB c:\masm32\include\User32.lib

esta se colocan después de INCLUDE c:\masm32\include\Irvine32.inc

¿El porqué?
El motivo se da que en el libro se utiliza Irvine32.inc este archivo contiene prototipos de procedimientos de la biblioteca Irvine32.lib y esta biblioteca se encarga de enlazarse con Kernel32.lib y User32.lib dependiendo del procedimiento.

El primer error ocurrió debido a que exit es equivalente a la API MS-Windows ExitProcess que corresponde a la biblioteca de vínculos dinámicos (Kernel32.lib)
como no estaba incluida ocasionaba el error. En cuanto a DumpRegs ocurrió debido a que no estaba incluida la librería Irvine32.lib

El segundo error ocurrió luego de agregar ambas librerías MessageBox que está dentro de la librería de enlace irvine32.lib esta se enlaza con user32.lib para mostrar mensajes y como no estaba incluida ocasionó el segundo error.






Título: Re: Problemas al enlazar (Irvine)
Publicado por: Eternal Idol en 29 Noviembre 2011, 18:45 pm
Despues del include:
Código
  1. includelib c:\masm32\lib\kernel32.lib
  2. includelib c:\masm32\lib\Irvine32.lib


Título: Re: Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 18:53 pm
Creo que es un avance:
Código:
 Assembling: C:\DOCUME~1\ADMINI~1\ESCRIT~1\prueba2.asm
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Irvine32.lib(Irvine32.obj) : error LNK2001: unresolved external symbol _MessageBoxA@16
prueba2.exe : fatal error LNK1120: 1 unresolved externals
_
Link error
Presione una tecla para continuar . . .


Título: Re: Problemas al enlazar (Irvine)
Publicado por: Eternal Idol en 29 Noviembre 2011, 19:45 pm
MessageBox function (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx).

Library
User32.lib

DLL
User32.dll


Título: Re: Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 19:49 pm
MessageBox function (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx).

Library
User32.lib

DLL
User32.dll
efectivamente había que incluir la biblioteca de enlace USER32.lib para su funcionamiento así lo solucioné gracias de todas formas
Saludos


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: Eternal Idol en 29 Noviembre 2011, 20:15 pm
¿Gracias de todas formas que? Si te dije todo lo que tenias que hacer  :xD


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 20:32 pm
¿Gracias de todas formas que? Si te dije todo lo que tenias que hacer  :xD
La segunda no (user32.lib) por que mientras editaba el post me lo respondiste xD

Saludos


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: _Enko en 29 Noviembre 2011, 20:43 pm
Cual es la ventaja de agregar a este tal "Kip Irvine" a tus programas?
(http://kipirvine.com/asm/images/Irvine3.jpg)

digo, porque muy lindo no es :silbar: ;-)


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 20:48 pm
Cual es la ventaja de agregar a este tal "Kip Irvine" a tus programas?
(http://kipirvine.com/asm/images/Irvine3.jpg)

digo, porque muy lindo no es :silbar: ;-)

Efectivamente ya había visto la foto, estoy en desconformidad en cuanto a la enseñanza del libro ya que estoy en el capítulo 5 y comentan que en el 11 se empezarán a utilizar la apis de MS-Windows  :o , lo cual me desespera, sinceramente no le encuentro mucha utilidad de que me acostumbren a usar unas call por así decirlo fáciles en comparación a los parámetros que utiliza las de MS-Windows, pero como me he comprado el libro no puedo desperdiciar tal ahorro.


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: x64core en 29 Noviembre 2011, 20:51 pm
:D andale .:UND3R:. si has avanzado en el libro ya me voy quedando bien atras x3
yo me e quedado en el capitulo 3 :P ahora le dedicare tiempo y llegare al 4 si es posible :)


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: .:UND3R:. en 29 Noviembre 2011, 20:53 pm
:D andale .:UND3R:. si has avanzado en el libro ya me voy quedando bien atras x3
yo me e quedado en el capitulo 3 :P ahora le dedicare tiempo y llegare al 4 si es posible :)

Excelente, de todas formas ya cada vez me voy decepcionando del libro con sus errores y metodologías de enseñar, Saludos

PD: ve a msn


Título: Re: [Solucionado]Problemas al enlazar (Irvine)
Publicado por: x64core en 29 Noviembre 2011, 21:42 pm
yo tambien tube problemas  :-\
me baje las librerias de ese señor y las puse con las demas para mas comodidad:



TITLE Pruebas
INCLUDE \masm32\include\Irvine32.inc

INCLUDELIB \masm32\lib\Irvine32.lib
INCLUDELIB \masm32\lib\Kernel32.lib
INCLUDELIB \masm32\lib\User32.lib


por cierto .:UND3R:. lo que escribiste fue:

TITLE Pruebas
INCLUDE \masm32\include\Irvine32.inc

INCLUDELIB \masm32\include\Irvine32.lib
INCLUDELIB \masm32\include\Kernel32.lib
INCLUDELIB \masm32\include\User32.lib
 
pero los las librerias no estan en la carpeta de prototipos :P o no se como tenes tu masm32 :P
por eso nose, mas que ya me confundi :xD y lo peor es que lo logre ensamblar y todo y me lo
detecto mi AV :xD

por cierto tambien .:UND3R:. no tenes el CD que viene con el libro? :P
por me imagino que ahi deben de venir los ejemplos y todo, yo porque lo tengo virtual :P