Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - saawyeer

#1
Hola un gran saludo de antemano, mi problema es que no estoy muy familiarizado con los entornos gráficos solo he programado en terminal. Actualmente estoy trabajando con los proyectos que poseen las ventanas ya creadas en c++ Builder  XE3 y necesito mover el form ya sea desde el evento onMouseDown, he buscado información pero no lo he podido conseguir.

Avísenme si estoy mal, tengo primero que llamar a la función:
BOOL ReleaseCapture(void);   
y luego enviar el mensaje con la función:
LRESULT WINAPI SendMessage(
  _In_  HWND hWnd,
  _In_  UINT Msg,
  _In_  WPARAM wParam,
  _In_  LPARAM lParam
);


agradecería mucho de su ayuda, un gran saludo que tengan un buen día!
#2
Bueno tengo el siguiente problema, he realizado con éxito un salto (jmp) en una dirección de un proceso:


DWORD dwDireccion = 0x00692B0C;

__declspec( naked ) void asmSalto() {
 __asm
   {
   mov eax, dwDireccion
   jmp Direccion
   }
}


Se inyectan correctamente las instrucciones pero acá esta mi problema, las instrucciones originales de la dirección antes de ser inyectadas eran 6 bytes en la memoria pero con la inyección anterior equivale a mas de 6 bytes, lo que origina que se cuelgue el programa:

Instrucciones originales de 6 bytes:
0042276B - 29 83 64 04 00 00        - sub [ebx+00000464],eax

Se podría hacer con un simple salto; Pero da error el copilador, se vería en memoria asi:

__asm
{
   jmp 0x00692B0C
}


Son solo 5 bytes en la memoria le agregamos 1 mas con un nop y tendríamos el salto correctamente:

00540967  - E9 A0 21 15 00           - jmp 00692B0C
0054096C  - 90                       - nop



Hay alguna forma de hacer el salto sin ocupar mas de 6 bytes? Agradecería mucho sus respuestas o comentarios.