Список процессов и порты с родной API – VB 4.0 (32-bit), VB 5.0, VB 6.0, VB Script, ASP (Active Server Pages) , VBA MS Access, VBA MS Excel – База кода

Скачать

Название (оригинал): List Processes and Ports with Native API

Описание:
Англ (оригинал)It lists all the Processes with open Ports using the Native API, not documented, NtQuerySystemInformation().
To know the processes with open ports we will access at the TDI level (Transport Driver Interface) helping us of the native functions located in the system library NTDLL.DLL.
This library is part of the system base of WINDOWS NT.
Attention: the use of undocumented functions implies risk that Microsoft modifies or eliminate them in a future.
At the moment it works perfectly in NT, W2K, XP and W2003.
In the same way that the Process Explorer application of Systernals (www.systernals.com), we will be able to enumerate all handles of all processes on execution in the system.
These handles (HANDLE) are not unique in the system, but yes in the process (PID). They don’t have any relation with handles of window (HWND) that they are unique.
There are a group of unique handles by process, and they can be of different types:
files, pipes, mailslots, key’s of the base of registry, …
My code is a port of sources C to VB known in Internet (search Google).
Our programs use most times protected memory zones (User-Mode). (Do you remember memory page access violation?)
The controllers and drivers use real access to memory and hardware (Kernel-Mode). We need to transfer information located in Kernel-Mode to our application (User-Mode). One of the uses methods is making a call IOCTL to the driver using a buffer created by our application (Win32 function DeviceIoControl())
To synchronize the driver and the application we will use CreateEvent(). The named event i automatically created in the Object Manager’s BaseNamedObjects directory.

Description of function:
It?s good Known that we need at least administrators rights to get access to all running processes.
Obtain execution privileges in the system by means of the function LoadPrivilege(), getting SeDebugPrivilege.
Then list all the processes (PID’s) using NtQuerySystemInformation(), function of NTDLL.DLL, allowing us the access to the memory shared in Kernel-Mode.
Using NtQueryObject(), we will list all the hadles belonging to each process. To look for open ports we will filter the handles type “File” named “\device\tcp” and “\device\udp.”
Then we look for information of each handle using NtDeviceIoControlFile(), that returns us the port like a integer number as the sockets API uses it. We convert that number through Swap of their Bytes using the IpHelper API function ntohs() and we convert it to a Long type of VB.
The rest is very easy: The function ProcessPathByPID lists the complete path of the requested PID.
This code is very useful in firewalls, netstat’s and similar applications.
Other interesting use of the native API is to hide our program (process) in the TasksList by hook’s.
That is on I am working at the moment, and I would upload it to PSC on depending of your votes 🙂
Excuse for my bad english. Greetings for all. Un saludo para todos.
Luprix
.
Рус (машинный)В нем перечислены все процессы с открытыми портами через родной API не документирован, NtQuerySystemInformation().
Знать процессы с открытыми портами у нас будет доступ на уровне TDI (Интерфейс драйвера транспорта) помогают нам родной функции расположен в библиотеке системы NTDLL.DLL.
Эта библиотека является частью системы шиндошса НТ.
Внимание: использование недокументированных функций подразумевает риск, что Microsoft изменяет или устранить их в будущем.
В данный момент он отлично работает в NT, W2K, XP и W2003.
Таким же образом, что процесс приложения проводник Systernals (www.systernals.com), мы сможем перечислить все дескрипторы всех процессов на исполнение в систему.
Эти ручки (ручка) не являются уникальными в системе, но да в процесса (PID). Они не имеют никакого отношения с ручки окна (hwnd), что они уникальны.
Существует группа уникальных дескрипторов на процесс, и они могут быть разных типов:
файлы, труб, слоты, ключ базы реестра, …
Мой код является портом источников в VB известные в Интернете (поиск Google).
Наши программы используют в большинстве случаев защищенных зон памяти (в режиме пользователя). (Вы помните, страница памяти нарушение прав доступа?)
Контроллеры и драйверы использовать реальный доступ к памяти и оборудованию (режиме ядра). Нам нужно передать информацию, находящуюся в режиме ядра для нашего приложения (в режиме пользователя). Один из методов использует вызов ioctl для драйвера через буфер создается наше приложение (функции Win32 функции deviceiocontrol())
Для синхронизации драйвера и приложения мы будем использовать CreateEvent(). Именованное событие я автоматически создается в директории диспетчера объектов BaseNamedObjects.

Описание функции:
Это?хорошо известно, что нам нужны как минимум права администратора, чтобы получить доступ ко всем запущенным процессам.
Получение права на выполнение в системе с помощью LoadPrivilege функция(), получение SeDebugPrivilege.
Затем список всех процессов (фид) с помощью NtQuerySystemInformation(), функция NTDLL.DLL, что дает нам доступ к общей памяти в режиме ядра.
Используя NtQueryObject(), мы перечислим все hadles, относящихся к каждому процессу. Искать открытые порты мы будем фильтровать ручками Тип файла \”\” имя \”\\\\устройство TCP\” и \”\\устройстве\\УДП\”.
Затем мы ищем информацию о каждой ручке, используя NtDeviceIoControlFile(), который возвращает нам порт как целое число, так как API сокетов использует его. Мы преобразуем это число путем замены их байтов, используя IpHelper API и функции ntohs() и мы преобразуем его в длинный типа глаг.
Остальное очень просто: ProcessPathByPID функция возвращает полный путь запрашиваемого продукта.
Этот код очень полезен в брандмауэрах и аналогичного применения команды netstat.
Другие интересные использовать родной API, чтобы скрыть наши программы (процесса) в TasksList на крюк.
На Я работаю в данный момент, и я хотел бы загрузить его в ЦОН на в зависимости от ваших голосов 🙂
Извините за мой плохой английский. Поздравления для всех. С уважением п. тодос.
Luprix
.

база кода