首页
社区
课程
招聘
[原创]浅谈一下驱动开发中的硬编码
发表于: 2011-11-7 08:50 15130

[原创]浅谈一下驱动开发中的硬编码

2011-11-7 08:50
15130
typedef PUCHAR	(__stdcall *sky_PsGetProcessImageFileName)(PEPROCESS pEprocess);

PUCHAR GetSpecialProcessImageFileName(PEPROCESS pEprocess)
{
	UNICODE_STRING						destString;
	sky_PsGetProcessImageFileName		CallPsGetProcessImageFileName = NULL;

	if ( MmIsAddressValidEx((PVOID)pEprocess) == VCS_INVALID ) return NULL;
	if ( IsValidObject(pEprocess,*PsProcessType) == FALSE ) return NULL;

	RtlInitUnicodeString(&destString,(PWCHAR)L"PsGetProcessImageFileName");
	CallPsGetProcessImageFileName = (sky_PsGetProcessImageFileName)MmGetSystemRoutineAddress(&destString);
	if (CallPsGetProcessImageFileName == NULL) return NULL;

	return CallPsGetProcessImageFileName(pEprocess);
}
PsGetProcessDebugPort 取得指定EPROCESS的调试端口信息
typedef PVOID	(__stdcall *sky_PsGetProcessDebugPort)(PEPROCESS pEprocess);

PsGetProcessId 取得指定EPROCESS的进程Id
typedef ULONG	(__stdcall *sky_PsGetProcessId)(PEPROCESS pEprocess);

PsGetProcessInheritedFromUniqueProcessId 取得指定EPROCESS的父进程Id
typedef ULONG	(__stdcall *sky_PsGetProcessInheritedFromUniqueProcessId)(PEPROCESS pEprocess);

PsGetProcessJob 取得指定EPROCESS的Job信息
typedef PVOID	(__stdcall *sky_PsGetProcessJob)(PEPROCESS pEprocess);

PsGetProcessPeb 取得指定EPROCESS的Peb地址
typedef PPEB	(__stdcall *sky_PsGetProcessPeb)(PEPROCESS pEprocess);

PsGetProcessWin32Process 取得指定EPROCESS的w32process结构地址 <GUI>
typedef PVOID	(__stdcall *sky_PsGetProcessWin32Process)(PEPROCESS pEprocess);



PsGetThreadTeb 取得指定ETHREAD的Teb地址
typedef PVOID	(__stdcall *sky_PsGetThreadTeb)(PETHREAD pEthread);

PsGetThreadId 取得指定ETHREAD的线程Id
typedef ULONG	(__stdcall *sky_PsGetThreadId)(PETHREAD pEthread);

PsGetThreadProcessId 取得指定ETHREAD的进程Id
typedef ULONG	(__stdcall *sky_PsGetThreadProcessId)(PETHREAD pEthread);

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 6
支持
分享
最新回复 (7)
雪    币: 1233
活跃值: (907)
能力值: ( LV12,RANK:750 )
在线值:
发帖
回帖
粉丝
2
最好的办法就是不用啦,只用系统提供的函数干所有的事情,用过滤驱动咯
2011-11-7 09:42
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主好文章。但是很多结构体的硬偏移如何处理呢?请指教
2011-11-7 10:37
0
雪    币: 12
活跃值: (767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
商业代码还是乖乖的用微软推荐的方法吧,当然有时候又是不能不用的-_-
2011-11-7 10:45
0
雪    币: 169
活跃值: (61)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
不用这么麻烦吧。PsGetProcessImageFileName,PsGetProcessInheritedFromUniqueProcessId直接申明就能用了。
2011-11-7 11:07
0
雪    币: 47
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
想拜楼主为师啊 传授下经验  自己学太茫然了
2012-5-24 21:21
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看看,说得有道理

3q
2012-5-24 21:51
0
雪    币: 307
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
oxlwj 不用这么麻烦吧。PsGetProcessImageFileName,PsGetProcessInheritedFromUniqueProcessId直接申明就能用了。
这两个函数能获取被隐藏的进程吗?  我获取的怎么pId=4一过就是pid = 108了?   中间的呢
最后于 2018-5-5 21:50 被冰栈编辑 ,原因:
2018-5-5 21:14
0
游客
登录 | 注册 方可回帖
返回
//