Страница: 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 с именами процессов было бы кстати!