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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre saltos, de apihooking
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre saltos, de apihooking  (Leído 2,444 veces)
SuperNovato

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Duda sobre saltos, de apihooking
« en: 20 Diciembre 2010, 19:12 pm »

en los tutos de mazard para saltar de api a funcionfalsa, y vicerversa se usa el JMP con codigo 0xE9, y se deben hacer una operacion para calcular la distancia relativa y continuar la ejecucion normal de la api hookeada, ¿se podria hacer un salto directo a una direccion en vezde un salto relativo?

es decir en vez de :
JMP - calcular salto relativo a funcion

directamente asi:
JMP - direccion de funcion


En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.082


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Duda sobre saltos, de apihooking
« Respuesta #1 en: 21 Diciembre 2010, 23:36 pm »

Salto jmp absoluto creo que no hay, aunque recuerdo que arkangel me había dicho que sí hay, no sé en que quedó al final. Si quieres hacerlo de forma absoluta puedes hacerlo así, por ejemplo:

Código
  1. push DirAbsoluta
  2. ret
  3.  

o así:

Código
  1. mov eax,DirAbsoluta
  2. jmp eax
  3.  

o cualquier cosa así  :P. En mi ClsHookApi lo hago con push-ret.

Saludos


En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
SuperNovato

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Duda sobre saltos, de apihooking
« Respuesta #2 en: 22 Diciembre 2010, 01:31 am »

gracias zero, estoy viendo tu code, muy bueno.

salu2
En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Duda sobre saltos, de apihooking
« Respuesta #3 en: 22 Diciembre 2010, 05:05 am »

acá tenes unas cuantas variantes:

Código
  1. case DETOUR_TYPE_STC_JC:
  2.        pDirApi[0] = 0xF9;
  3.        pDirApi[1] = 0x0F;
  4.        pDirApi[2] = 0x82;
  5.        *(DWORD*)&pDirApi[3]=(DWORD)(newDirApi-pDirApi)-7;
  6.      break;
  7.      case DETOUR_TYPE_CLC_JNC:
  8.        pDirApi[0] = 0xF8;
  9.        pDirApi[1] = 0x0F;
  10.        pDirApi[2] = 0x83;
  11.        *(DWORD*)&pDirApi[3]=(DWORD)(newDirApi-pDirApi)-7;
  12.      break;
  13.      case DETOUR_TYPE_NOP_NOP_JMP:
  14.        pDirApi[0]=0x90;
  15.        pDirApi[1]=0x90;
  16.        pDirApi[2]=0xE9;
  17.        *(DWORD*)&pDirApi[3]=(DWORD)(newDirApi-pDirApi)-7;
  18.      break;
  19.      case DETOUR_TYPE_PUSH_EAX_RET:
  20.        pDirApi[0]=0xB8;
  21.        *(DWORD*)&pDirApi[1]=(DWORD)newDirApi;
  22.        pDirApi[5]=0x50;
  23.        pDirApi[6]=0xC3;
  24.      break;
  25.      case DETOUR_TYPE_NOP_PUSH_RET:
  26.        pDirApi[0]=0x90;
  27.        pDirApi[1]=0x68;
  28.        *(DWORD*)&pDirApi[2]=(DWORD)newDirApi;
  29.        pDirApi[6]=0xC3;
  30.      break;
  31.      case DETOUR_TYPE_JMP_EAX:
  32.        pDirApi[0]=0xB8;
  33.        *(DWORD*)&pDirApi[1]=(DWORD)newDirApi;
  34.        pDirApi[5]=0xFF;
  35.        pDirApi[6]=0xE0;
  36.      break;
  37.      case DETOUR_TYPE_JMP_JMP:
  38.        pDirApi[-5]=0xE9;
  39.        *(DWORD*)&pDirApi[-4]=(DWORD)(newDirApi-pDirApi);
  40.        pDirApi[0]=0xEB;
  41.        pDirApi[1]=0xF9;
  42.      break;
  43.      case DETOUR_TYPE_PUSH_RET:
  44.        pDirApi[0]=0x68;
  45.        *(DWORD*)&pDirApi[1]=(DWORD)newDirApi;
  46.        pDirApi[5]=0xC3;
  47.      break;
  48.      case DETOUR_TYPE_NOP_JMP:
  49.        pDirApi[0]=0x90;
  50.        pDirApi[1]=0xE9;
  51.        *(DWORD*)&pDirApi[2]=(DWORD)(newDirApi-pDirApi)-6;
  52.      break;
  53.      default://DETOUR_TYPE_JMP
  54.        pDirApi[0]=0xE9;
  55.        *(DWORD*)&pDirApi[1]=(DWORD)(newDirApi-pDirApi)-5;
  56.      break;

y las instrucciones ASM referentes a jmps:

Código
  1. EB cb JMP rel8 Jump short, relative, displacement relative to next instruction.
  2. E9 cw JMP rel16 Jump near, relative, displacement relative to next instruction.
  3. E9 cd JMP rel32 Jump near, relative, displacement relative to next instruction.
  4. FF /4 JMP r/m16 Jump near, absolute indirect, address given in r/m16.
  5. FF /4 JMP r/m32 Jump near, absolute indirect, address given in r/m32.
  6. EA cd JMP ptr16:16 Jump far, absolute, address given in operand.
  7. EA cp JMP ptr16:32 Jump far, absolute, address given in operand.
  8. FF /5 JMP m16:16 Jump far, absolute indirect, address given in m16:16.
  9. FF /5 JMP m16:32 Jump far, absolute indirect, address given in m16:32.

S2
« Última modificación: 22 Diciembre 2010, 05:49 am por Karman » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
videos con saltos
Multimedia
ferdipd 0 1,396 Último mensaje 10 Agosto 2006, 16:01 pm
por ferdipd
Ayuda Hook y ApiHooking « 1 2 »
Programación Visual Basic
Once 10 4,611 Último mensaje 19 Septiembre 2010, 06:52 am
por Once
¿que leer para comprender apihooking e inyecciones?
ASM
SuperNovato 2 3,471 Último mensaje 6 Diciembre 2010, 17:21 pm
por SuperNovato
Consulta sobre condiciones y saltos
ASM
zonahurbana 9 7,216 Último mensaje 18 Mayo 2014, 02:28 am
por xv0
Duda con saltos LOOP
ASM
0xFer 3 2,497 Último mensaje 20 Julio 2015, 17:22 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines