elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Problema para pasar un codigo de MASM a FASM
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema para pasar un codigo de MASM a FASM  (Leído 4,642 veces)
ZoNike

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Problema para pasar un codigo de MASM a FASM
« en: 27 Octubre 2009, 03:59 am »

Hola, tengo un problema para traducir un codigo en MASM a FASM.
El codigo es parte de una DLL que inyecto en otro proceso.
(Sirve para llamar a la funcion PostMessage de la libreria user32.dll en ejecutables protegidos con GameGuard)

Codigo en MASM:
Código
  1. Pulsacion proc
  2. LOCAL wParam1:DWORD
  3. LOCAL lParam1:WORD
  4.  
  5. mov wParam1,VK_SPACE ;Tecla a Pulsar
  6. invoke MapVirtualKey, wParam1,0
  7. mov lParam1, ax ; Mapeo virtual de la tecla y movemos los dos ultimos bytes a lParam1
  8.  
  9. invoke PostMessageX, hWnd, WM_KEYDOWN, wParam1, lParam1 ; Pulsacion virtual, Tecla en estado presionado.
  10. invoke PostMessageX, hWnd, WM_KEYUP, wParam1, lParam1 ; Pulsacion virtual , tecla en estado de reposo.
  11.  
  12. ret
  13.  
  14. Pulsacion endp
  15.  
  16. PostMessageX proc W:DWORD, X:DWORD, Y:DWORD, Z:DWORD
  17. option prologue:none
  18. option epilogue:none
  19.  
  20. push ebp ; Trampolin
  21. mov ebp, esp
  22. jmp Salto; El resultado va hacia salto donde tenemos ya guardada nuestro handle del "PostMessage"
  23.  
  24. PostMessageX endp


Mi traducción del código a FASM:
Código
  1. proc Pulsar
  2.  locals
  3.    wParam1 dd ?
  4.    lParam1 dw ?
  5.  endl
  6.  
  7.  mov [wParam1],VK_SPACE
  8.  invoke MapVirtualKey,[wParam1],0
  9.  mov [lParam1],ax
  10.  
  11.  stdcall PostMessageX,[hwnd],WM_KEYDOWN,[wParam1],[lParam1]      ; EL PROBLEMA ESTA AQUÍ
  12.  stdcall PostMessageX,[hwnd],WM_KEYUP,[wParam1],[lParam1]           ; EL PROBLEMA ESTA AQUÍ
  13.  
  14.  ret
  15. endp
  16.  
  17. proc PostMessageX W,X,Y,Z
  18.  push ebp
  19.  mov ebp,esp
  20.  jmp [Func]
  21. endp


Gracias.


« Última modificación: 27 Octubre 2009, 14:22 pm por ZoNike » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema para pasar un codigo de MASM a FASM
« Respuesta #1 en: 27 Octubre 2009, 07:58 am »

No decis cual es el problema y solo dejas fragmentos del codigo ...

Supongo que la cosa vendra de no poner nada equivalente a esto:
Código
  1. option prologue:none
  2. option epilogue:none

Si FASM genera las instrucciones del prologo entonces los parametros que le pases a PostMessage seran erroneos. Si esto es asi y no podes omitir el prologo y el epilogo de alguna manera simplemente podes usar una etiqueta y pushs + calls.


En línea

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
ZoNike

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Problema para pasar un codigo de MASM a FASM
« Respuesta #2 en: 28 Octubre 2009, 03:24 am »

hola, gracias por tu respuesta.
y, ¿como puedo omitir el prologo y el epilogo? o ¿como puedo hacerlo de la otra forma?
gracias.

edito el mensaje:
He encontrado estas macros en "FASM\Include\proc32.inc", pero no sé como usarlas.

Código
  1. prologue@proc equ prologuedef
  2.  
  3. macro prologuedef procname,flag,parmbytes,localbytes,reglist
  4. { local loc
  5.   loc = (localbytes+3) and (not 3)
  6.   parmbase@proc equ ebp+8
  7.   localbase@proc equ ebp-loc
  8.   if parmbytes | localbytes
  9.    push ebp
  10.    mov ebp,esp
  11.    if localbytes
  12.     sub esp,loc
  13.    end if
  14.   end if
  15.   irps reg, reglist \{ push reg \} }
  16.  
  17. epilogue@proc equ epiloguedef
  18.  
  19. macro epiloguedef procname,flag,parmbytes,localbytes,reglist
  20. { irps reg, reglist \{ reverse pop reg \}
  21.   if parmbytes | localbytes
  22.    leave
  23.   end if
  24.   if flag and 10000b
  25.    retn
  26.   else
  27.    retn parmbytes
  28.   end if }
« Última modificación: 28 Octubre 2009, 03:38 am por ZoNike » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema para pasar un codigo de MASM a FASM
« Respuesta #3 en: 28 Octubre 2009, 07:55 am »

Asi te decia:
Código
  1. PostMessageX:
  2. push ebp ; Trampolin
  3. mov ebp, esp
  4. jmp Salto; El resultado va hacia salto donde tenemos ya guardada nuestro handle del "PostMessage"

Lo unico es que vas a tener que usar push's + call's en lugar de stdcall.
En línea

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
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: Problema para pasar un codigo de MASM a FASM
« Respuesta #4 en: 2 Noviembre 2009, 02:17 am »

En fasm podria ocupar perfectamente la macro stdcall y no necesita usar los push y call :P
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Descifrar codigo - para pasar el tiempo
Criptografía
hunter18 4 8,177 Último mensaje 9 Mayo 2011, 19:39 pm
por xass
[Tutorial] Configurar RadAsm + MASM|FASM|NASM|TASM
ASM
x64core 9 18,825 Último mensaje 8 Junio 2012, 09:19 am
por TomaSs
Ensamblar con MASM codigo DOS
ASM
x64core 3 4,268 Último mensaje 30 Noviembre 2011, 23:07 pm
por Eternal Idol
problema con masm para 64bits
ASM
Belial & Grimoire 4 4,877 Último mensaje 8 Agosto 2013, 20:35 pm
por x64core
Problema winexec y rmdir MASM
ASM
.:UND3R:. 2 2,780 Último mensaje 26 Mayo 2014, 17:36 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines