Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: josue9243 en 17 Agosto 2017, 04:01 am



Título: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: josue9243 en 17 Agosto 2017, 04:01 am
¿Cómo obtengo el RetAddress de una función que está con detour?, ejemplo:

CreateFileA retorna el valor de el address de la función la cual lo llamo, ¿Cómo hago para obtener TODOS los ret que manda?.

EDIT: Seria como el ESI (?


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: BloodSharp en 17 Agosto 2017, 04:21 am
¿Cómo obtengo el RetAddress de una función que está con detour?, ejemplo:

CreateFileA retorna el valor de el address de la función la cual lo llamo, ¿Cómo hago para obtener TODOS los ret que manda?.

Obtenés el retaddress con 2 líneas en assembler en una función y luego los vas metiendo en una lista en tu hook...

EDIT: Seria como el ESI (?

esp o ebp y luego a eax


B#


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: josue9243 en 17 Agosto 2017, 04:26 am
Pero pasame el __asm en código ;_; sino lo hubiera hecho yo jajajjaaja

si pongo:

dword myret;

__asm
{
mov esi, eax;
mov eax, myret;
}

no creo que ande D:


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: BloodSharp en 17 Agosto 2017, 04:38 am
si pongo:

Código
  1. dword myret;
  2.  
  3. __asm
  4. {
  5. mov esi, eax;
  6. mov eax, myret;
  7. }

no creo que ande D:

(http://www.gifbin.com/bin/062010/1275389857_naked-gun-facepalm.gif)



Código
  1. DWORD STDCALL GetCaller();
  2. asm(".globl _GetCaller;\n"
  3. "_GetCaller:\n"
  4. "movl 0x4(%ebp),%eax;\n"
  5. "ret;");


B#


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: josue9243 en 17 Agosto 2017, 04:39 am
(http://www.gifbin.com/bin/062010/1275389857_naked-gun-facepalm.gif)



Código
  1. DWORD STDCALL GetCaller();
  2. asm(".globl _GetCaller;\n"
  3. "_GetCaller:\n"
  4. "movl 0x4(%ebp),%eax;\n"
  5. "ret;");


B#

JAAJAJAJJAJAAJA

Que grande bloodsharp :v, el tema es que lo pongo en la misma función del detour?, o donde lo pondria?.

Expliquese (? ah re :V


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: BloodSharp en 17 Agosto 2017, 05:00 am
Que grande bloodsharp :v, el tema es que lo pongo en la misma función del detour?, o donde lo pondria?.

Código
  1. DWORD STDCALL DondeEsta();
  2. asm(".globl _DondeEsta;\n"
  3. "_DondeEsta:\n"
  4. "movl 0x4(%ebp),%eax;\n"
  5. "retn;");
  6.  
  7. VOID Funcion(parametros...)
  8. {
  9. DWORD dwAquiEsta=DondeEsta();
  10. vectorlistaAgregar(dwAquiEsta);
  11. }


Código
  1. alguna direccion - push parametros;
  2. alguna direccion - call Funcion;
  3. dwAquiEsta dir   - blablabla

(https://img.buzzfeed.com/buzzfeed-static/static/2016-07/7/17/enhanced/buzzfeed-prod-web10/anigif_enhanced-8460-1467927125-2.gif?downsize=715:*&output-format=auto&output-quality=auto)

Perdón pero me hiciste tentar otra vez...  :laugh:


B#


Título: Re: ¿Cómo obtengo el RetAddress de una función que está con detour?
Publicado por: josue9243 en 17 Agosto 2017, 18:39 pm
Sep anda, tenkiu.

Lo que pasa es que flashe que el detour lo llamaba otra cosa y re que tenia un jmp :V xD