Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Кто процесс запустил? Добавлено: 15.10.04 07:02  

Автор вопроса:  Mihalыch | ICQ: 373-509-101 
Если в процедуру приведенную ниже передать идентификатор процесса, то она заполнит массив «ModuleID» ссылками на относящимися к нему модули (это я так думаю…). Первый элемент массива это обычно путь к исполняемому файлу…, а что значат остальные элементы массива. Иногда просматривая их обнаруживаю пути к библиотекам, которые на мой взгляд даже близко не имеют отношения к выбранному процессу.
Посмотрите на досуге.

Private Sub GetModule(ProcID As Long)
    Dim i As Long
    Dim hProcess As Long
    Dim cb As Long
    Dim cbNeeded As Long
    Dim ModuleID() As Long
    Dim nModules As Long
    Dim ModuleName As String
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, ProcID)
    If hProcess <> 0 Then
       cb = 8
       cbNeeded = 96
       Do While cb <= cbNeeded
          cb = cb * 2
          ReDim ModuleID(cb / 4)
          Call EnumProcessModules(hProcess, ModuleID(1), cb, cbNeeded)
       Loop
       nModules = cbNeeded / 4
       If nModules > 0 Then
            ModuleName = String(MAX_PATH, 0)
            For i = 0 To UBound(ModuleID)
                Call GetModuleFileNameEx(hProcess, ModuleID(i), ModuleName, MAX_PATH)
                List1.AddItem Trim(ModuleName)
                If i = 0 Then Label1.Caption = Trim(ModuleName)
            Next i
       End If
    End If
    Call CloseHandle(hProcess)
End Sub

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 15.10.04 10:32
Библиотеки используемые процессом использовать могут функции находящиеся в др. библиотеках, т.о. они и их проецируют в адр. пр-во те тоже ведь могут запросить какую-нить функцию из др. библиотеки и т.д.

Так это все дело все и накапливается...

Ответить

Номер ответа: 2
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #2 Добавлено: 15.10.04 10:45
А вот еще вопрос, есть у меня программка, которая в ListView заносит имена исполняемых файлов всех найденных процессов, потом при щелчке по элементу списка, в ListBox заносится все из массива «ModuleID». Так вот собственно вопрос, допустим щелкаю по SVCHOST.EXE, их обычно несколько, почему для одного «SVCHOST’а» эта процедура находит много всего, а для другого не чего?

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 15.10.04 11:08
SVCHOST.EXE, это служба запускаемая с разными параметрами и она выполняет различные действия, существует способ загрузки DLL не компилятором, а динамически с пом. LoadLibrary... А так же нахождение адреса функции с пом. GetProcAddress, опосля чего эту функцию можно запустить... т.о. в зависимости от того с каким ключем SVCHOST был запущен, я думаю, он для своих целей загружает различные функции и различное их кол-во...

Ответить

Номер ответа: 4
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #4 Добавлено: 15.10.04 11:21
Спасибо sne, не могу сказать, что все понял в последнем ответе, попробую поискать ответ в умных книжках. Вообще заморочился с этой темой потому, что нужно было узнать, где прячется файл «запустивший» окно, а тут на тебе куча всего…

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 15.10.04 15:11
я и сам не понял, т.ч. ниче страшного ;) Тем более что ответ скорее всего неверен, это же всего-лишь предположение...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам