Имя вызываемой DLL (LOAD_DLL_DEBUG_INFO) дебажим

Тема в разделе "WASM.WIN32", создана пользователем swan, 16 фев 2009.

  1. swan

    swan New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2008
    Сообщения:
    29
    Спасибо, попробую на masm первести ...
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    NtQueryObject возвратит не имя файла, а имя обьекта. Тебе нужно заюзоть NtQueryInformationFile(FileNameInformation).
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    n0name
    Мда, дело явно не в статике\динамике, а похоже, как это ни странно, в изменении ImageBase при загрузке - если своей длл-ке задать стандартную базу 400000h, то lpImageName упорно возвращает NO_NAME, а если затолкать ее на заведомо свободную базу, то все OK...
     
  4. swan

    swan New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2008
    Сообщения:
    29
    Вот как надо (структуры блин коряво понимал ((( )

    Прошу практической помощи... кусок с проги
    ; -------------------------------------------------------------------------------------------------
    .elseif DBEvent.dwDebugEventCode==LOAD_DLL_DEBUG_EVENT ; если поймали эвент
    call write_clock ; залогил время эвента
    invoke WriteFile,hfile2,addr loaddll,15,addr number,0 ; залогил что за эвент

    invoke ReadProcessMemory, pi.hProcess,DBEvent.u.LoadDll.lpImageName,addr filedllnameb,4,addr schetchika

    invoke ReadProcessMemory, pi.hProcess, filedllnameb, addr filedllname,256,addr schetchika



    .elseif DBEvent.dwDebugEventCode==UNLOAD_DLL_DEBUG_EVENT ; это типа дальше...
    ; -------------------------------------------------------------------------------------------------
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    0x10 не может быть. проверяй структуры.
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Откуда у тебя взялась переменная LOAD_DLL_DEBUG_INFO если ты юзаешь DBEvent ?
    Код (Text):
    1. mov eax,DBEvent.u.LoadDll.lpImageName
    2. test eax,eax
    3. jz @F
    4. invoke ReadProcessMemory pi.hProcess,eax, addr filedllnameb,4,addr schetchika
    5. cmp filedllnameb,0
    6. jz @F
    7. invoke ReadProcessMemory pi.hProcess,filedllnameb, addr filedllname,40,addr schetchika
    8. ..
    9. @@:
    PS:
    10h это смещение поля lpImageName в структуре LOAD_DLL_DEBUG_INFO :)))
     
  7. swan

    swan New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2008
    Сообщения:
    29
    Усе черти окаянные... вся тупость в наименовании структуры.... она по windows.inc не так обзывалась как я думал ...
    А radasm нормально ел...

    Во как надо....

    ; -------------------------------------------------------------------------------------------------
    .elseif DBEvent.dwDebugEventCode==LOAD_DLL_DEBUG_EVENT ; если поймали эвент
    call write_clock ; залогил время эвента
    invoke WriteFile,hfile2,addr loaddll,15,addr number,0 ; залогил что за эвент

    invoke ReadProcessMemory, pi.hProcess,DBEvent.u.LoadDll.lpImageName,addr filedllnameb,4,addr schetchika

    invoke ReadProcessMemory, pi.hProcess, filedllnameb, addr filedllname,256,addr schetchika


    .elseif DBEvent.dwDebugEventCode==UNLOAD_DLL_DEBUG_EVENT ; это типа дальше...
    ; -------------------------------------------------------------------------------------------------
     
  8. swan

    swan New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2008
    Сообщения:
    29
    Всем спасибо !!!
     
  9. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    swan
    Даже все проверки на 0 выкинул ?! А как же опасения и цитаты из мсдн в посте #4 :lol:
     
  10. swan

    swan New Member

    Публикаций:
    0
    Регистрация:
    11 сен 2008
    Сообщения:
    29
    А все очень просто
    по рангу:
    1. фунционал
    2. ошибки
    3. интерфейс...

    Работает... остальное допаяем... )
    Там другой прикол - строка в уникоде....
    приходится переваривать....

    вот так
    invoke WideCharToMultiByte,CP_OEMCP,0, addr filedllname,255,addr filedllname2,255, NULL,NULL
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    по мсдн - не факт.