Скрыть сетевой адаптер

Тема в разделе "WASM.WIN32", создана пользователем StasX4, 21 июн 2006.

  1. StasX4

    StasX4 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2004
    Сообщения:
    7
    Всем привет!!!



    Изучил немного инфы и переписал перехватчики на С...

    Сейчас перехватывает:

    1) Поцессы

    2) Файлы и папки (через дос эмулятор все показывается, скорее всего из-за специфичности установки глобального хука)
    Код (Text):
    1. LRESULT WINAPI MessageProc(int Code,WPARAM wParam, LPARAM lParam)
    2.     {
    3.     CallNextHookEx(0, Code, wParam, lParam);
    4.     return 0;
    5.     }
    6.  
    7. void SetGlobalHookProc()
    8.     {
    9.     SetWindowsHookEx(WH_GETMESSAGE, (PROC)MessageProc, HInstance, 0);
    10.     Sleep(INFINITE);
    11.     }


    3) Ключи и параметры в реестре



    С глобальным хуком я еще разберусь(т.е. почитаю получше, но возможно буду перехватывать еще и с помощью ZwResumeThread)... Но это не важно...



    Я просто хотел показать, что уже немного разбираюсь в этом деле...



    Вопрос:

    Как скрыть список сетевых подключений(не просто активных или не активных, а тот, который показывает Windows стандартными средставми)???

    Т.е. через какую функцию Windows получает этот список???

    Заранее спасибо за ответ.
     
  2. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
  3. StasX4

    StasX4 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2004
    Сообщения:
    7
    NtVdmControl я уже перехватывал(сегодня делал)... И эта функция не вызывается... Скорее всего проблема с глобальным перехватом. Но могу и ошибаться...

    Сейчас через оли прохожу по ipconfig...

    Пока наткнулся на GetAdaptersAddresses... Подключил библиотеку к айсу... Перезагружусь и помотрю что и как...
     
  4. StasX4

    StasX4 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2004
    Сообщения:
    7
    Безрезультатно... :dntknw:

    Windows для перечисления сетевых подключений какую-то другую функцию использует...



    Может кто знает???
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    StasX4

    Я не понял, тебе надо скрыть сетевые соединения, или сетевой адаптер?

    Если первое, что для перечисления соединений используются функции GetTcpTable, GetTcpTableEx, GetUdpTable, GetUdpTableEx. Эти функции шлют IOCTL_TCP_QUERY_INFORMATION_EX драйверу tcpip.sys.

    Для перечисления сетевых интерфейсов используется этот же IOCTL, только с другими данными в сопровождающей его структуре. В атаче пример кода получающего список адаптеров в kernel mode.

    Вот пример использования этого кода:


    Код (Text):
    1. status = GetIPSNMPInfo(&SnmpInfo, sizeof(IPSNMPInfo));
    2.  
    3.     if (NT_SUCCESS(status))
    4.     {
    5.         TableSize = sizeof(IPAddrEntry) * SnmpInfo.ipsi_numaddr;
    6.  
    7.         IPAddrTable = ExAllocatePool(PagedPool, TableSize);
    8.  
    9.         status = GetIPAddrTable(IPAddrTable, TableSize);
    10.  
    11.         if (NT_SUCCESS(status))
    12.         {
    13.             ExAcquireFastMutex(&StackMutex);
    14.            
    15.             for(r = 0; r < SnmpInfo.ipsi_numaddr; r++)
    16.             {
    17.                 IPInterfaceInfo InterfaceInfo;
    18.  
    19.                 status = GetIPInterfaceInfo(
    20.                                   IPAddrTable[r].iae_addr,
    21.                                   &InterfaceInfo,
    22.                                   sizeof(IPInterfaceInfo)
    23.                                   );
    24.  
    25.                 if (NT_SUCCESS(status) && InterfaceInfo.iii_addrlength == 6 &&
    26.                     InterfaceInfo.iii_flags == 1 && !netif_find(IPAddrTable[r].iae_addr))
    27.                 {
    28.                     DPRINT("Init rel netif");
    29.  
    30.                     Adapter->IpAddress  = IPAddrTable[r].iae_addr;
    31.                     Adapter->SubnetMask = 0;
    32.                     Adapter->Gateway    = 0;
    33.  
    34.                     Adapter->RelInitialized = TRUE;
    35.                     Adapter->State = NdisMediaStateConnected;
    36.  
    37.                     ProtocolAddAdapter(Adapter);
    38.                     ReferenceAdapter(Adapter);
    39.                     ProtocolStatusAdapter(Adapter, ADAP_STATUS_CONNECT_MEDIA);
    40.  
    41.                     break;
    42.                 }
    43.             }




    [​IMG] 1462531243__tdiq.c
     
  6. StasX4

    StasX4 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2004
    Сообщения:
    7
    @MsRem



    Нужно скрыть список сетевых адаптеров, но в тоже время нужно чтобы они выполняли свою непосредственную функцию.

    Как я понял нужно перехватывать NtDeviceIoControlFile?



    Проверить код сейчас не в силах в связи с отсутствием ddk xp... Но это дело просто времени. Еще раз хочу уточнить момент. Приведенный Вами код показывает список сетевых адаптеров или сетевых соединений?

    Также вопрос есть по поводу хендлов при любом перехвате (файлы, папки, реестр) о том, что когда я получаю хендл, то как по нему определить в случае с папками путь к директории, а в случае с реестром, то путь из ключей???

    А то получается, что скрываются все файлы из всех директорий с одинаковыми наименованиями.



    Заранее спасибо за ответ.
     
  7. StasX4

    StasX4 New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2004
    Сообщения:
    7
    Сделал наброски по перехвату API от Iphlpapi... Эмулируя вызов все работает... Вечером доведу код до ума(до хука) и посмотрим будет ли работать... Но хотелось бы перехватывать на низком уровне...
    Код (Text):
    1.  
    2. DWORD WINAPI MyGetAdaptersAddresses(
    3.     ULONG Family,
    4.     DWORD Flags,
    5.     PVOID Reserved,
    6.     PIP_ADAPTER_ADDRESSES pAdapterAddresses,
    7.     PULONG pOutBufLen
    8.     )
    9.     {
    10.     NTSTATUS status;
    11.     PIP_ADAPTER_ADDRESSES Prev,Cur;
    12.  
    13.     status=GetAdaptersAddresses(Family,Flags,Reserved,pAdapterAddresses,pO utBufLen);
    14.     if (NT_SUCCESS(status))
    15.         {
    16.         Prev=NULL;Cur=pAdapterAddresses;
    17.         for(;Cur!=0;)
    18.             {
    19.             if(lstrcmpiW(Cur->Description,L"My Network Interface")==0)
    20.                 {
    21.                 if(Prev==NULL)
    22.                     {
    23.                     if(Cur->Next!=NULL)
    24.                         memcpy(Cur,Cur->Next,sizeof(IP_ADAPTER_ADDRESSES));
    25.                     else
    26.                         status=-1;
    27.                     }
    28.                 else
    29.                     Prev->Next=Cur->Next;
    30.                 break;
    31.                 }
    32.             Prev=Cur;
    33.             Cur=Cur->Next;
    34.             }
    35.         }
    36.     return status;
    37.     }
    38.  
    39. DWORD WINAPI MyGetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen)
    40.     {
    41.     NTSTATUS status;
    42.     PIP_ADAPTER_INFO Prev,Cur;
    43.  
    44.     status=GetAdaptersInfo(pAdapterInfo,pOutBufLen);
    45.     if (NT_SUCCESS(status))
    46.         {
    47.         Prev=NULL;Cur=pAdapterInfo;
    48.         for(;Cur!=0;)
    49.             {
    50.             if(lstrcmpi(Cur->Description,"My Network Interface")==0)
    51.                 {
    52.                 if(Prev==NULL)
    53.                     {
    54.                     if(Cur->Next!=NULL)
    55.                         memcpy(Cur,Cur->Next,sizeof(IP_ADAPTER_INFO));
    56.                     else
    57.                         status=-1;
    58.                     }
    59.                 else
    60.                     Prev->Next=Cur->Next;
    61.                 break;
    62.                 }
    63.             Prev=Cur;
    64.             Cur=Cur->Next;
    65.             }
    66.         }
    67.     return status;
    68.     }
    69.