Autor
|
Tema: [HELP] Block API LoadLibrary (Leído 10,732 veces)
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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: xor eax, eax 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
|
|
|
|
Softrix18
Desconectado
Mensajes: 36
|
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!
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 36
|
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
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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): .data libName db "Kernel32.dll",0 procName db "LoadLibraryW",0
push ebp mov ebp, esp sub esp, 08h push offset libName call GetModuleHandleA push offset procName push eax call GetProcAddress mov dword ptr [ebp - 04h], eax lea ecx, [ebp - 08h] push ecx push 040h push 010h push dword ptr [ebp - 04h] call VirtualProtect mov eax, dword ptr [ebp - 04h] mov word ptr [eax], 0C033h ;xor eax, eax mov dword ptr [eax+2], 04c2h ;ret 04h y un 0 mov esp, ebp pop ebp 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
Mensajes: 2.416
Se siente observado ¬¬'
|
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?
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
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? 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
Mensajes: 36
|
Muchas Gracias Por Todo IE
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
No me carga la DLL LoadLibrary
Programación C/C++
|
Riki_89D
|
4
|
4,057
|
17 Septiembre 2011, 17:58 pm
por Riki_89D
|
|
|
Sobre Ad Block Plus
Noticias
|
wolfbcn
|
0
|
1,490
|
10 Octubre 2011, 17:50 pm
por wolfbcn
|
|
|
El programa rompe al llegar a LoadLibrary
Análisis y Diseño de Malware
|
nts94
|
2
|
3,021
|
14 Marzo 2012, 01:58 am
por nts94
|
|
|
Gentooo root block device
GNU/Linux
|
Joe Fraddy
|
6
|
4,104
|
18 Marzo 2015, 20:04 pm
por Joe Fraddy
|
|
|
Error 126: LoadLibrary falla C++
Programación C/C++
|
Kaxperday
|
2
|
2,524
|
16 Enero 2016, 13:06 pm
por Kaxperday
|
|