能力值:
( LV12,RANK:600 )
|
-
-
2 楼
下面是摘我以前的文章的一段:::
:
:
从ntdll.dll获得索引比如NtQueueApcThread,
.text:7C92E23D mov eax, 0B4h ; NtQueueApcThread
.text:7C92E242 mov edx, 7FFE0300h
.text:7C92E247 call dword ptr [edx]
.text:7C92E249 retn 14h
好了,记下0B4h
#pragma pack(1)
typedef struct ServiceDescriptorEntry {
unsigned int *ServiceTableBase;
unsigned int *ServiceCounterTableBase;
unsigned int NumberOfServices;
unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
#pragma pack()
extern "C"__declspec(dllimport) ServiceDescriptorTableEntry_t KeServiceDescriptorTable;
typedef NTSTATUS (*NTQUEUEAPCTHREAD)(
IN HANDLE ThreadHandle,
IN PIO_APC_ROUTINE ApcRoutine,
IN PVOID ApcRoutineContext OPTIONAL,
IN PIO_STATUS_BLOCK ApcStatusBlock OPTIONAL,
IN ULONG ApcReserved OPTIONAL );
NTQUEUEAPCTHREAD NtQueueApcThread;
:
:
:
NtQueueApcThread =*(KeServiceDescriptorTable.ServiceTableBase + 0x0B4);
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
晕哦 我好想计算地址错了. 我按你的方法测测看
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
已解决已解决
|
能力值:
( LV8,RANK:120 )
|
-
-
5 楼
是对的,不明白说明你指针没学好
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
... 刚才复制了一半.. 现在弄好了
|
|
|