首页
社区
课程
招聘
[求助]如何对获取网卡IP的这类下断
发表于: 2006-3-17 13:32 4321

[求助]如何对获取网卡IP的这类下断

2006-3-17 13:32
4321
现在很多的组件都是通过获取本地网卡IP地址来产生序列号的,对于这类的情况应该怎么下断点。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 257
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
我收藏的一段代码

void InsertChildItem(CListCtrl& m_list, int nItem, const char* szInsertText, const char* szText)
{
        m_list.InsertItem(nItem, szInsertText);
        m_list.SetItemText(nItem, 1, szText);
}

void Network(CListCtrl& m_list, CListCtrl& m_Childlist)
{
        DWORD             dwIndex;
        DWORD             dwNumber;
        DWORD             dwResult;
        ULONG             OutBufLen;
        IP_ADAPTER_INFO   AdapterInfo;
    PIP_ADDR_STRING   pAddrString;
          PIP_ADAPTER_INFO  pAdapterNext;
        MIB_IFROW         IfRow;
        char buffer[256] = "";
        int index = 0;
        int ChildIndex = 0;

        OutBufLen = sizeof(IP_ADAPTER_INFO);
        dwResult  = GetAdaptersInfo(&AdapterInfo,&OutBufLen);
        if(dwResult == ERROR_BUFFER_OVERFLOW)
        {
                GetAdaptersInfo(&AdapterInfo,&OutBufLen);
        }
        else if        (dwResult != ERROR_SUCCESS)
        {
                wsprintf(buffer, "GetAdaptersInfo Error: %d\n",GetLastError());
                InsertChildItem(m_list, index++, "错误", buffer);
                return;
        }

        pAdapterNext = &AdapterInfo;
        while(pAdapterNext != NULL)
        {
                InsertChildItem(m_list, index++, "适配器名称", pAdapterNext->AdapterName);
                InsertChildItem(m_list, index++, "描述", pAdapterNext->Description);

                dwIndex = pAdapterNext->Index;
                ZeroMemory(buffer, 256);
                char temp[256] = "";
        for(dwNumber = 0;dwNumber < pAdapterNext->AddressLength - 1; dwNumber++)
                {
                        wsprintf(temp, "%.2X-", pAdapterNext->Address[dwNumber]);
                        strcat(buffer, temp);
                }
                wsprintf(temp, "%.2X", pAdapterNext->Address[dwNumber]);
                strcat(buffer, temp);
                InsertChildItem(m_list, index++, "绑定地址", buffer);
       
                switch(pAdapterNext->Type)
                {
                case MIB_IF_TYPE_OTHER:
                        wsprintf(buffer, "%s", "其他");
                        break;
                case MIB_IF_TYPE_ETHERNET:
                        wsprintf(buffer, "%s", "以太网络");
                        break;
                case MIB_IF_TYPE_FDDI:
                        wsprintf(buffer, "%s", "FDDI");
                        break;
                case MIB_IF_TYPE_PPP:
                        wsprintf(buffer, "%s", "PPP");
                        break;
                case MIB_IF_TYPE_LOOPBACK:
                        wsprintf(buffer, "%s", "路由");
                        break;
                case MIB_IF_TYPE_SLIP:
                        wsprintf(buffer, "%s", "串行线路接口协议");
                        break;
                default:
                        wsprintf(buffer, "%s", "未知");
                        break;
                }
                InsertChildItem(m_list, index++, "类型", buffer);
               
                printf("IpAddressList:\t  %s\t\t%s\n","IP Address","Subnet Mask");
                pAddrString = &pAdapterNext->IpAddressList;
                ZeroMemory(buffer, 256);
                ZeroMemory(temp, 256);
                while(pAddrString != NULL)
                {
                        wsprintf(temp, "%s / %s",pAddrString->IpAddress.String,pAddrString->IpMask.String);
                        strcat(buffer, temp);
                        pAddrString = pAddrString->Next;
                }
                InsertChildItem(m_list, index++, "IP地址/掩码", buffer);

                pAddrString = &pAdapterNext->GatewayList;
                printf("GatewayList:\t  %s\n",pAddrString->IpAddress.String);
                pAddrString = pAddrString->Next;
                ZeroMemory(buffer, 256);
                ZeroMemory(temp, 256);
                while(pAddrString != NULL)
                {
                        wsprintf(temp, "%s",pAddrString->IpAddress.String);
                        strcat(buffer, temp);
                     pAddrString = pAddrString->Next;
                }
                InsertChildItem(m_list, index++, "网关", buffer);

               
                if(pAdapterNext->DhcpEnabled != 0)
                {
                        ZeroMemory(buffer, 256);
                        ZeroMemory(temp, 256);
                        wsprintf(temp, "%s",pAdapterNext->DhcpServer.IpAddress.String);
                        strcat(buffer, temp);
                        strcat(buffer, "\t\t");
                        pAddrString = pAdapterNext->DhcpServer.Next;
                        while(pAddrString != NULL)
                        {
                                wsprintf(temp, "%s", pAddrString->IpAddress);
                                strcat(buffer, temp);
                                pAddrString = pAddrString->Next;
                        }
                        InsertChildItem(m_list, index++, "DHCP服务器", buffer);
                }

                if(pAdapterNext->HaveWins != 0)
                {
                        wsprintf(temp, "%s", pAdapterNext->PrimaryWinsServer);
                        InsertChildItem(m_list, index++, "主要WinsSvr", buffer);
                        wsprintf(temp, "%s", pAdapterNext->SecondaryWinsServer);
                        InsertChildItem(m_list, index++, "次要WinsSvr", buffer);
                }
                InsertChildItem(m_list, index++, "租约获得", asctime(gmtime(&pAdapterNext->LeaseObtained)));
                InsertChildItem(m_list, index++, "租约期满", asctime(gmtime(&pAdapterNext->LeaseExpires)));

                IfRow.dwIndex = dwIndex;
                if((dwResult  = GetIfEntry(&IfRow)) != NO_ERROR)
                {
                        printf("GetIfEntry Error: %d\n",dwResult);
                        break;
                }
                wsprintf(buffer, "%d",IfRow.dwMtu);
                InsertChildItem(m_list, index++, "MTU", buffer);
                wsprintf(buffer, "%d Kbps", IfRow.dwSpeed/1000);
                InsertChildItem(m_list, index++, "网速", buffer);
               
                switch(IfRow.dwOperStatus)
                {
                case MIB_IF_OPER_STATUS_NON_OPERATIONAL:
                        wsprintf(buffer, "%s", "LAN Adapter Disabled");
                        break;
                case MIB_IF_OPER_STATUS_UNREACHABLE:
                        wsprintf(buffer, "%s", "WAN Adapter Disconnected");
                        break;
                case MIB_IF_OPER_STATUS_DISCONNECTED:
                        wsprintf(buffer, "%s", "LAN Adapters Disconnected or WAN Adapters no Carrier");
                        break;
                case MIB_IF_OPER_STATUS_CONNECTING:
                        wsprintf(buffer, "%s", "WAN Adapter Connecting");
                        break;
                case MIB_IF_OPER_STATUS_CONNECTED:
                        wsprintf(buffer, "%s", "WAN Adapter Connected");
                        break;
                case MIB_IF_OPER_STATUS_OPERATIONAL:
                        wsprintf(buffer, "%s", "LAN Adapter Default Status");
                        break;
                default:
                        wsprintf(buffer, "%s", "未知");
                        break;
                }
                InsertChildItem(m_list, index++, "网络类型", buffer);
                wsprintf(buffer, "%d", IfRow.dwInUnknownProtos);
                InsertChildItem(m_list, index++, "未知记录", buffer);

                wsprintf(buffer, "%5d%8d%8d%8d\n", IfRow.dwOutUcastPkts,IfRow.dwOutNUcastPkts,IfRow.dwOutErrors,IfRow.dwOutOctets);
                InsertChildItem(m_Childlist, ChildIndex++, "发送", buffer);
                wsprintf(buffer, "%5d%8d%8d%8d\n",IfRow.dwInUcastPkts,IfRow.dwInNUcastPkts,IfRow.dwInErrors,IfRow.dwInOctets);
                InsertChildItem(m_Childlist, ChildIndex++, "接收", buffer);
                wsprintf(buffer, "%5d%8d%8d%8d\n",
                        IfRow.dwInUcastPkts  + IfRow.dwOutUcastPkts,
                        IfRow.dwInNUcastPkts + IfRow.dwOutNUcastPkts,
                        IfRow.dwInErrors     + IfRow.dwOutErrors,
                        IfRow.dwInOctets     + IfRow.dwOutOctets);
                InsertChildItem(m_Childlist, ChildIndex++, "合计", buffer);
                pAdapterNext = pAdapterNext->Next;
        }
}

效果如下:
项目: 适配器名称
值: {FBE02A64-5415-4771-BC7C-975751C609AB}

项目: 描述
值: Realtek RTL8139 Family PCI Fast Ethernet NIC - 数据包计划程序微型端口

项目: 绑定地址
值: 00-E0-7C-E9-51-91

项目: 类型
值: 以太网络

项目: IP地址/掩码
值: 192.168.1.3 / 255.255.255.0

项目: DHCP服务器
值: 192.168.1.1               

项目: 租约获得
值: Tue Mar 21 12:16:21 2006

项目: 租约期满
值: Wed Mar 22 12:16:21 2006

项目: MTU
值: 1500

项目: 网速
值: 100000 Kbps

项目: 网络类型
值: LAN Adapter Default Status

项目: 未知记录
值: 0
2006-3-22 00:09
0
游客
登录 | 注册 方可回帖
返回
//