我的代码是这样的。  先贴出来var
  FileStream : TFileStream;
  ImageDosHeader : TImageDosHeader;
  NtHeader: PImageNtHeaders;
  ImageNtHeader : TImageNtHeaders;
  SizeOfImage : Integer;
  FileBase : PChar; //文件映射后的内存地址
  ImportEntry: PImageImportDescriptor;
  MyImport : array of PuPe;
  I : Integer;
begin
FileStream := TFileStream.Create(edt1.Text,fmOpenRead or fmShareDenyWrite);
with FileStream do
  begin
    ReadBuffer(ImageDosHeader,SizeOf(TImageDosHeader));
    Position := ImageDosHeader._lfanew;
    ReadBuffer(ImageNtHeader,SizeOf(TImageNtHeaders));
    if ImageNtHeader.Signature = IMAGE_NT_SIGNATURE then
      begin
        SizeOfImage := ImageNtHeader.OptionalHeader.SizeOfImage;
        FileBase := VirtualAlloc(nil,SizeOfImage,MEM_RESERVE or MEM_COMMIT, PAGE_READWRITE);
        NtHeader := PImageNtHeaders(FileBase + ImageDosHeader._lfanew);
        ImportEntry := PImageImportDescriptor(FileBase + NtHeader.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
        lst1.Items.Add(IntToStr(ImportEntry.DLLName));
      end
    else
      begin
        MessageBox(0,'这不是一个PE文件','错误',0);
      end;
  end;end;
主要是想获取PE文件引用的DLL和函数。想先实现显示引用的DLL,但为什么ImportEntry.Dll为0呢。   麻烦看下是哪错了,谢谢大家!!!