0

実行可能なインジェクターを WINDOWS のプロセスにしようとしましたが、プログラムはエラーなしでコンパイルされますが、プログラムを (Microsoft Visual Studio のデバッグ モードで) 実行すると、ランタイム エラーが発生します。ビジュアルスタジオは行を強調表示します(コメントでマークしました)

#include <windows.h>
#include "resource.h"

int main()
{
 PIMAGE_DOS_HEADER IDH;
 PIMAGE_NT_HEADERS INTH;
 PIMAGE_SECTION_HEADER ISH;

 //Lets load the resource
 HRSRC hResource=FindResourceA(NULL,(LPCSTR)MAKEINTRESOURCE(IDR_EXE1),"EXE");
 DWORD ResourceSize=SizeofResource(NULL,hResource);
 HGLOBAL hGlob=LoadResource(NULL,hResource);
 LPSTR lpFileMaped=(LPSTR)LockResource(hGlob);

 //obtain the DOS and PE headers
 IDH=(PIMAGE_DOS_HEADER)&lpFileMaped[0];
 INTH=(PIMAGE_NT_HEADERS)&lpFileMaped[IDH->e_lfanew]; //this is the highlighted line
                                       // which supposedly causes an error at runtime

 ....

なぜそうなのか、誰か詳しく説明してもらえますか?

4

1 に答える 1

0

Matt Pietrekの標準的な作品をご覧ください。

e_lfanew フィールドには、PE ヘッダーのファイル オフセットが含まれます。

于 2012-07-15T19:15:28.317 に答える