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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
получение переменной окружения другого процесса. 06.04.02 00:33  Число просмотров: 1012
Автор: snark Статус: Незарегистрированный пользователь
Отредактировано 06.04.02 00:38  Количество правок: 1
<"чистая" ссылка>
> > P.S. если кто нибудь понял предыдущий ответ, поясните
> > пожалуйста... ну получил я ассемблерный код, там где
> то
> > присутвсует ID процесса? или оно все равно вернет
> > environment для текущего?
>
> предыдущий ответ говорит, что ты можешь использовать
> ReadProcessMemory(), которая есть во всех виндах
ага, вобщем осталась только одна проблема: получить ассемблерный листинг этой функции для 95.98 виндов ( GetEnvironmentStringsW ).
не посоветуете как это легче сделать?
у меня не стоит ничего экзотического на машине, Визуал Стутия и все...
что то скачать, или как то возможно этот листинг в дебугере получить?
спасибо.
<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-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach