Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: carloseow en 24 Noviembre 2009, 06:32 am



Título: Ayuda código de teclas
Publicado por: carloseow en 24 Noviembre 2009, 06:32 am
Hola, quisiera que por favor alguien pudiera ayudarme con el siguiente código.

Quiero hacer un programita que haga lo siguiente:

Compruebe si se presionó una tecla y si así es que devuelva el valor ascii de la tecla presionada, de lo contrario devuelva 0.

Este es el código que tengo, pero no logro capturar el valor y retornar el código ascii de las flechas del teclado.

Código
  1. org 100h
  2.  
  3. mov ah, 11h
  4. int 16h
  5. je pre_salir
  6.  
  7. lee_tecla:
  8. mov ah,8h
  9. int 21h
  10. cmp al,0 ;si no es tecla extendida
  11. jnz salir ;salir
  12. lee_tecla_extendida:
  13. int 21h
  14. jmp salir
  15.  
  16. pre_salir:
  17. mov al,0
  18.  
  19. salir:
  20. mov ah,4ch
  21. int 21h
  22.  
  23.  


Para probarlo ejecuto el programa en un loop de batch así:

Código
  1. @echo off
  2. :ini
  3. programa.com
  4. echo.%errorlevel%
  5. goto ini
  6.  

Por favor, si alguien me ayuda con la parte de ensamblador se lo agradecería.


Título: Re: Ayuda código de teclas
Publicado por: Иōҳ en 26 Noviembre 2009, 02:20 am
Usa una API GetAsyncKeyState

Código:
while (true){
if((BYTE)GetAsyncKeyState(0x31)) //1
{
////si presiono la tecla 1 me encuentra :D
//// si no compruebas al que te tiene q devolver cero
}
else
__asm {
push 0
pop eax
//aunq creo q esto sta demas pero no lo he provado :S n_n
}

}


Título: Re: Ayuda código de teclas
Publicado por: carloseow en 26 Noviembre 2009, 07:43 am
Gracias, al final no pude hacerlo de 16 bits, pero lo solucioné con la idea que me diste de hacerlo con el api de windows.


Título: Re: Ayuda código de teclas
Publicado por: YST en 26 Noviembre 2009, 13:58 pm
Si quieres hacerlo con la api de windows mira esto para hacerlo mediante hook

http://foro.elhacker.net/analisis_y_diseno_de_malware/srcasm_base_server_keylogger-t262500.0.html

Mas rato ( si no se me olvida :xD ) te paso el codigo que esto mismo se lo tube que hacer a nakp :P


Título: Re: Ayuda código de teclas
Publicado por: carloseow en 26 Noviembre 2009, 14:32 pm
Gracias, al final lo hice en c, pero cómo usé el Tiny C para compilarlo, el ejecutable me quedó de 1,8 KB, así qué es como si prácticamente lo hubiese hecho en asm.






Título: Re: Ayuda código de teclas
Publicado por: [L]ord [R]NA en 27 Noviembre 2009, 04:45 am
Gracias, al final lo hice en c, pero cómo usé el Tiny C para compilarlo, el ejecutable me quedó de 1,8 KB, así qué es como si prácticamente lo hubiese hecho en asm.

En ASM si lo haces llamando las librerias desde codigo pudo haber quedado de unos 900bytes


Título: Re: Ayuda código de teclas
Publicado por: Eternal Idol en 27 Noviembre 2009, 07:56 am
Con VC++ tambien ... es cuestion de saber las opciones de las herramientas que usemos ...


Título: Re: Ayuda código de teclas
Publicado por: Иōҳ en 27 Noviembre 2009, 16:13 pm
Código
  1. invoke Sleep, 100
  2. invoke GetAsyncKeyState, VK_F1
  3. cmp eax, 0
  4. jz <ATUCODIGO>

aqui tenes una idea, de como podes usarlo :D

Una acotacion que compilador estas usando por que lo tuyo es de 16bits, y es obsoleto   :o


Título: Re: Ayuda código de teclas
Publicado por: YST en 27 Noviembre 2009, 19:41 pm
Una acotacion que compilador estas usando por que lo tuyo es de 16bits, y es obsoleto   :o

Si no me equivoco es FASM , en el mismo fasm de 32 bits puedes crear .com no es que el ensamblador sea de 16 bits solamente :P


Título: Re: Ayuda código de teclas
Publicado por: carloseow en 27 Noviembre 2009, 20:07 pm
La verdad es que no me manejo mucho con el ensamblador. Al final el ejecutable quedó de 1,3 KB, tengo el código en c. Si alguien estuviera dispuesto a ayudarme y traducir el código en c a ensamblador, para comparar los tamaños resultantes, posteo el código.

Ah, y Eternal ¿podrías decirme con qué opciones se puede configurar el VC++ para que cree ejecutables pequeños?



Título: Re: Ayuda código de teclas
Publicado por: Eternal Idol en 27 Noviembre 2009, 20:19 pm
Ahi va un ejemplo:
http://foro.elhacker.net/programacion_cc/reducir_mas_el_tamano-t254118.0.html

Busca la opciones del enlazador que se usan, hay mas hilos con ejemplos.


Título: Re: Ayuda código de teclas
Publicado por: carloseow en 27 Noviembre 2009, 22:10 pm
Muchas gracias Eternal, ahora quedó pesando 624 bytes.

Dentro del archivo dice: MSVCR90.dll
y cuando lo abro me dice que no encuentra la dll, así es que con un editor se lo cambié por:
MSVCRT.dll

y funciona bien.

Pero tengo un pequeño problemita, me salta el antivirus con ambos .exe de 624 bytes.

¿Cómo podría corregir este problema?





Título: Re: Ayuda código de teclas
Publicado por: Eternal Idol en 27 Noviembre 2009, 23:08 pm
Si es por el tamaño ... ¿Usando un mejor antivirus?  :xD Si es por lo que usas tal vez usando GetProcAddress en lugar importar las funciones estaticamente ...