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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Función GetFileInformationByHandle
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Función GetFileInformationByHandle  (Leído 2,646 veces)
el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Función GetFileInformationByHandle
« en: 28 Noviembre 2014, 18:04 pm »

puedo usar la función GetFileInformationByHandle para obtener el espacio usado por un archivo especifico HANDLE hFile en la documentación de oficial de Microsoft el puntero que retorna de BY_HANDLE_FILE_INFORMATION  no hay una propiedad igual que en FILE_STANDARD_INFO -> AllocationSize que es el valor que necesito y la cuestión es que esta función la quiero ejecutar en Windows XP por eso no puedo usar GetFileInformationByHandleEx es posible usar GetFileInformationByHandle y obtener el mismo valor?


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #1 en: 28 Noviembre 2014, 18:19 pm »

puedo usar la función GetFileInformationByHandle para obtener el espacio usado por un archivo especifico HANDLE hFile en la documentación de oficial de Microsoft el puntero que retorna de BY_HANDLE_FILE_INFORMATION  no hay una propiedad igual que en FILE_STANDARD_INFO -> AllocationSize que es el valor que necesito y la cuestión es que esta función la quiero ejecutar en Windows XP por eso no puedo usar GetFileInformationByHandleEx es posible usar GetFileInformationByHandle y obtener el mismo valor?

Utiliza NtQueryInformationFile + FileStandardInformation.

Código:
typedef struct _FILE_STANDARD_INFORMATION
{
     LARGE_INTEGER AllocationSize;
     LARGE_INTEGER EndOfFile;
     ULONG NumberOfLinks;
     UCHAR DeletePending;
     UCHAR Directory;
} FILE_STANDARD_INFORMATION, *PFILE_STANDARD_INFORMATION;


En línea

el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #2 en: 28 Noviembre 2014, 18:33 pm »

Usando GetProcAddress?
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #3 en: 28 Noviembre 2014, 18:40 pm »

Usando GetProcAddress?
No hay necesidad, podes importarla normalmente, vas a necesitar la ntdll.lib que podes encontrar en el WDK luego: propiedades -> linker -> input -> escribes el nombre. Bueno eso es para Visual studio que es el mejor para gente que esta programando para Windows.
En línea

el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #4 en: 28 Noviembre 2014, 18:59 pm »

pues no tengo claro como hacer la implementacion mi método que tengo que falla en en win xp es el siguiente:

Código:
DWORD GetFileSize(HANDLE hFile)
{

  DWORD dwFileSizeHi = 0;
  DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi); 

  if(dwFileSizeLo == INVALID_FILE_SIZE )
  {
  FILE_STANDARD_INFO finfo;

  ZeroMemory(&finfo,sizeof(finfo));

  GetFileInformationByHandleEx(hFile,FileStandardInfo, &finfo, sizeof(finfo));

  dwFileSizeLo = finfo.AllocationSize.LowPart;
  }
 
  return dwFileSizeLo;
}
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Función GetFileInformationByHandle
« Respuesta #5 en: 28 Noviembre 2014, 19:22 pm »

¿Te fijaste ya que devolvia GetLastError?

Note that if the return value is INVALID_FILE_SIZE (0xffffffff), an application must call GetLastError to determine whether the function has succeeded or failed. The reason the function may appear to fail when it has not is that lpFileSizeHigh could be non-NULL or the file size could be 0xffffffff.

¿Y si usas directamente GetFileSizeEx? Esta disponible en XP.

PD. El tamaño del archivo se corresponde con el EndofFile y no con el AllocationSize (eso corresponde con el tamaño que ocupa en disco, es decir redondeado en clusters).
« Última modificación: 28 Noviembre 2014, 19:24 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
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #6 en: 28 Noviembre 2014, 19:29 pm »

pues no tengo claro como hacer la implementacion mi método que tengo que falla en en win xp es el siguiente:

Código:
DWORD GetFileSize(HANDLE hFile)
{

  DWORD dwFileSizeHi = 0;
  DWORD dwFileSizeLo = GetFileSize(hFile, &dwFileSizeHi);  

  if(dwFileSizeLo == INVALID_FILE_SIZE )
  {
 FILE_STANDARD_INFO finfo;

 ZeroMemory(&finfo,sizeof(finfo));

 GetFileInformationByHandleEx(hFile,FileStandardInfo, &finfo, sizeof(finfo));

 dwFileSizeLo = finfo.AllocationSize.LowPart;
  }
  
  return dwFileSizeLo;
}
Sí y viendo el código porqué razon necesitas el valor en AllocationSize? Ya que si primero utilizas GetFileSize y luego sobreescribes el valor retornado por GetFileInformationByHandleEx en la misma variable... En XP falla ya que GetFileInformationByHandleEx no es exportada.
En línea

el_doctor

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Función GetFileInformationByHandle
« Respuesta #7 en: 28 Noviembre 2014, 21:16 pm »

muy agradecido al final use GetFileSizeEx. Gracias por su ayuda.
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Función GetFileInformationByHandle
« Respuesta #8 en: 28 Noviembre 2014, 21:32 pm »

De nadas  ::)
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines