Advertisement
Guest User

Untitled

a guest
May 28th, 2016
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #pragma once
  3. #include "targetver.h"
  4. #include <stdio.h>
  5. #include <tchar.h>
  6. #include <Windows.h>
  7. typedef struct _FILE_DIRECTORY_INFORMATION {
  8.   ULONG         NextEntryOffset;
  9.   ULONG         FileIndex;
  10.   LARGE_INTEGER CreationTime;
  11.   LARGE_INTEGER LastAccessTime;
  12.   LARGE_INTEGER LastWriteTime;
  13.   LARGE_INTEGER ChangeTime;
  14.   LARGE_INTEGER EndOfFile;
  15.   LARGE_INTEGER AllocationSize;
  16.   ULONG         FileAttributes;
  17.   ULONG         FileNameLength;
  18.   WCHAR         FileName[1];
  19. };
  20.  
  21. typedef DWORD(_stdcall * NtQDFtype)(
  22.   _In_     HANDLE                       FileHandle,
  23.   _In_opt_ DWORD                        Event,
  24.   _In_opt_ DWORD                        ApcRoutine,
  25.   _In_opt_ DWORD                        ApcContext,
  26.   _Out_    DWORD*                       IoStatusBlock,
  27.   _Out_    _FILE_DIRECTORY_INFORMATION* FileInformation,
  28.   _In_     DWORD                        Length,
  29.   _In_     DWORD                        FileInformationClass,
  30.   _In_     BOOLEAN                      ReturnSingleEntry,
  31.   _In_opt_ DWORD                        FileName,
  32.   _In_     BOOLEAN                      RestartScan
  33. );
  34.  
  35. NtQDFtype NtQueryDirectoryFile = NULL;
  36. _FILE_DIRECTORY_INFORMATION * list;
  37. DWORD IoStatusBlock;
  38. DWORD restart;
  39.  
  40. int _tmain(int argc, _TCHAR* argv[])
  41. {
  42.     HMODULE handle = GetModuleHandleA("ntdll.dll");
  43.     NtQueryDirectoryFile = (NtQDFtype)GetProcAddress(handle, "NtQueryDirectoryFile");
  44.     HANDLE file = CreateFileA("\\\\.\\Pipe\\", 0x80000000, 7u, 0, 3u, 0, 0);
  45.     list = (_FILE_DIRECTORY_INFORMATION*) malloc(4096);
  46.     restart = 1;
  47.     for (int i = NtQueryDirectoryFile(file, 0, 0, 0, &IoStatusBlock, list, 4096, 1, 0, 0, restart);
  48.              i >= 0;
  49.              i = NtQueryDirectoryFile(file, 0, 0, 0, &IoStatusBlock, list, 4096, 1, 0, 0, restart) )
  50.     {
  51.         for(_FILE_DIRECTORY_INFORMATION* j = list; ; j = (_FILE_DIRECTORY_INFORMATION*)((char *)j + j->NextEntryOffset))
  52.         {
  53.             for(int k = 0; k < j->FileNameLength / 2; k++)
  54.                 printf("%C", j->FileName[k]);
  55.             printf("\n");
  56.             if(!j->NextEntryOffset)
  57.                 break;
  58.         }
  59.         restart = 0;
  60.     }
  61.     CloseHandle(file);
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement