информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
получение переменной окружения другого процесса. 05.04.02 20:30  Число просмотров: 837
Автор: snark Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Извените, почти никто не отвечает :) , так что я попробую еще раз описать задачу:
требуется, получить значение переменной окружения ( одной , но это не важно ) для каждого окна ( приложения, процесса ) в системе ( под 9х и НТ-2000) .
Пока я нашел только два способа - установкой дебуг привелегий и запуска удаленного среда ( но тот пример работает только под НТ, и, боюсь. что у меня не хватит ума пересобачить его под 95 ). И внедрение ДЛЛ путем установки системного хука. Но опять, я всего лишь отлавливаю ( ну фильтрую ) определенные сообщения, а как быть, если мне хочется получить эту переменную в произвольный момент времени ? ( устанавливать хук только на этот момент? и на этот процесс ? и потом снимать? )
спасибо.
P.S. если кто нибудь понял предыдущий ответ, поясните пожалуйста... ну получил я ассемблерный код, там где то присутвсует ID процесса? или оно все равно вернет environment для текущего?
<programming>
получение переменной окружения другого процесса. 05.04.02 00:00  
Автор: snark Статус: Незарегистрированный пользователь
<"чистая" ссылка>
День добрый, у Вас тут была дискуссия по поводу внедрения длл в другой процесс. Не подскажете , возможно ли данным методом получить сабж, и как? или каким нибудь другим , но чтобы работало и на 98 и на НТ.
точно знаю что это возможно, но как это сделать....
спасибо.
получение переменной окружения другого процесса. 05.04.02 01:03  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
> День добрый, у Вас тут была дискуссия по поводу внедрения
> длл в другой процесс. Не подскажете , возможно ли данным
> методом получить сабж, и как? или каким нибудь другим , но
> чтобы работало и на 98 и на НТ.
> точно знаю что это возможно, но как это сделать....
> спасибо.
Dlia NT (vse chto vnutri GetEnvironmentStringsW()):
 
77F1A427 64 A1 18 00 00 00    mov         eax,fs:[00000018]
77F1A42D 8B 40 30             mov         eax,dword ptr [eax+30h]
77F1A430 8B 48 10             mov         ecx,dword ptr [eax+10h]
77F1A433 8B 41 48             mov         eax,dword ptr [ecx+48h]

---
resultat v eax

DLia 98 posmotri assembler etoi function GetEnvironmentStringsW()
получение переменной окружения другого процесса. 05.04.02 11:44  
Автор: snark Статус: Незарегистрированный пользователь
<"чистая" ссылка>
а разве GetEnvironmentStringsW не возвращает окружение текущего процесса? или тут есть что то , чего я не понимаю ? ( уверен что есть, врочем :) ) мне же нужно значение переменной для процесса с конкретным айди. впрочем, если есть возможность перебрать эти блоки для всех процессов, это тоже подошло бы.
> Dlia NT (vse chto vnutri GetEnvironmentStringsW()):
>
 > 77F1A427 64 A1 18 00 00 00    mov	  eax,fs:[00000018]
> 77F1A42D 8B 40 30	      mov	  eax,dword ptr
> [eax+30h]
> 77F1A430 8B 48 10	      mov	  ecx,dword ptr
> [eax+10h]
> 77F1A433 8B 41 48	      mov	  eax,dword ptr
> [ecx+48h]
> 

---
> resultat v eax
>
> DLia 98 posmotri assembler etoi function
> GetEnvironmentStringsW()
получение переменной окружения другого процесса. 05.04.02 20:30  
Автор: snark Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Извените, почти никто не отвечает :) , так что я попробую еще раз описать задачу:
требуется, получить значение переменной окружения ( одной , но это не важно ) для каждого окна ( приложения, процесса ) в системе ( под 9х и НТ-2000) .
Пока я нашел только два способа - установкой дебуг привелегий и запуска удаленного среда ( но тот пример работает только под НТ, и, боюсь. что у меня не хватит ума пересобачить его под 95 ). И внедрение ДЛЛ путем установки системного хука. Но опять, я всего лишь отлавливаю ( ну фильтрую ) определенные сообщения, а как быть, если мне хочется получить эту переменную в произвольный момент времени ? ( устанавливать хук только на этот момент? и на этот процесс ? и потом снимать? )
спасибо.
P.S. если кто нибудь понял предыдущий ответ, поясните пожалуйста... ну получил я ассемблерный код, там где то присутвсует ID процесса? или оно все равно вернет environment для текущего?
получение переменной окружения другого процесса. 05.04.02 20:39  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> P.S. если кто нибудь понял предыдущий ответ, поясните
> пожалуйста... ну получил я ассемблерный код, там где то
> присутвсует ID процесса? или оно все равно вернет
> environment для текущего?

предыдущий ответ говорит, что ты можешь использовать ReadProcessMemory(), которая есть во всех виндах
получение переменной окружения другого процесса. 06.04.02 00:33  
Автор: snark Статус: Незарегистрированный пользователь
Отредактировано 06.04.02 00:38  Количество правок: 1
<"чистая" ссылка>
> > P.S. если кто нибудь понял предыдущий ответ, поясните
> > пожалуйста... ну получил я ассемблерный код, там где
> то
> > присутвсует ID процесса? или оно все равно вернет
> > environment для текущего?
>
> предыдущий ответ говорит, что ты можешь использовать
> ReadProcessMemory(), которая есть во всех виндах
ага, вобщем осталась только одна проблема: получить ассемблерный листинг этой функции для 95.98 виндов ( GetEnvironmentStringsW ).
не посоветуете как это легче сделать?
у меня не стоит ничего экзотического на машине, Визуал Стутия и все...
что то скачать, или как то возможно этот листинг в дебугере получить?
спасибо.
получение переменной окружения другого процесса. 06.04.02 06:15  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
IDA kernel32.dll win98:
.text:BFF8ABBC GetEnvironmentStringsA proc near
.text:BFF8ABBC mov eax, dword_0_BFFC9CE4
.text:BFF8ABC1 mov ecx, [eax]
.text:BFF8ABC3 mov edx, [ecx+40h]
.text:BFF8ABC6 mov eax, [edx]
.text:BFF8ABC8 retn
.text:BFF8ABC8 GetEnvironmentStringsA endp
получение переменной окружения другого процесса. 05.04.02 22:45  
Автор: snark Статус: Незарегистрированный пользователь
Отредактировано 05.04.02 23:28  Количество правок: 1
<"чистая" ссылка>
77F1A427 64 A1 18 00 00 00 mov eax,fs:[00000018]
77F1A42D 8B 40 30 mov eax,dword ptr [eax+30h]
77F1A430 8B 48 10 mov ecx,dword ptr [eax+10h]
77F1A433 8B 41 48 mov eax,dword ptr [ecx+48h]

> предыдущий ответ говорит, что ты можешь использовать
> ReadProcessMemory(), которая есть во всех виндах

спасибо.
можно я повторю, чтобы не биться об стенку головой :)
я получаю хандл процесса с правами на чтение.
hProcess = OpenProcess(PROCESS_VM_READ, false, ProcessID);
where ProcessID - id процесса, у которого я пытаюсь прочитать эту переменную.
нда, до этого момента все понятно. а дальше не очень... :(.
во первых как я буду читать регистр используя ReadProcessMemory?
или из этого когда следует, что можно самому вычислить адрес этого блока для процесса? а как это сделать в сишной длл?
нда. заколебал наверное уже всех.
в общем в любом случае еще раз спасибо. Глупая ситуация, вообще то я не идиот ( надеюсь ) , но тут с простейшей функцией залез в такие вещи в которых я ничего не понимаю. а делать надо :(.

вроде сообразил что к чему. блин вечер, поздно уже :), щас пытаюсь сделать.
получение переменной окружения другого процесса. 06.04.02 06:07  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
> во первых как я буду читать регистр используя
> ReadProcessMemory?
> или из этого когда следует, что можно самому вычислить
> адрес этого блока для процесса? а как это сделать в сишной
> длл?

регистры можно посмотреть GetThreadContext()

но скорее всего для конкретной версии виндов
> mov eax,fs:[00000018]
можно заменить чтением по фиксированному адресу
пробовать нужно
получение переменной окружения другого процесса. 06.04.02 21:17  
Автор: snark Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> регистры можно посмотреть GetThreadContext()
>
> но скорее всего для конкретной версии виндов
> > mov eax,fs:[00000018]
> можно заменить чтением по фиксированному адресу
> пробовать нужно
спасибо большое.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach