Hello everyone.

I want to make EXE-file to process its own Import Table printing to console DLL names and Functions (including names and addresses).

Mapping file is not an option (CreateFileMapping and MapViewOfFile) as file started is already locating in memory. Also alignment should be according to RVA, not to raw offset.

As I understand ImageBase can be received by GetModuleHandleA(0) function. But I don't know how to proceed further.

Starting with:

HANDLE f = CreateFileA("PEview.exe", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
HMODULE fMap = GetModuleHandleA(0);
IMAGE_DOS_HEADER* mz_head = (IMAGE_DOS_HEADER*)fMap;
if(mz_head->e_magic != IMAGE_DOS_SIGNATURE) {cout << "Unable to locate MS_DOS_HEADER"; _getch(); exit(0);};
IMAGE_NT_HEADERS* nt_head = (IMAGE_NT_HEADERS*)(fMap + mz_head->e_lfanew);
if(nt_head->Signature != IMAGE_NT_SIGNATURE) {cout << "Unable to locate FILE_NT_HEADER"; _getch(); exit(0);};
and getting an error: Unable to locate FILE_NT_HEADER

Please help.