|
[原创]发现一个可以干掉360主防的oday
加载了驱动,还说bug! |
|
[求助]关于ring3 HOOK LdrLoadDll 死锁的BUG
OutputDebugStringW 这种东西会重入的.hook底层函数都有这个问题! |
|
[招聘]阿里巴巴高薪诚聘安全领域人才
霸气啊 80k |
|
[求助]我想写一个函数,参数为ip地址,用来探测此ip主机是否在线
/////////////////////////////////////////// // ping.cpp文件 #include "../common/initsock.h" #include "../common/protoinfo.h" #include "../common/comm.h" #include <stdio.h> CInitSock theSock; typedef struct icmp_hdr { unsigned char icmp_type; // 消息类型 unsigned char icmp_code; // 代码 unsigned short icmp_checksum; // 校验和 // 下面是回显头 unsigned short icmp_id; // 用来惟一标识此请求的ID号,通常设置为进程ID unsigned short icmp_sequence; // 序列号 unsigned long icmp_timestamp; // 时间戳 } ICMP_HDR, *PICMP_HDR; int main() { // 目的IP地址,即要Ping的IP地址 char szDestIp[] = "119.147.15.13"; // 127.0.0.1 // 创建原始套节字 SOCKET sRaw = ::socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); // 设置接收超时 SetTimeout(sRaw, 1000, TRUE); // 设置目的地址 SOCKADDR_IN dest; dest.sin_family = AF_INET; dest.sin_port = htons(0); dest.sin_addr.S_un.S_addr = inet_addr(szDestIp); // 创建ICMP封包 char buff[sizeof(ICMP_HDR) + 32]; ICMP_HDR* pIcmp = (ICMP_HDR*)buff; // 填写ICMP封包数据,请求一个ICMP回显 pIcmp->icmp_type = 8; pIcmp->icmp_code = 0; pIcmp->icmp_id = (USHORT)::GetCurrentProcessId(); pIcmp->icmp_checksum = 0; pIcmp->icmp_sequence = 0; // 填充数据部分,可以为任意 memset(&buff[sizeof(ICMP_HDR)], 'E', 32); // 开始发送和接收ICMP封包 USHORT nSeq = 0; char recvBuf[1024]; SOCKADDR_IN from; int nLen = sizeof(from); while(TRUE) { static int nCount = 0; int nRet; // ping次数 if(nCount++ == 1000) break; pIcmp->icmp_checksum = 0; pIcmp->icmp_timestamp = ::GetTickCount(); pIcmp->icmp_sequence = nSeq++; pIcmp->icmp_checksum = checksum((USHORT*)buff, sizeof(ICMP_HDR) + 32); nRet = ::sendto(sRaw, buff, sizeof(ICMP_HDR) + 32, 0, (SOCKADDR *)&dest, sizeof(dest)); if(nRet == SOCKET_ERROR) { printf(" sendto() failed: %d /n", ::WSAGetLastError()); return -1; } nRet = ::recvfrom(sRaw, recvBuf, 1024, 0, (sockaddr*)&from, &nLen); if(nRet == SOCKET_ERROR) { if(::WSAGetLastError() == WSAETIMEDOUT) { printf(" timed out/n"); continue; } printf(" recvfrom() failed: %d/n", ::WSAGetLastError()); return -1; } // 下面开始解析接收到的ICMP封包 int nTick = ::GetTickCount(); if(nRet < sizeof(IPHeader) + sizeof(ICMP_HDR)) { printf(" Too few bytes from %s /n", ::inet_ntoa(from.sin_addr)); } // 接收到的数据中包含IP头,IP头大小为20个字节,所以加20得到ICMP头 // (ICMP_HDR*)(recvBuf + sizeof(IPHeader)); ICMP_HDR* pRecvIcmp = (ICMP_HDR*)(recvBuf + 20); if(pRecvIcmp->icmp_type != 0) // 回显 { printf(" nonecho type %d recvd /n", pRecvIcmp->icmp_type); return -1; } if(pRecvIcmp->icmp_id != ::GetCurrentProcessId()) { printf(" someone else's packet! /n"); return -1; } printf("从 %s 返回 %d 字节:", inet_ntoa(from.sin_addr),nRet); printf(" 数据包序列号 = %d. /t", pRecvIcmp->icmp_sequence); printf(" 延时大小: %d ms", nTick - pRecvIcmp->icmp_timestamp); printf(" /n"); // 每一秒发送一次就行了 ::Sleep(1000); } return 0; } |
|
[求助]CopyFile()源码中的CopyLoop有个问题
NtReadFile 内部就有文件偏移! |
|
deleted
看来没人会帮我了,我姓温 1990 四川泸洲人,这个项目代码70多万,今天路过网吧,进来看看,代码只是代码。换口饭吃而已! |
|
[原创]X (还没有取名)
现在 360 公司 愿意给机会面试,真的好激动,不管可不可以,我都会更努力的.陈前辈(陈征宇)真的很热心,不因为我的出生而不给我机会,希望360越来越好.另外文件的12卷,请==吧,面试之后我会发的. ---200902 |
|
|
|
[原创]X (还没有取名)
aaaaaaaaaa |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值