Título: API Hooking (C++) Publicado por: HaX991 en 12 Julio 2010, 14:40 pm hola estoy auyudando a un amigo a parhear una api pero intentamos de todo y no lo logramos..
lib = psapi.dll api = EnumProcesses La api comienza aqui: 76BB3A9A > $ 6A 1C PUSH 1C 76BB3A9C . 68 C83BBB76 PUSH psapi.76BB3BC8 76BB3AA1 . E8 5BDBFFFF CALL psapi.76BB1601 76BB3AA6 . BE 00800000 MOV ESI,8000 76BB3AAB . 8975 E4 MOV DWORD PTR SS:[EBP-1C],ESI 76BB3AAE . 56 PUSH ESI 76BB3AAF . 8B3D B810BB76 MOV EDI,DWORD PTR DS:[<&KERNEL32.LocalAl>; kernel32.LocalAlloc 76BB3AB5 . EB 25 JMP SHORT psapi.76BB3ADC cuantos bytes abria que cojer? pd: usamos dll inyeccion Gracias, saludos!! Título: Re: API Hooking (C++) Publicado por: Horricreu en 12 Julio 2010, 14:51 pm Léete este taller de MazarD, muy bueno:
Código: http://mazard.info/tutos/apihooking.pdf Saludos :P Título: Re: API Hooking (C++) Publicado por: Eternal Idol en 12 Julio 2010, 14:56 pm Si usas el metodo mas comun de poner un jmp a tu direccion (5 bytes) tenes que guardar en memoria, para ejecutar despues si queres llamar a la funcion original, las dos primeras instrucciones (7 bytes).
Título: Re: API Hooking (C++) Publicado por: HaX991 en 12 Julio 2010, 15:09 pm gracias pero probe desde 5,7,9,18,20 y peta igalmennte ...
si hookeo otra api va de lujo pero esa no se como hacerlo... yo creo k son 7bytes pero k tengo k recalcular la distancia de salto... Título: Re: API Hooking (C++) Publicado por: [Zero] en 12 Julio 2010, 15:16 pm Pon el código de como lo estas haciendo, el salto (E9) son 5 bytes, y tu cojes 7, seguro saltas 7-5=2 bytes antes de donde tienes que saltar, con un debuger puedes verlo :P.
Saludos Título: Re: API Hooking (C++) Publicado por: HaX991 en 12 Julio 2010, 15:34 pm esta es la funcion:
Código y se usaria asi: Código
saludos!! Título: Re: API Hooking (C++) Publicado por: [Zero] en 12 Julio 2010, 15:56 pm Si puedes poner un compilado tambien me ayudaría, seguramente la línea:
Código
Sea la causante del fallo, pero a ojo no me aclaro para calcular la distancia del salto :xD. Saludos Título: Re: API Hooking (C++) Publicado por: Eternal Idol en 12 Julio 2010, 16:16 pm Eso parece estar bien ... ¿No estara mal el hook mismo (EnumProcesses_Hook)? ¿Estas usando stdcall? Y de cualquier manera: ¿Cual es EXACTAMENTE el problema? Hasta ahora solo dijiste que "no logran" parchear una funcion ...
Título: Re: API Hooking (C++) Publicado por: HaX991 en 12 Julio 2010, 16:51 pm Bueno las declaraciones y protipos de las funciones estan correctas, son estas.
Código
mm la idea es inyectar una dll al taskmgr.exe para modificar el resultado de la api "EnumProcesses" y ocultar un proceso, probe antes con la api "TerminateProcess" y va de lujo, la de terminateprocess son 5 bytes y se hookea bien y sirve todo perfect, pero al poner la otra algo en el hook ago mal k cuando la inyecto al llamar el taskmgr.exe (admin de tareas) a esa api entones falla y salta el tipico error de la memoria no se puede leer.... pero lo raro esk si hookeo la api "FindNextFileA" o "FindNextFileW" ambas de 7 bytes de salto sirve perfecto pero enumprocesses no... EI: lo siento pero las reglas prohiben dejar binarios. ai van el inyector y la dll. abrir el admin de tareas, luego el inyector y poner "taskmgr.exe" e inyectarla, si pongo 7 bytes no peta pero tampoco hace nada el admin sirve = y eso k puse en la funcion falsa Código
alguna solucion? Título: Re: API Hooking (C++) Publicado por: Eternal Idol en 12 Julio 2010, 17:16 pm La solucion es hookear la funcion correcta, el Task Manager no usa esa funcion:
http://foro.elhacker.net/ingenieria_inversa/saber_q_apis_usa_el_task_manager-t188983.0.html Título: Re: API Hooking (C++) Publicado por: HaX991 en 12 Julio 2010, 18:12 pm vale gracias a todos aclarado, hookear una api k no esta en el proceso es mala idea xdddddddddd, pensaba k usaba esa :(
bueno gracias a todos saludos!! Título: Re: API Hooking (C++) Publicado por: Eternal Idol en 12 Julio 2010, 18:20 pm De nadas ::)
|