我试图从内存中运行的可执行文件读取内存地址,然后使用这些内存地址遍历PE结构。
我有麻烦,因为我不确定如何将4字节char数组转换为int等效项。
到目前为止,这是我的代码:
char buffer[4];
int e_lfanew = 60;
if(!ReadProcessMemory(pHandle, (me32.modBaseAddr + e_lfanew), buffer, 4, NULL))
{
printf("ReadProcessMemory @ %x Failed (%d)\n", me32.modBaseAddr, GetLastError());
}
我正在读的地址(在本例中为0xE0000000)是PE标头的偏移量。我想获取刚刚读取的内存地址,并将其用作偏移量以再次从进程内存中读取,但是我不知道如何正确地将其转换为int。
任何帮助将不胜感激。
最佳答案
buffer[0] |
(buffer[1] << 8) |
(buffer[2] << 16) |
(buffer[3] << 24)
或相反,这取决于您的高位字节是buffer [0]还是buffer [3]
关于c++ - 将内存地址转换为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5135479/