#pragma once typedef NTSTATUS(__stdcall* AntiHandler)(PDRIVER_DISPATCH, PDEVICE_OBJECT, PIRP); typedef struct _IRP_HOOK_HANDLER { PDRIVER_DISPATCH pOrgHandler; ULONG MajorIndex; BOOLEAN IsHook; AntiHandler Work; }IRP_HOOK_HANDLER, * PIRP_HOOK_HANDLER; typedef struct _IRP_CORE { PDRIVER_OBJECT HookDriverObject; PVOID HookDispatch; PIRP_HOOK_HANDLER IrpHookHandler; ULONG IrpHookHandlerCount; ULONG IrpEnterCount; }IRP_CORE, * PIRP_CORE; // ÄÁÅØ½ºÆ® ±¸Á¶Ã¼ typedef struct _HOOK_CONTEXT { PDRIVER_OBJECT DriverObject; BOOLEAN IsHooked; ULONG IrpEnterCount; IRP_HOOK_HANDLER HookHandlers[IRP_MJ_MAXIMUM_FUNCTION + 1]; } HOOK_CONTEXT, * PHOOK_CONTEXT; #pragma pack(push, 1) // OBEX °øÅë Çì´õ typedef struct _OBEX_COMMON_HEADER { UCHAR Opcode; // 0x80 for Connect USHORT PacketLength; // Big Endian, Çì´õ Æ÷ÇÔ Àüü ±æÀÌ } OBEX_COMMON_HEADER, * POBEX_COMMON_HEADER; // OBEX Connect ÆÐŶ ±¸Á¶Ã¼ typedef struct _OBEX_CONNECT_PACKET { UCHAR Opcode; // 0x80 USHORT PacketLength; // Big Endian UCHAR Version; // 0x10 (OBEX 1.0) UCHAR Flags; // 0x00 USHORT MaxPacketSize; // Big Endian // ÀÌÈĺÎÅÍ´Â Optional Header°¡ ¿Ã ¼ö ÀÖÀ½ } OBEX_CONNECT_PACKET, * POBEX_CONNECT_PACKET; #pragma pack(pop) #define BLUESOLEIL_BUFFER_IOCTL (ULONG)0x00220028 #define BLUESOLEIL_TETHERING_IOCTL (ULONG)0x0022002C // OBEX Opcode Á¤ÀÇ #define OBEX_OPCODE_CONNECT 0x80 #define OBEX_OPCODE_DISCONNECT 0x81 #define OBEX_OPCODE_PUT 0x02 #define OBEX_OPCODE_PUT_FINAL 0x82 #define OBEX_OPCODE_GET 0x03 #define OBEX_OPCODE_GET_FINAL 0x83 #define OBEX_OPCODE_OK 0xA0 #define OBEX_OPCODE_CONTINUE 0x90 #define OBEX_OPCODE_BODY 0x48 #define OBEX_OPCODE_END_BODY 0x49 #define OBEX_OPCODE_VERSION 0x10 #define OBEX_OPCODE_CONN_FLAGS 0x00 #define OBEX_OPCODE_NAME 0x01 #define OBEX_OPCODE_LENGTH 0xC3 #define OBEX_OPCODE_TYPE 0x42 // Big Endian -> Little Endian º¯È¯ ¸ÅÅ©·Î #define SWAP_USHORT(x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff)) NTSTATUS ODDIrpHookInit(); NTSTATUS ODDIrpHookCleanup(); NTSTATUS USBIrpHookInit(); NTSTATUS USBIrpHookCleanup(); NTSTATUS BlueToothIrpHookCleanup(); NTSTATUS BlueToothIrpHookInit(); NTSTATUS MtpIrpHookCleanup(); NTSTATUS MtpIrpHookInit(); NTSTATUS EtcIrpHookInit(); NTSTATUS EtcIrpHookCleanup();