68 MEMORY_BASIC_INFORMATION page_info = { 0 };
69 ULONGLONG next_va = 0;
72 ULONGLONG base = (ULONGLONG)page_info.BaseAddress;
73 next_va = base + page_info.RegionSize;
74 mem_region_info curr_info((ULONGLONG)page_info.AllocationBase, base, page_info.RegionSize);
76 if (region_bases.find(curr_info) != region_bases.end()) {
80 region_bases.insert(curr_info);
82 return region_bases.size();
87 DWORD number_of_entries = 1;
88 DWORD buffer_size =
sizeof(PSAPI_WORKING_SET_INFORMATION) + (number_of_entries *
sizeof(PSAPI_WORKING_SET_BLOCK));
89 PSAPI_WORKING_SET_INFORMATION* buffer =
reinterpret_cast<PSAPI_WORKING_SET_INFORMATION*
>(calloc(1, buffer_size));
93 DWORD res = QueryWorkingSet(processHandle, buffer, buffer_size);
94 if (res == FALSE && GetLastError() == ERROR_BAD_LENGTH) {
98 number_of_entries =
static_cast<DWORD>(buffer->NumberOfEntries);
99 free(buffer); buffer = NULL;
105 std::cout <<
"Number of entries: " << std::dec << number_of_entries << std::endl;
107 return number_of_entries;
size_t fill_iat(BYTE *vBuf, size_t vBufSize, IN const peconv::ExportsMapper *exportsMap, IN OUT IATBlock &iat, IN ThunkFoundCallback *callback)