首页
社区
课程
招聘
[求助]HOOK NtCreateThread遇到的问题!关于读出线程函数的!因为是在应用层
发表于: 2013-1-21 23:03 5826

[求助]HOOK NtCreateThread遇到的问题!关于读出线程函数的!因为是在应用层

2013-1-21 23:03
5826
我就跨进程读取了!但是蓝屏了!基础比较弱!
希望各位帮忙指点一下!我贴代码


typedef
NTSTATUS
(* NtOpenPs)(
__out PHANDLE ProcessHandle,
__in ACCESS_MASK DesiredAccess,
__in POBJECT_ATTRIBUTES ObjectAttributes,
__in_opt PCLIENT_ID ClientId
);


typedef NTSTATUS
(* NtRead) (
IN HANDLE ProcessHandle,
IN PVOID BaseAddress,
OUT PVOID Buffer,
IN ULONG BufferSize,
OUT PULONG NumberOfBytesRead OPTIONAL
);

NtRead NtReadVirtualMemory = (NtRead)nNtReadVirtualMemoryAddr;
NtOpenPs NtOpenProcessnew = (NtOpenPs)nNtOpenProcessAddr;
ULONG ThreadFunAddr = 0;

VOID ReadConText(IN PCONTEXT ThreadContext,IN HANDLE Handle )
{
ULONG ReadOfByte = 0;
DbgPrint("%d",PsGetCurrentProcessId());//ThreadContext+0xB0是上下文中的eax
//即使下面这句不执行也会蓝屏
NtReadVirtualMemory(Handle,(int *)ThreadContext+0xB0,&ThreadFunAddr,4,&ReadOfByte);
}





//下面是HOOK单元
typedef struct _INITIAL_TEB {
struct {
PVOID OldStackBase;
PVOID OldStackLimit;
} OldInitialTeb;
PVOID StackBase;
PVOID StackLimit;
PVOID StackAllocationBase;
} INITIAL_TEB, *PINITIAL_TEB;


ULONG NtCreateThreadJmp = 0;


__declspec(naked) void MyNtCreateThread(__out PHANDLE ThreadHandle,
__in ACCESS_MASK DesiredAccess,
__in_opt POBJECT_ATTRIBUTES ObjectAttributes,
__in HANDLE ProcessHandle,
__out PCLIENT_ID ClientId,
__in PCONTEXT ThreadContext,
__in PINITIAL_TEB InitialTeb,
__in BOOLEAN CreateSuspended)
{
if(AssertProcessName(PROCESSNAME))
{ //ThreadContext+0xB0 线程函数
//堆栈中第七个
ReadConText(ThreadContext,ProcessHandle);
DbgPrint("%X\n",ThreadFunAddr);
}
__asm
{
jmp NtCreateThreadJmp
}

}

VOID HookNtCreateThread()
{
NtCreateThreadJmp = GetSSDTFunctionAddr(53);
DbgPrint("%X",NtCreateThreadJmp);
if (NtCreateThreadJmp != NULL)
{
SSDTHookEngine(53,(int)MyNtCreateThread);
}
return ;
}
VOID UnHookNtCreateThread()
{
if (NtCreateThreadJmp != NULL)
{
SSDTHookEngine(53,NtCreateThreadJmp);
}
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我还准备在这个函数中的 PspCreateThread
做CALL hook!
但就算这样 仍然需要跨进程读取!我跟踪了堆栈!上下文就是在应用程序中!
希望我这个读写方法是对的 不行我就要换成附加读写了!
2013-1-21 23:07
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谁来帮帮啊
打开指定的进程就蓝!
我**了!NtCreateThread 本身参数就有进程句柄传进来···我直接用就行了!
2013-1-22 12:17
0
游客
登录 | 注册 方可回帖
返回
//