comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Como usar stdin en ensamblador?

  • 3 Respuestas
  • 1328 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 120
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil
« en: Julio 14, 2013, 02:12:28 pm »
bueno, vengo con otra duda

estoy tratando de hacer un ejercicio usando fgets para escribir en consola pero despues del primer printf se termina la ejecucion y no se ejecuta la funcion fgets(), verifique con ollydbg y en los parametros me aparece

stream = NULL

lo que me imagino que ese es el problema de porque no se detiene la ejecucion para escribir en consola

ya intente usar

extern _stdin
%define stdin 0
STDIN equ 0

y siempre me aparece como null, ¿alguien sabe como puedo poner en stream "stdin", para poder escribir en consola con fgets(), estoy haciendolo en nasm con gcc, espero alguien sepa algo

salu2
« Última modificación: Agosto 27, 2014, 08:58:52 pm por Expermicid »

Desconectado Arkangel

  • *
  • Underc0der
  • Mensajes: 15
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Julio 14, 2013, 03:48:28 pm »
Mira las definiciones que hay en C

Segun Vc++ se definen  asi:
Código: C
  1. /* Declare _iob[] array */
  2.  
  3. #ifndef _STDIO_DEFINED
  4. _CRTIMP FILE * __cdecl __iob_func(void);
  5. #endif  /* _STDIO_DEFINED */
  6.  
  7. #define stdin  (&__iob_func()[0])
  8. #define stdout (&__iob_func()[1])
  9. #define stderr (&__iob_func()[2])
  10.  
  11.  

Basicamente tienes que exportar ese array de msvcrt.dll y sacar de hay las estructuras FILE

Saludos

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 120
  • Actividad:
    3.33%
  • Reputación 0
    • Ver Perfil
« Respuesta #2 en: Julio 14, 2013, 04:02:05 pm »
mmm, creo todavia es algo complicado para mi, apenas estoy haciendo ejercicios en asm para acostumbrarme, pero investigare sobre ese array en asm

dejo el codigo que tengo, a lo mejor hay mas errores y por eso no me funciona, mientras investigare lo que mencionas

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
[BITS 32]

section .data
cual: db 'Cual es tu nombre?',0
STDIN equ 0

section .bss

buf: resb 64
lent: equ $-buf

section .text

global _WinMain@16
extern _printf
extern _fgets
extern _stdin
extern _ExitProcess@4

_WinMain@16:

push cual
call _printf
add esp, 4

push STDIN
push lent
push buf
call _fgets

push 0
call _ExitProcess@4
ret 16

Desconectado binary_death

  • *
  • Underc0der
  • Mensajes: 18
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #3 en: Agosto 31, 2013, 06:25:14 pm »
Para obtener el handle:

Código: ASM
  1. invoke  GetStdHandle, STD_INPUT_HANDLE
  2. mov      [std_input], eax
  3.  

Ahora ya puedes trabajar con él.

PD: Lo cierto es que no podrás usar ese handle con fgets, pero es la forma más fácil de hacerlo en Win32 y tienes a tu disposición muchas API's  de lectura y escritura con las que manejarte  ;)
« Última modificación: Agosto 31, 2013, 06:59:11 pm por binary_death »

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 6968
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2178
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 2830
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3408
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon
[SOLUCIONADO] Problem al instalar Windows "cualquier windows"

Iniciado por Made

Respuestas: 7
Vistas: 2928
Último mensaje Septiembre 03, 2012, 04:53:08 pm
por Made