Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: byway en 25 Mayo 2013, 02:28 am



Título: cambiar pulsacion de teclado
Publicado por: byway en 25 Mayo 2013, 02:28 am
Hola, tal como el titulo menciona me gustaria aprender como cambiar la pulsacion del teclado.

encontre un programa el cual esta en la red, hecho en asm compilado con MASM32 es un cheat para un juego online el gunbound, el cheat es algo viejo.. solo me gustaria saber como cambiarle, modificar la opcion de que se muestre con pulsar otra tecla, este se muestra pulsando la tecla print screen .. me gustaria saber como puedo cambiar eso .. para que se muestre con otra tecla como por ejemplo control.
estuve revisando su codigo y bueno no se nada de asm ... se un poco de visual basic, con lo cual me sirve para ver la estructura.

Publico este post para que alguien que domine este lenguaje me exlpique algo.

esto es parte del codigo principal:

Código
  1.  
  2. .586
  3. .MODEL FLAT, STDCALL
  4.  
  5. OPTION       CASEMAP : NONE
  6.  
  7. INCLUDE WINAPI.inc
  8.  
  9. INCLUDELIB     KERNEL32.lib
  10. INCLUDELIB     USER32.lib
  11. INCLUDELIB GDI32.lib
  12. INCLUDELIB MSVCRT.lib
  13.  
  14.  
  15. ;MSVCRT functions
  16.  
  17. _ftol       PROTO C: VARARG
  18. _CIpow      PROTO C: VARARG         ; X^Y
  19. _itoa       PROTO C: VARARG
  20. time        PROTO C: VARARG
  21. malloc      PROTO C: VARARG
  22. difftime    PROTO C: VARARG
  23. free        PROTO C: VARARG
  24.  
  25. .DATA?
  26.  
  27. buffer DB 0ffh DUP (?)
  28. angle_buff DB 0ffh DUP (?)
  29.  
  30. .DATA
  31.  
  32. INCLUDE Data1.asm
  33. INCLUDE Data2.asm
  34.  
  35. ;INCLUDE Data1_gps.asm
  36.  
  37.  
  38. wc  = 1
  39. th  = 0
  40.  
  41.  
  42. showmore db 1 ; yep...
  43. server db wc ; default wc
  44. key     db 0ffh
  45. angle   dd 0
  46. angle2   dd 0
  47. power dd 0
  48.  
  49. angle_str   db "W.Power: %.2i",0
  50. angle_str2   db "W.Angle: %.3i",0
  51. power_str   db "Power: %.3i",0
  52.  
  53. dragonbot_ini db ".\dragonbot.ini",0
  54. default_wc db "wc",0
  55. default_th db "th",0
  56. section db "Settings",0
  57. keyname2 db "Info",0
  58. keyname1 db "Server",0
  59.  
  60. .CODE
  61.  
  62. EntryPoint:
  63.  
  64. ;invoke GetPrivateProfileStringA,offset section,offset keyname1,offset default_wc,offset buffer,0ffh,offset dragonbot_ini
  65. ;invoke CharLowerA,offset buffer
  66. ;invoke lstrcmpA,offset default_th,offset buffer
  67. ;.if eax==0
  68. ; mov server,th
  69. ;.endif
  70.  
  71. ;invoke GetPrivateProfileStringA,offset section,offset keyname2,offset default_wc,offset buffer,0ffh,offset dragonbot_ini
  72. ;invoke CharLowerA,offset buffer
  73. ;.if byte ptr[buffer]=="1"
  74. ; mov showmore,1
  75. ;.endif
  76.  
  77.  
  78.    INCLUDE WinMain.asm
  79.  
  80.  
  81. ;--- Pixel functions (WC)
  82.  
  83.    INCLUDE Get_Enemy_XY.asm
  84.    INCLUDE Get_XY.asm
  85.    INCLUDE Get_Wind_Speed.asm
  86.    INCLUDE Get_Wind_Angle.asm
  87.  
  88.    INCLUDE Get_Angle.asm
  89.  
  90. ;--- Pixel functions (TH) ; from DragonBot 8.x
  91.  
  92.    ;INCLUDE getenemyxy_gps.asm    
  93.    ;INCLUDE getselfxy_gps.asm
  94.    ;INCLUDE getwindspeed_gps.asm
  95.    ;INCLUDE getwindangle_gps.asm
  96.    ;INCLUDE getangle_gps.asm
  97.  
  98. ;--- Draw functions (Shared)
  99.  
  100.   INCLUDE Draw3.asm      ; aid lines
  101.   INCLUDE Draw0.asm      ; trace
  102.   INCLUDE Draw1.asm      ; slot lines
  103.   INCLUDE Draw2.asm      ; mobile
  104.  
  105.  
  106.   INCLUDE Get_Power.asm
  107.  
  108.  
  109. END EntryPoint
  110.  

viendo parte del codigo vi uno donde menciona en comentarios esta api en winmain.asm (dentro del zip) presumo pueda ser alli:

Código
  1. mov     edi, ds:GetAsyncKeyState

el codigo completo:

http://crystian.comxa.com/dbwc1_asm.rar (http://crystian.comxa.com/dbwc1_asm.rar)
para quienes responderan que estudie y revise mas sobre ensamblador ... si estuve revisando y le veo interesante ... pero no le entiendo. ;D


Título: Re: cambiar pulsacion de teclado
Publicado por: MCKSys Argentina en 25 Mayo 2013, 04:57 am
Fijate en WinMain.asm, linea 382:

Código
  1.                push    2Ch
  2.                call    ds:GetAsyncKeyState
  3.  

El valor 2Ch (valor en Hexa, osea en VB seria &H2C) corresponde a la tecla PRINT SCREEN. Cambiando ese valor, cambias la tecla.
Por las dudas, listado de valores completo: http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx)

Saludos!


Título: Re: cambiar pulsacion de teclado
Publicado por: byway en 26 Mayo 2013, 01:56 am
Fijate en WinMain.asm, linea 382:

Código
  1.                push    2Ch
  2.                call    ds:GetAsyncKeyState
  3.  

El valor 2Ch (valor en Hexa, osea en VB seria &H2C) corresponde a la tecla PRINT SCREEN. Cambiando ese valor, cambias la tecla.
Por las dudas, listado de valores completo: http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx (http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx)

Saludos!

Gracias por responder, efectivamente si es lo que me indicas ya lo comprobe, lo cambie por otro ... pero este no muestra nada si no se presiono antes la tecla print screen, al parecer dentro de las funciones de dibujado (draw) esta codeado asi con la misma tecla, y aprovecha eso para que con la misma pulsacion haga todo.

En fin ahora ya se que se puede cambiar y cual es el codigo para esto.

ahora trato de compilar ese codigo como dll ... estoy revisando al respecto y planteare mis dudas en otro post.

Saludos.