Как узнать, по какой ImageBase загрузился дочерний процесс (с .reloc)

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

  1. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    В ехе есть релоки. Дефолтная база нестандартная и по ней ехе грузится редко. Чаще по другой базе.
    Как из родительского процесса узнать, по какой базе был загружен процесс?
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    dyn
    Посмотреть по какому адресу загружен модуль? хм, может сам в гугле найдешь? И у меня смутные сомнения, что
     
  3. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    GetModuleHandleEx дает результат только для модулей текущего процесса. А мне нужна ImageBase другого, хоть и дочернего процесса.
     
  4. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    1)CreateToolhelp32Snapshot(TH32CS_SNAPMODULE)/Module32First/Module32Next/StrStrI
    2)VirtualQueryEx/GetMappedFileNameW/StrStrI
    ...
     
  5. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    ASLR
     
  6. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    dyn
    в гугл? научись пользоваться, тебе же лучше будет.
    CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, ProcessID);
     
  7. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    fsd
    если включена рандомизация, то все понятно.
     
  8. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    fsd
    Жалко, что прийдется через снепшоты. Думал, может как-то проще можно, одной апишкой всю инфу нужную вытащить... Тем более хендл есть.
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    А это зачем может пригодиться?
     
  10. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    CREATE_SUSPENDED
     
  11. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    не понадобиться, кстати)
     
  12. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    указал в общем виде для любого модуля
     
  13. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    хм, тогда нельзя получить по "нормальному"? хм, может пригодиться тогда.
     
  14. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    fsd
    быстро разобрались :)
     
  15. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    Процесс создается именно с CREATE_SUSPENDED
    CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, ProcessID) - это не работает, возвращает -1L

    т.е. мне нужно вот это я так понимаю
    Как это работает? Берем и листаем по 64кб от 0 и до -1L, попутно проверяя какому модулю принадлежит адрес?
     
  16. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    угу
     
  17. dyn

    dyn New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2009
    Сообщения:
    566
    fsd
    Огромное вам спасибо!!!
     
  18. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    А если так?
    Код (Text):
    1. push offset ProcInfo
    2. push offset buffer2
    3. push 0
    4. push 0
    5. push CREATE_SUSPENDED
    6. push 0
    7. push 0
    8. push 0
    9. push 0
    10. push offset buffer
    11. Call CreateProcessA; Создадим процесс
    12.  
    13. mov eax, offset ProcInfo
    14. push dword ptr ds:[eax+4]
    15. call ResumeThread
    16.  
    17. mov eax, dword ptr ds:[buffer2 + 4]
    18. mov pid, eax
    19.  
    20. invoke OpenProcess,PROCESS_ALL_ACCESS,0,pid; Откроем процесс
    21. mov hid, eax
    22.  
    23.  
    24.  
    25. push 0
    26. push 24
    27. push offset buffinfo
    28. push 0
    29. push eax
    30. call ZwQueryInformationProcess
    31.  
    32.  
    33. mov eax, offset buffinfo
    34. mov eax, dword ptr ds:[eax + 4]
    35. mov dword ptr ds:[PEB], eax
    36.  
    37. mov eax, dword ptr ds:[PEB]
    38. add eax, 8
    39.                
    40. PUSH offset prochitali
    41. PUSH 4
    42. PUSH offset PEB_ImageBaseAddress
    43. PUSH EAX
    44. PUSH DWORD PTR SS:[hid]
    45. CALL ReadProcessMemory
     
  19. fsd

    fsd New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    353
    [ZwQueryInformationProcess may be altered or unavailable in future versions of Windows. Applications should use the alternate functions listed in this topic.]
    из той же оперы
     
  20. Flint_ta

    Flint_ta New Member

    Публикаций:
    0
    Регистрация:
    25 май 2008
    Сообщения:
    312
    fsd
    Вы на века чтоле пишите?