Проблема с NtQueryInformationProcess

Тема в разделе "WASM.WIN32", создана пользователем cc, 18 окт 2006.

  1. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    n0name
    А я уже целую картину представил, как потом надо будет еще ThreadHandle копировать и т.д. :)))
    cc
    0x87C - не похоже на адрес. Запости дамп RtlUserProcParams
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    cc
    Надеюсь ты UNICODE_STRING не копировал у glig'a?
     
  3. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    n0name
    Дааааа.... Хорошо что не я сейчас эту программу пишу. Апшипки бы потом полгода отлавливал :))) Где 2 байта, там и все 4 :)
     
  4. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    n0name: GetLastError возвращает ошибку 299 ("Запрос ReadProcessMemory или WriteProcessMemory был выполнен только частично.")

    Нет, описание UNICODE_STRING у меня вот какое:
    Код (Text):
    1. typedef struct _UNICODE_STRING {
    2.     USHORT Length;
    3.     USHORT MaximumLength;
    4.     PWSTR Buffer;
    5. } UNICODE_STRING, *PUNICODE_STRING;
    Это правильное описание?
     
  5. n0name

    n0name New Member

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

    Код (Text):
    1.  if not ReadProcessMemory(hProc, Pointer(pbi[1] + $10), @pProcParams, 4, br) then goto err;
    2.  if not ReadProcessMemory(hProc, Pointer(pProcParams + $38), @wImgNameLen, 2, br) then goto err;
    3.  if not ReadProcessMemory(hProc, Pointer(pProcParams + $3C), @pImgName, 4, br) then goto err;
    4.  result := GetMemory(wImgNameLen);
    5.  if result = nil then goto err;
    6.  if not ReadProcessMemory(hProc, Pointer(pImgName), result, wImgNameLen, br) then
    7.   begin
    8.    FreeMemory(result);
    9.    result := nil;
    10.   end;
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Чё то до меня только доперло что можно и не через ReadProcessMemory, а напрямую =)
    Код (Text):
    1. function GetImagePath: Pointer; assembler;
    2. asm
    3.  mov eax, fs: [18h]
    4.  mov eax, [eax+30h]
    5.  mov eax, [eax+10h]
    6.  lea eax, [eax+38h]
    7.  mov eax, [eax+4h]
    8. end;
     
  7. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    gilg
    В смысле? Не совсем понял :dntknw:

    n0name
    Ну посмотрел я твой код, по сути у меня тоже самое, однако все равно не работает.

    Еще предложения будут? :)
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    cc
    Пост нубмер 26
    Скинь в файл его. И скинь его сюда.
     
  9. fr0b-p

    fr0b-p New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2006
    Сообщения:
    118
    RTL_USER_PROCESS_PARAMETERS is located at address 0x20000 (for all processes created by call WIN32 API CreateProcess).
     
  10. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    n0name
    Хм, а разве в этом коде чтение идет из памяти именно создаваемого процесса? По-моему нет.

    fr0b-p
    Хе, что-то я не понял, каким образом это знание мне поможет :dntknw:. Ты имеешь в виду что считывать
    RTL_USER_PROCESS_PARAMETERS с адреса 0x20000? То бишь что-то типа этого?
    Код (Text):
    1. RTL_USER_PROCESS_PARAMETERS RtlUserProcParams;
    2. DWORD BytesCount;
    3.  
    4. ReadProcessMemory(ProcessHandle, (PVOID) 0x20000, &RtlUserProcParams,                    sizeof(RTL_USER_PROCESS_PARAMETERS), &BytesCount);
    Или я что-то неправильно понимаю? =)
     
  11. cc

    cc New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2006
    Сообщения:
    34
    Урра, товарищи, заработало! Наконец-то... :)

    Всем огромное спасибо за помощь!

    fr0b-p
    А тебе особое спасибо :). Именно твой пост решил мою проблему!