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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  [HELP] Block API LoadLibrary
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [HELP] Block API LoadLibrary  (Leído 10,155 veces)
Softrix18

Desconectado Desconectado

Mensajes: 36


Ver Perfil
[HELP] Block API LoadLibrary
« en: 19 Septiembre 2009, 23:29 pm »

Hola, buenas tarda podria ser posible blokear un API " LoadLibrary  " para que X aplicacione este ejecutada no pueda Cagar ninguna dll o injectar alguna dll porfavor si podrian ayudame con algun codigo o codigo de Debugger en ollydbg tambien :D :D


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [HELP] Block API LoadLibrary
« Respuesta #1 en: 20 Septiembre 2009, 00:25 am »

Poniendo el siguiente codigo en el entry point (podes conseguirlo con GetModuleHandle + GetProcAddress) de la funcion (puede ser LoadLibraryA o LoadLibraryW ... tambien estan la Ex, que tienen tres parametros y por lo tanto el ret de 0Ch) podes hacerlo:

Código
  1. xor eax, eax
  2. ret 04h

Probalo con un depurador; si vas a querer restaurar el codigo original no te olvides de guardarlo en algun buffer.

PD. Para hacerlo en tu programa vas a necesitar de VirtualProtect al menos, si en otro proceso VirtualProtectEx y WriteProcessMemory.


« Última modificación: 20 Septiembre 2009, 00:29 am por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: [HELP] Block API LoadLibrary
« Respuesta #2 en: 20 Septiembre 2009, 01:58 am »

Creo que te sirviria leerte esto :P

http://foro.elhacker.net/analisis_y_diseno_de_malware/taller_api_hooking_en_modo_usuario-t262962.0.html
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Softrix18

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [HELP] Block API LoadLibrary
« Respuesta #3 en: 20 Septiembre 2009, 02:18 am »

Oks, Muchas Gracias Por Todo! Pero quiziera es crear algun Codigo en el mismo EXE tambien si me puede Explicar sobre el VirualProtect.

Gracia Por Todo! ;D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [HELP] Block API LoadLibrary
« Respuesta #4 en: 20 Septiembre 2009, 08:00 am »

En este caso no necesitas hookear realmente aunque podrias hacerlo (es mas complicado y no le veo el beneficio).

A VirtualProtect le tenes que pasar la direccion de memoria en la que queres escribir (el entry point que mencione antes), el tamaño del bloque de memoria al cual le queres cambiar la proteccion (con 16 sobra en este caso; siempre el minimo sera una pagina al final de cuentas), el nuevo tipo de proteccion - PAGE_EXECUTE_READWRITE - y finalmente un puntero a DWORD donde la funcion escribe el tipo de proteccion que habia antes de hacer el cambio asi podes restaurarlo despues.

Los pasos logicos para hacerlo en tu proceso:
Obtener el entry point (GetModuleHandle + GetProcAddress)
Dar proteccion de escritura al mismo (VirtualProtect)
Escribir el codigo que quieras
Restaurar la proteccion antigua
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Softrix18

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [HELP] Block API LoadLibrary
« Respuesta #5 en: 20 Septiembre 2009, 08:20 am »

 :D Muhas Gracias Por todo. ire probando y no encuentro la Forma Sigo Postiando y Disculpa Por la Molestia.

EI: juntando mensajes.

005E168E      60            PUSHAD
005E168F      E8 0C000000   CALL _-_U.005E16A0
005E1694      00006B00      DD _-_U.006B0000
005E1698      99834400      DD _-_U.00448399
005E169C      00006C00      DD _-_U.006C0000
005E16A0  /.  5D            POP EBP
005E16A1  |.  8D45 00       LEA EAX,DWORD PTR SS:[EBP]
005E16A4  |.  8D5D 04       LEA EBX,DWORD PTR SS:[EBP+4]
005E16A7  |.  8D4D 08       LEA ECX,DWORD PTR SS:[EBP+8]
005E16AA  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
005E16AC  |.  8B1B          MOV EBX,DWORD PTR DS:[EBX]
005E16AE  |.  8B09          MOV ECX,DWORD PTR DS:[ECX]
005E16B0  |.  8918          MOV DWORD PTR DS:[EAX],EBX
005E16B2  |.  50            PUSH EAX
005E16B3  |.  51            PUSH ECX                                 ; /pOldProtect
005E16B4  |.  6A 40         PUSH 40                                  ; |NewProtect = PAGE_EXECUTE_READWRITE
005E16B6  |.  6A 30         PUSH 30                                  ; |Size = 30 (48.)
005E16B8  |.  53            PUSH EBX                                 ; |Address
005E16B9  |.  FF15 F4625E00 CALL DWORD PTR DS:[<&KERNEL32.VirtualPro>; \VirtualProtect
005E16BF  |.  58            POP EAX
005E16C0  |.  8B38          MOV EDI,DWORD PTR DS:[EAX]
005E16C2  |.  8D75 3A       LEA ESI,DWORD PTR SS:[EBP+3A]
005E16C5  |.  B9 05000000   MOV ECX,5
005E16CC  |.  61            POPAD
005E16CD  \.  C3            RETN


e colocado esto y nada :S aun no puedo socuionar mi Problema.
« Última modificación: 20 Septiembre 2009, 10:15 am por Eternal Idol » En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [HELP] Block API LoadLibrary
« Respuesta #6 en: 20 Septiembre 2009, 10:10 am »

No se de donde salen esos valores hardcodeados y no veo donde escribas en el entry point, mira este ejemplo (no controla errores ni guarda el codigo original, eso te lo dejo a vos):

Código
  1. .data
  2. libName db "Kernel32.dll",0
  3. procName db "LoadLibraryW",0

Código
  1. push ebp
  2. mov ebp, esp
  3. sub esp, 08h
  4.  
  5. push offset libName
  6. call GetModuleHandleA
  7.  
  8. push offset procName
  9. push eax
  10. call GetProcAddress
  11. mov dword ptr [ebp - 04h], eax
  12.  
  13. lea ecx, [ebp - 08h]
  14. push ecx
  15. push 040h
  16. push 010h
  17. push dword ptr [ebp - 04h]
  18. call VirtualProtect
  19.  
  20. mov eax, dword ptr [ebp - 04h]
  21. mov word ptr [eax], 0C033h ;xor eax, eax
  22. mov dword ptr [eax+2], 04c2h ;ret 04h y un 0
  23.  
  24. mov esp, ebp
  25. pop ebp
  26. ret

PD. Me olvidaba, el codigo de esta manera es inseguro ya que hace dos mov's y no esta sincronizado. Con lock cmpxchg8b podes escribir 8 bytes atomicamente.
« Última modificación: 20 Septiembre 2009, 12:19 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [HELP] Block API LoadLibrary
« Respuesta #7 en: 20 Septiembre 2009, 13:46 pm »

La primera norma del API Hooking is "GO NATIVE!"... asi que envez de LoadLibraryW deberias hookear LdrLoadDLL... Aunque creo que tambien seria conveniente Hookear LdrGetModuleHandleEx ;)

PD. Me olvidaba, el codigo de esta manera es inseguro ya que hace dos mov's y no esta sincronizado. Con lock cmpxchg8b podes escribir 8 bytes atomicamente.
Podrias poner como se utilizaria esa instruccion EI? :D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: [HELP] Block API LoadLibrary
« Respuesta #8 en: 20 Septiembre 2009, 14:04 pm »

La primera norma del API Hooking is "GO NATIVE!"... asi que envez de LoadLibraryW deberias hookear LdrLoadDLL...

Claro pero todo depende del contexto; es muy probable que le sea suficiente con bloquear una funcion de la API de Windows (al menos es lo que pidio) de la manera que demostre, puede que le haga falta hookear la API nativa o tal vez necesite un modulo de modo Kernel con un callback PsX o un (mini) filtro del file system.

Aunque creo que tambien seria conveniente Hookear LdrGetModuleHandleEx ;)

¿Para que? ¿LdrGetDllHandleEx tambien carga una DLL de no encontrarla ya cargada rompiendo asi con la logica?

Podrias poner como se utilizaria esa instruccion EI? :D

En cualquier ejemplo digno de detouring la encontras.

http://faydoc.tripod.com/cpu/cmpxchg8b.htm
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Softrix18

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: [HELP] Block API LoadLibrary
« Respuesta #9 en: 22 Septiembre 2009, 06:08 am »

Muchas Gracias Por Todo IE :D
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
No me carga la DLL LoadLibrary
Programación C/C++
Riki_89D 4 3,799 Último mensaje 17 Septiembre 2011, 17:58 pm
por Riki_89D
Sobre Ad Block Plus
Noticias
wolfbcn 0 1,337 Último mensaje 10 Octubre 2011, 17:50 pm
por wolfbcn
El programa rompe al llegar a LoadLibrary
Análisis y Diseño de Malware
nts94 2 2,786 Último mensaje 14 Marzo 2012, 01:58 am
por nts94
Gentooo root block device
GNU/Linux
Joe Fraddy 6 3,710 Último mensaje 18 Marzo 2015, 20:04 pm
por Joe Fraddy
Error 126: LoadLibrary falla C++
Programación C/C++
Kaxperday 2 2,237 Último mensaje 16 Enero 2016, 13:06 pm
por Kaxperday
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines