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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  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,641 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,541 Último mensaje 10 Agosto 2006, 16:01 pm
por ferdipd
Ayuda Hook y ApiHooking « 1 2 »
Programación Visual Basic
Once 10 4,996 Último mensaje 19 Septiembre 2010, 06:52 am
por Once
¿que leer para comprender apihooking e inyecciones?
ASM
SuperNovato 2 3,678 Último mensaje 6 Diciembre 2010, 17:21 pm
por SuperNovato
Consulta sobre condiciones y saltos
ASM
zonahurbana 9 7,555 Último mensaje 18 Mayo 2014, 02:28 am
por xv0
Duda con saltos LOOP
ASM
0xFer 3 2,702 Ú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