Test Foro de elhacker.net SMF 2.1

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
Cita de: 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?.

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...

Cita de: josue9243 en 17 Agosto 2017, 04:01 AMEDIT: 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
Cita de: josue9243 en 17 Agosto 2017, 04:26 AMsi pongo:

dword myret;

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


no creo que ande D:

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




DWORD STDCALL GetCaller();
asm(".globl _GetCaller;\n"
"_GetCaller:\n"
"movl 0x4(%ebp),%eax;\n"
"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
Cita de: BloodSharp en 17 Agosto 2017, 04:38 AM
(http://www.gifbin.com/bin/062010/1275389857_naked-gun-facepalm.gif)




DWORD STDCALL GetCaller();
asm(".globl _GetCaller;\n"
"_GetCaller:\n"
"movl 0x4(%ebp),%eax;\n"
"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
Cita de: josue9243 en 17 Agosto 2017, 04:39 AMQue grande bloodsharp :v, el tema es que lo pongo en la misma función del detour?, o donde lo pondria?.


DWORD STDCALL DondeEsta();
asm(".globl _DondeEsta;\n"
"_DondeEsta:\n"
"movl 0x4(%ebp),%eax;\n"
"retn;");

VOID Funcion(parametros...)
{
DWORD dwAquiEsta=DondeEsta();
vectorlistaAgregar(dwAquiEsta);
}



Código (asm) [Seleccionar]
alguna direccion - push parametros;
alguna direccion - call Funcion;
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