Ayuda código de teclas

Iniciado por carloseow, 24 Noviembre 2009, 06:32 AM

0 Miembros y 2 Visitantes están viendo este tema.

carloseow

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 (asm) [Seleccionar]

org 100h

mov ah, 11h
int 16h
je pre_salir

lee_tecla:
mov ah,8h
int 21h
cmp al,0 ;si no es tecla extendida
jnz salir ;salir
lee_tecla_extendida:
int 21h
jmp salir

pre_salir:
mov al,0

salir:
mov ah,4ch
int 21h




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

Código (dos) [Seleccionar]

@echo off
:ini
programa.com
echo.%errorlevel%
goto ini


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

Иōҳ

Usa una API GetAsyncKeyState

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
}

}
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

carloseow

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.

YST

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


Yo le enseñe a Kayser a usar objetos en ASM

carloseow

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.





[L]ord [R]NA

Cita de: 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.

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

Eternal Idol

Con VC++ tambien ... es cuestion de saber las opciones de las herramientas que usemos ...
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

Иōҳ

#7
Código (asm) [Seleccionar]
invoke Sleep, 100
invoke GetAsyncKeyState, VK_F1
cmp eax, 0
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
Eres adicto a la Ing. Inversa? -> www.noxsoft.net

YST

Cita de: NoxOner en 27 Noviembre 2009, 16:13 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


Yo le enseñe a Kayser a usar objetos en ASM

carloseow

#9
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?