<分区>
所以一般来说,人们说你需要做的就是获取 PE 头地址。像这样:
IMAGE_DOS_HEADER* IDH = (IMAGE_DOS_HEADER*)GetModuleHandle(NULL);
IMAGE_NT_HEADERS * INT = (IMAGE_NT_HEADERS *)((int *)IDH + (int)IDH.e_lfanew);
然而,在思考了几个小时为什么它对我不起作用之后,我意识到我还需要将 IDH.e_lfanew 除以 4。所以我只能通过这种方式获得指向 IMAGE_NT_HEADER 结构的正确指针:
IMAGE_NT_HEADERS * INT = (IMAGE_NT_HEADERS *)((int *)IDH + (int)(IDH.e_lfanew/4));
有人可以向我解释为什么我需要划分它吗?我的操作系统是 Windows 8 64 位。也许我的Windows版本是原因?无论如何,我将非常感谢任何指导!