Страница: 1 | 2 |
Вопрос: Имя процесса в TCP таблице
Добавлено: 22.08.05 17:10
Автор вопроса: HACKER
Ответы
Всего ответов: 24
Номер ответа: 16
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #16
Добавлено: 30.08.05 15:25
и, ещё
cGetInputState
GetTcpPortNumber
Proc_Path
GetIpFromLong
GetState
C_UBound
Где ж я их все найду?
Номер ответа: 17
Автор ответа:
Brusco
ICQ: 175617069
Вопросов: 4
Ответов: 24
Профиль | | #17
Добавлено: 01.09.05 02:55
GetProcs - это я собирался сделать получение всех процессов системы типа для сравнения, точнее это было в скачанном мной исходнике (к сожалению его я найти никак не могу).
Процессы можно получить через EnumProcesses или CreateToolhelp32Snapshot.
Вот моя функция по получению процессов, только на PB:
SUB GetProcesses(BYVAL hWnd AS DWORD, BYVAL hCtl AS DWORD, BYVAL lColCnt AS LONG)
 IM PE32 AS PROCESSENTRY32
 IM uProcess AS MODULEENTRY32
 IM hProcessSnap AS DWORD
 IM hSnapshot AS DWORD
 IM P AS BYTE
 IM M AS BYTE
LOCAL LVI AS LV_ITEM
 IM lCol AS LONG
 IM lRow AS LONG
 IM buff AS ASCIIZ * 260 ' Заголовок найденного окна
 IM chUser AS ASCIIZ * 50, chDomain AS ASCIIZ * 50
' Очистка ListView
ListView_DeleteAllItems hCtl
hProcessSnap = CreateToolhelp32Snapshot(%TH32CS_SNAPPROCESS, 0)
PE32.dwSize = SIZEOF(PE32)
CALL Process32First(hProcessSnap, PE32)
 O
buff = PE32.szExeFile
LVI.stateMask = %LVIS_FOCUSED
LVI.iItem = 0
IF PE32.th32ProcessID <> 0 THEN
FOR lCol = 0 TO lColCnt - 1
IF lCol = 1 THEN buff = STR$(PE32.th32ProcessID)
CALL GetUser(PE32.th32ProcessID, chUser, chDomain)
IF chUser = "" THEN chUser = "SYSTEM"
IF lCol = 2 THEN buff = chUser
LVI.pszText = VARPTR(buff)
LVI.iSubItem = lCol
LVI.lParam = 0
IF lCol = 0 THEN
LVI.mask = %LVIF_TEXT
ListView_InsertItem hCtl, LVI
ELSE
LVI.mask = %LVIF_TEXT
ListView_SetItem hCtl, LVI
END IF
NEXT lCol
END IF
'hSnapshot = CreateToolhelp32Snapshot(%TH32CS_SNAPMODULE, PE32.th32ProcessID)
LOOP WHILE Process32Next(hProcessSnap, PE32)
CALL CloseHandle(hProcessSnap)
END SUB
Думаю от PB до VB не далеко, во всяком случае для меня это одно и то же!
На cGetInputState забей - хрень какая-то...
GetTcpPortNumber - что тут не понятно? Всё ясно из названия! Просто винда возвращает порт, так же как и ip-адрес в десятичном 4-байтовом формате, ну и надо переводить:
Private Function GetTcpPortNumber(DWord As Long) As Long
GetTcpPortNumber = DWord / 256 + (DWord Mod 256) * 256
End Function
GetState - это как раз по константе и определяют в каком состоянии находится соединение.
Proc_Path - это вот и получение путя к приложению по id (см. выше)
На C_UBound то же забей - это так для пересчёта соединений.
Вообще зачем тебе эта статистика соединений?
Если файрвол пишешь, то это неудачная затея.
Я вот тоже писал и не дописал, пару раз на нервы подействовал лаборантам в универе и всё). Эти функции верхнего уровня и поэтому работают медленно, да и этот RemoteTaskManager не смогла почему-то перекрыть (эта зараза через rpc лезет).
К тому же чтобы моя прога работала нужны были пароли админа, которые пришлось отдельно получать...
Номер ответа: 18
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #18
Добавлено: 01.09.05 21:36
ок, большое спасибо!
Номер ответа: 19
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #19
Добавлено: 04.09.05 00:40
Незнаю, правильно-ли я тебя понял
NTSTATUS NtQuerySystemInformation(
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
IN OUT PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
SystemInformationClass указывает тип информации, для получения,
SystemInformation - результирующий буфер,
SystemInformationLength - размер этого буфера
ReturnLength - количество записанных байт
Перечисли процессы так вот
SystemInformationClass значение SystemProcessesAndThreadsInformation.
#define SystemInformationClass 5
Возвращаемая структура в буфере SystemInformation:
typedef struct _SYSTEM_PROCESSES {
ULONG NextEntryDelta;
ULONG ThreadCount;
ULONG Reserved1[6];
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ProcessName;
KPRIORITY BasePriority;
ULONG ProcessId;
ULONG InheritedFromProcessId;
ULONG HandleCount;
ULONG Reserved2[2];
VM_COUNTERS VmCounters;
IO_COUNTERS IoCounters; а енто походу только для NT-шек
SYSTEM_THREADS Threads[1];
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
NextEntryDelta записи предшествующей записи скрываемого процесса
Номер ответа: 20
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #20
Добавлено: 04.09.05 19:23
нет, не правельно...
Номер ответа: 21
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #21
Добавлено: 05.09.05 19:15
Brusco, пасиба. Как раз пишу такое себе.
Номер ответа: 22
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #22
Добавлено: 05.09.05 23:29
2 Александр
может как напишешь поделшися? А то у меня щас времени нет всё собрать в кучу и отладить
Номер ответа: 23
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #23
Добавлено: 06.09.05 12:38
Да легко Я уже pinger, whois, tcp table написал.
Осталось анонимный net send и сканнер портов присобачить.
Номер ответа: 24
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #24
Добавлено: 06.09.05 22:05
ну pinger и whois ничего особеного, анонимный net send чуть круче, но всёравно таких прог много и кажись где-то статью видел где расжёвывали как такую прогу написать. А вот tcp table с именами процессов было бы кстати!