Получить модуль из CreateToolhelp32Snapshot - PullRequest
0 голосов
/ 03 февраля 2020

Я могу заполнить список с именами процессов, для этого я использую структуру PROCESSENTRY32. Но когда я пытаюсь получить th32ParentProcessID из структуры PROCESSENTRY32, я получаю ошибку, eax равно -1.

Мои структуры:

    PROCESSENTRY32 STRUC
    dwSize              DWORD ?
    cntUsage            DWORD ?
    th32ProcessID       DWORD ?
    th32DefaultHeapID   DWORD ?
    th32ModuleID        DWORD ?
    cntThreads          DWORD ?
    th32ParentProcessID DWORD ?
    pcPriClassBase      DWORD ?
    dwFlags             DWORD ?
    szExeFile           dw MAX_PATH dup(?)
    PROCESSENTRY32 ENDS
    MODULEENTRY32 STRUCT
    dwSize          DWORD ?
    th32ModuleID    DWORD ?
    th32ProcessID   DWORD ?
    GlblcntUsage    DWORD ?
    ProccntUsage    DWORD ?
    modBaseAddr     DWORD ?
    modBaseSize     DWORD ?
    hModule         DWORD ?
    szModule        db MAX_MODULE_NAME32+1 dup(?)
    szExePath       db MAX_PATH dup(?)
    MODULEENTRY32 ENDS

Моя функция:

        ;Modul begin
        push PROCDATA.th32ProcessID
        push TH32CS_SNAPMODULE
        call CreateToolhelp32Snapshot@8
        mov mhSnapshot, eax
        ;EAX = -1 Why?        
        mov MODULDATA.dwSize, sizeof MODULEENTRY32
        push offset MODULDATA
        push mhSnapshot
        call Module32FirstW@8
        ;Module end

У меня правильные структуры?

...