Autor
|
Tema: [Ayuda!]Problema con procedimientos Irvine (Leído 14,020 veces)
|
.:UND3R:.
|
Hola a todos tengo el siguiente código que quiero lograr hacerlo funcionar, pero no hay caso, lo único que quiero es que me muestre en consola el mensaje hola a todos utilizando el archivo de inclusión Irvine32.inc (Aun no prefiero utilizar las APIS de MS-Windows), al internarlo iniciar solo se cierra y no muestra nada. TITLE Pruebas INCLUDE c:\masm32\include\Irvine32.inc INCLUDELIB c:\masm32\lib\kernel32.lib INCLUDELIB c:\masm32\lib\Irvine32.lib INCLUDELIB c:\masm32\lib\User32.lib .data TEXT1 BYTE "Hola a todos",0 .code main PROC mov edx,OFFSET TEXT1 call WriteString exit main ENDP END main
Aclaro que el procedimiento WriteString se encarga de escribir una cadena en consola, requiere un solo parámetro que es el OFFSET de la cadena a mostrar. Debuggeando he notado que que el error aparece retornando de la call y en last error me muestra lo siguiente: ERROR_INVALID_HANDLEPor lo que deduzco que el manejador de la consola (lugar en donde se mostrará la cadena) es invalido, creo que retorna 0, mi duda es como solucionar esto ya que el mismo error ocurre cuando llamo al procedimiento DumpRegs (también perteneciente a la biblioteca de enlace de Irvine32.lib Como soluciono esto? Saludos PD: he intentado iniciarlo desde la consola y con doble clic pero ninguno me muestra el mensaje EDIT: he notado que por lo general cuando depuro programas que utilizan la consola para mostrar información o pedirla (E/S) estos estando detenidos en el EP ya me muestra la consola pero sin ningún contenido en OllyDBG pero en este caso con el programa que he ensamblado y posteriormente enlazado no me carga estando detenido en el EP
|
|
« Última modificación: 30 Noviembre 2011, 18:07 pm por .:UND3R:. »
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
_Enko
|
Cual es la ventaja de agregar a este tal "Kip Irvine" a tus programas? digo, porque muy lindo no es Ese tal Irvine.inc de seguro que utiliza la Api de Consola de Windows, que no es nada complicada: http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073(v=vs.85).aspx Y si no quieres usar la api de windows directamente, siempre tienes la opcion de usar la C Runtime. invoke printf, szFormat, szStr
y antes haces los includes msvcrt.inc o parecidos Saludos.
|
|
« Última modificación: 29 Noviembre 2011, 20:46 pm por _Enko »
|
En línea
|
|
|
|
.:UND3R:.
|
Te pido paciencia yo también deseo utilizar las apis de windows directamente pero voy siguiendo al pie de la letra el libro, pero mi problema es ese. podrías decirme como solucionarlo. Muchas gracias PD: no hes muy atractivo que digamos pero sabe algo de programación
|
|
« Última modificación: 29 Noviembre 2011, 20:51 pm por .:UND3R:. »
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
_Enko
|
La libreria irvine es stdcall o fastcall?
mucho no te puedo ayudar, no lei el libro...
Si sigues el libro a pie de letra, es cuestion de hacer buen copy past. La unica alternativa que se me ocurre es no seguir el libro a pie de letras. Tomalo como una prueba anti copy past.
|
|
« Última modificación: 29 Noviembre 2011, 21:22 pm por _Enko »
|
En línea
|
|
|
|
.:UND3R:.
|
La libreria irvine es stdcall o fastcall?
mucho no te puedo ayudar, no lei el libro...
Si sigues el libro a pie de letra, es cuestion de hacer buen copy past. La unica alternativa que se me ocurre es no seguir el libro a pie de letras. Tomalo como una prueba anti copy past.
Eso es chino para mi, de todas formas te adjunto un autoextraible: http://kipirvine.com/asm/examples/index.htmExample programs and link library source code for Visual Studio 2005 a ver si le puedes hechar una mirada por favor, quiero avanzar Saludos
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
_Enko
|
por lo que veo, usa "irvinecall" o como se le ha cantado. Pasas el unico parametro que lleva en EDX que es lo que estas haciendo, y por lo que pude ver deberia funcionar. no te recomiendo enroscarte mucho con esa libreria... es un asco, la convencion de llamada es ridicula.... No se como pretende enseñar usar luego la winapi (98% stdcall) con su libreria riducula 50% "irvinecall". .data caption db "Dialog Title", 0 HelloMsg BYTE "This is a pop-up message box.", 0dh,0ah BYTE "Click OK to continue...", 0 .code main PROC mov ebx,OFFSET caption ; caption mov edx,OFFSET HelloMsg ; contents call MsgBox exit main ENDP END main
Y su codigo de ejemplo tambien le falla, "caption" con minuscula, pero "HelloMsg" con mayuscula... onda, elige un estilo y respetalo.
|
|
« Última modificación: 29 Noviembre 2011, 22:30 pm por _Enko »
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
@_Enko mira yo tengo una pregunta msgbox es una funcion de la libreria irvine32 no entonces revise el archivo irvine32.inc entonces ahi aparecia: MsgBox PROTO pero se supone que es una funcion... y el codigo que hace que muestre ese msgbox? no me digais que esta en el irvine32.lib ?
|
|
« Última modificación: 29 Noviembre 2011, 22:46 pm por RHL »
|
En línea
|
|
|
|
_Enko
|
archivos lib los usa el linker para enlazar tu ejecutable con las funciones. Son librerias estaticas.
los inc, son los prototipos de las funciones que tiene esa libreria para que el ensamblador sepa que es lo que estas usando y derive el trabajo al linker.
MsgBox seria una META funcion, funcion de segundo grado... llamala como quieras.
La funcion original es MessageBoxA/W de user32, lo que hace MsgBox es llamar a la funcion de la winapi original. (de seguro que lugo hay uno que otro nivel mas, pero dejemoslo ahi)
Saludos.
|
|
« Última modificación: 29 Noviembre 2011, 23:10 pm por _Enko »
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
oh ya entendi pero para eso uso de una vez la de winapi que señor....
|
|
|
En línea
|
|
|
|
.:UND3R:.
|
por lo que veo, usa "irvinecall" o como se le ha cantado. Pasas el unico parametro que lleva en EDX que es lo que estas haciendo, y por lo que pude ver deberia funcionar. no te recomiendo enroscarte mucho con esa libreria... es un asco, la convencion de llamada es ridicula.... No se como pretende enseñar usar luego la winapi (98% stdcall) con su libreria riducula 50% "irvinecall". .data caption db "Dialog Title", 0 HelloMsg BYTE "This is a pop-up message box.", 0dh,0ah BYTE "Click OK to continue...", 0 .code main PROC mov ebx,OFFSET caption ; caption mov edx,OFFSET HelloMsg ; contents call MsgBox exit main ENDP END main
Y su codigo de ejemplo tambien le falla, "caption" con minuscula, pero "HelloMsg" con mayuscula... onda, elige un estilo y respetalo. Hola _Enko gracias por la info, en cuanto a MsgBox no tengo problemas el problema se debe a cuando intento llamar a DumpRegs o a WriteString, WriteDecimal bueno DumpRegs se encarga de devolver los registros de propósito general de 32 bits en la salida (Consola) mientras que WriteString se encarga de devolver en la consola una cadena de texto, si pudieras ayudarme te lo agradecería mucho, pues pretendo continuar, muchísimas gracias
|
|
|
En línea
|
Solicitudes de crack, keygen, serial solo a través de mensajes privados (PM)
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
SQL Server - Procedimientos almacenados y permisos - AYUDA
Bases de Datos
|
NetStorm
|
2
|
7,782
|
13 Noviembre 2010, 15:30 pm
por NetStorm
|
|
|
MOVIDO: SQL Server - Procedimientos almacenados y permisos - AYUDA
.NET (C#, VB.NET, ASP)
|
[D4N93R]
|
0
|
1,914
|
10 Noviembre 2010, 22:46 pm
por [D4N93R]
|
|
|
[Solucionado]Problemas al enlazar (Irvine)
« 1 2 »
ASM
|
.:UND3R:.
|
11
|
12,653
|
29 Noviembre 2011, 21:42 pm
por x64core
|
|
|
Problema al obtener estructura de procedimientos en mysql con php
PHP
|
1mpuls0
|
0
|
1,771
|
26 Enero 2012, 02:59 am
por 1mpuls0
|
|
|
AYUDA con procedimientos en pascal
Ejercicios
|
joseanh
|
0
|
2,619
|
30 Junio 2013, 03:10 am
por joseanh
|
|