Peb x64

Тема в разделе "WASM.X64", создана пользователем WaterGhost, 8 июл 2011.

  1. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Есть у кого объявление структуры Peb под x64? Желательно на Delphi.
     
  2. Kaimi

    Kaimi Андрей

    Публикаций:
    0
    Регистрация:
    15 апр 2010
    Сообщения:
    120
  3. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Дело в том что я не могу найти аналог для указателя для x64 на Delphi. Ведь Pointer на Delphi занимает 4 байта,а на x64 он должен занимать 8 байт (или я ошибаюсь?).
    Так же необходимо узнать является ли процесс 64 битным как это делает диспетчер задач (32 битные процессы помечает "*32") .

    П.С. Я заметил возникает такая ситуация когда процесс с определенным PID уже завершился, но OpenProcess все еще возвращает валидный handle. И после чтения ReadProcessMemory с использованием этого handl'а возвращается ошибка ERROR_PARTIAL_COPY что означает что не все данные были скопированы. Не подскажете как определить что процесс с данным PID уже завершился? Вариант с перечислением всех процессов и просмотром их PID не предлагать. Завершен ли процесс с данным PID может определить "Монитор ресурсов" (Его можно вызвать из Диспетчера задач с вкладки "Быстродействие" в Windows 7).
     
  4. Kaimi

    Kaimi Андрей

    Публикаций:
    0
    Регистрация:
    15 апр 2010
    Сообщения:
    120
    Если ты про PVOID из структуры, то да, и это описано на мсдн: http://msdn.microsoft.com/en-us/library/aa985900(v=vs.80).aspx

    Попробуй IsWow64Process воспользоваться

    ERROR_PARTIAL_COPY может возвращаться при некоторых операциях из 32-битного процесса с 64-битным. Может дело в этом?
     
  5. WaterGhost

    WaterGhost New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2007
    Сообщения:
    130
    Да, эта ошибка возникает и в этом случае, но процесс точно завершен, я проверял.
     
  6. EP_X0FF

    EP_X0FF New Member

    Публикаций:
    0
    Регистрация:
    13 авг 2006
    Сообщения:
    450
    WaterGhost

    Завязывайте с Дельфе. Это бесперспективное дерьмо.

    Причем её надо вызывать динамически. Ежели конечно у вас там все остальное не хардкод и прочий гуан.
     
  7. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    struc PEB
    ;Structure: PEB
    {
    .dbInheritedAddressSpace db ?
    .dbReadImageFileExecOptions db ?
    .dbBeingDebugged db ?
    .dbBitField db ?
    dd ?
    .pntrMutant dq ?
    .pntrImageBaseAddress dq ?
    .pntrLdr dq ?
    .pntrProcessParameters dq ?
    .pntrSubSystemData dq ?
    .pntrProcessHeap dq ?
    .pntrFastPebLock dq ?
    .pntrAtlThunkSListPtr dq ?
    .pntrSparePtr dq ?
    .pntrEnvironmentUpdateCount dq ?
    .pntrKernelCallbackTable dq ?
    .dqSystemReserved0 dq ?
    .pntrFreeList dq ?
    .dqTlsExpansionCounter dq ?
    .pntrTlsBitmap dq ?
    .dqTlsBitmapBits dq ?
    .pntrReadOnlySharedMemoryBase dq ?
    .pntrReadOnlySharedMemoryHeap dq ?
    .pntrReadOnlyStaticServerData dq ?
    .pntrAnsiCodePageData dq ?
    .pntrOemCodePageData dq ?
    .pntrUnicodeCaseTableData dq ?
    .ddNumberOfProcessors dd ?
    .ddNtGlobalFlag dd ?
    .dqCriticalSectionTimeout dq ?
    .dqHeapSegmentReserve dq ?
    .dqHeapSegmentCommit dq ?
    .dqHeapDeCommitTotalFree dq ?
    .dqHeapDeCommitFreeBlock dq ?
    .ddNumberOfHeaps dd ?
    .ddMaximumNumberOfHeaps dd ?
    .pntrProcessHeaps dq ?
    .pntrGdiSharedHandleTable dq ?
    .pntrProcessStarterHelper dq ?
    .pntrGdiDCAttributeList dq ?
    .pntrLoaderLock dq ?
    .ddOSMajorVersion dd ?
    .ddOSMinorVersion dd ?
    .ddOSBuildNumber dd ?
    .ddOSPlatformId dd ?
    .ddImageSubsystem dd ?
    .ddImageSubsystemMajorVersion dd ?
    .dqImageSubsystemMinorVersion dq ?
    .dqImageProcessAffinityMask dq ?
    .pntrGdiHandleBuffer dd 3ch dup (?)
    .pntrPostProcessInitRoutine dq ?
    .pntrTlsExpansionBitmap dq ?
    .pntrTlsExpansionBitmapBits dd 20h dup (?)
    .dqSessionId dq ?
    .dqAppCompatFlags dq ?
    .dqAppCompatFlagsUser dq ?
    .pntrShimData dq ?
    .pntrAppCompatInfo dq ?
    .szCSDVersion db 10h dup (?)
    .pntrActivationContextData dq ?
    .pntrProcessAssemblyStorageMap dq ?
    .pntrSystemDefaultActivContext dq ?
    .pntrSystemAssemblyStorageMap dq ?
    .dqMinimumStackCommit dq ?
    .pntrFlsCallback dq ?
    .pntrFlsListHead0 dq ?
    .pntrFlsListHead1 dq ?
    .pntrFlsBitmap dq ?
    .dqFlsBitmapBits0 dq ?
    .dqFlsBitmapBits1 dq ?
    .dqFlsHighIndex0 dq ?
    .dqFlsHighIndex1 dq ?
    }
    virtual at 0
    strcPEB PEB
    @StrcPEBSize = ($ - strcPEB)
    end virtual

    вроде так
     
  8. sn0w

    sn0w Active Member

    Публикаций:
    0
    Регистрация:
    27 фев 2010
    Сообщения:
    956
    если приходится иметь дело с разными самопальными хидерами в стиле ntdll.h, то предпочитаю запустить WinDbg и вбить dt nt!_PEB (или какая структура интересует)
     
  9. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    WaterGhost
    Ну да, нормальный 64-битный указатель. Или нужно в 32-разрядной прогой на Delphi разбирать дампы, сняты с 64-битных систем? Тогда вместо указателя можно использовать UInt64.