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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Help :v] Detour a LdrpLoadDll
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Help :v] Detour a LdrpLoadDll  (Leído 2,326 veces)
josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
[Help :v] Detour a LdrpLoadDll
« en: 10 Agosto 2017, 23:15 pm »

Hola primeramente, últimamente intenté hookear o hacer un detour a LdrpLoadDll, logré hacerlo a LdrLoadDll pero bueno, a la otra función cuando intentaba CRASH, LdrpLoadDll se puede localizar en LdrLoadDll unas lineas abajo lo llama, su push no es "push 55", es un "push 140".

¿Alguna idea?, o simplemente alguna idea de como filtrar inyecciones en esa función?.

IMPORTANTE: la función LdrpLoadDll no está exportada, simplemente es una función.

Tenkiu

EDIT: Si necesitan un Hex-Rays de IDA Pro o alguna foto desde el Depurador para que vean la función, lo publico.

EDIT2: Esto no lo puse en ingenieria inversa PORQUE simplemente contiene C++, pero si va en ingenieria inversa sólo me dicen y lo paso. (o algun mod amable me lo podria pasar  ;))


« Última modificación: 10 Agosto 2017, 23:18 pm por josue9243 » En línea

BloodSharp


Desconectado Desconectado

Mensajes: 801


El Messi-Vegeta :D


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #1 en: 11 Agosto 2017, 00:20 am »

EDIT: Si necesitan un Hex-Rays de IDA Pro o alguna foto desde el Depurador para que vean la función, lo publico.

EDIT2: Esto no lo puse en ingenieria inversa PORQUE simplemente contiene C++, pero si va en ingenieria inversa sólo me dicen y lo paso. (o algun mod amable me lo podria pasar  ;))

Mostrá al menos la parte de como lo tenés declarado al LdrpLoadDll, la función en la que hacés el hook y como lo hookeas también... No se puede adivinar donde está el problema sino vemos algo de código.


B#


En línea



josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #2 en: 11 Agosto 2017, 01:47 am »

Aca está la declaración de las funciones:

Código:
typedef NTSTATUS ( NTAPI *LdrLoadDllFunc ) ( PWCHAR, ULONG *, UNICODE_STRING *, HMODULE * );
LdrLoadDllFunc LdrLoadDllPtr;

typedef NTSTATUS ( NTAPI *LdrpLoadDllFunc ) ( PWCHAR, ULONG *, UNICODE_STRING *, HMODULE *, int a5 );
LdrpLoadDllFunc LdrpLoadDllPtr;


//DETOUR:
//Directamente inserto el address de LdrpLoadDLL (si andaba lo adaptaba automaticamente)

std::uint8_t* aLdrpLoadDll = (std::uint8_t*)(DWORD)0x7717fc1d;//(std::uint8_t*)GetProcAddress( GetModuleHandle( "ntdll.dll" ), "LdrpLoadDll" );
LdrpLoadDllPtr = (LdrpLoadDllFunc)DetourFunction( (PBYTE)0x7717fc1d, (std::uint8_t*)Detour_LdrpLoadDLL );


FOTOS:

LdrLoadDLL
[spoiler]

[/spoiler]

LdrpLoadDLL
[spoiler]

[/spoiler]

LdrLoadDLL en IDA Pro
[spoiler]

[/spoiler]

En línea

BloodSharp


Desconectado Desconectado

Mensajes: 801


El Messi-Vegeta :D


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #3 en: 11 Agosto 2017, 02:23 am »

Código
  1. typedef NTSTATUS ( NTAPI *LdrpLoadDllFunc ) ( PWCHAR, ULONG *, UNICODE_STRING *, HMODULE *, int a5 );
  2. LdrpLoadDllFunc LdrpLoadDllPtr;

LdrpLoadDll tiene según reactos 6 parametros. Fijate en ntdll.dll si LdrpLoadDll debería terminar con un ret 0x18 (por la convención stdcall 6x4=24 ---> 18h), de lo contrario es muy probable que hayas interceptado al lugar incorrecto...
En el caso de que hayas interceptado correctamente a la función... El error en tu programa se estaría generando por un mal retorno en la pila producto de la falta de parametros "desapilados".


B#
« Última modificación: 11 Agosto 2017, 02:31 am por BloodSharp » En línea



josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #4 en: 11 Agosto 2017, 02:55 am »

No lo creo, intercepte donde empieza el CALL a la función LdrpLoadDLL, aparte OpenGL32 se carga ahí, y también aparece una string que lo está cargando ahí.

Otra cosa tengo el win 7 32 bits.

si no me equivoco segui los jmp y termina en ret 18.

Creeria que el ntdll va cambiando segun el windows y bit...

Modifique a los parametros de la otra cosa y tampoco agarra u.u

« Última modificación: 11 Agosto 2017, 03:01 am por josue9243 » En línea

BloodSharp


Desconectado Desconectado

Mensajes: 801


El Messi-Vegeta :D


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #5 en: 11 Agosto 2017, 04:42 am »

No lo creo, intercepte donde empieza el CALL a la función LdrpLoadDLL, aparte OpenGL32 se carga ahí, y también aparece una string que lo está cargando ahí.

Ok...

Otra cosa tengo el win 7 32 bits.
si no me equivoco segui los jmp y termina en ret 18.

Como predije mirando el code de reactos 6 parametros sin mirar tus imágenes... ahora que me doy cuenta mirandolas tu primera imagen lo confirma...


Creeria que el ntdll va cambiando segun el windows y bit...

Cambia ligeramente, lo cuál implementar parches para lo que "tenés pensado según tus mensajes privados" va a ser un dolor de huevos frente a nuevas versiones de Windows y parches futuros interceptar este tipo de funciones indocumentadas y no exportadas...
Respecto a 64 bits tiene otro juego de instrucciones, convenciones de llamadas son diferentes a las de 32 bits incluso...

Modifique a los parametros de la otra cosa y tampoco agarra u.u

Raro...


B#
En línea



josue9243

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: [Help :v] Detour a LdrpLoadDll
« Respuesta #6 en: 11 Agosto 2017, 04:45 am »

Si tenes un tiempito libre haceme el detour de esto porfavor.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines