首页
社区
课程
招聘
[求助]如何使用detours挂一些未公开文档的函数
发表于: 2008-12-25 23:26 5834

[求助]如何使用detours挂一些未公开文档的函数

2008-12-25 23:26
5834
题目描述不准确,准确地说是没有在Windows.h中声明的函数
我为了挂住进程的创建,挂CreateProcessA(...)等等不够,尝试着挂PFNCreateProcessInternalW这个函数却没有成功。

另外,还有个问题不太理解,如下代码:
static HANDLE (WINAPI* Old_OpenProcess)(DWORD dwDesiredAccess,
										BOOL bInheritHandle,
										DWORD dwProcessId) = OpenProcess;

这里的OpenProcess可以直接当作一个值赋给前面的指针,这时候它的地址是从哪来的?
如果它没有在某些头文件中声明,又该怎么用,下面是我的代码:
typedef BOOL (*PFNCreateProcessInternalW)(HANDLE hToken, 
										  LPCWSTR lpApplicationName, 
										  LPWSTR lpCommandLine, 
										  LPSECURITY_ATTRIBUTES lpProcessAttributes, 
										  LPSECURITY_ATTRIBUTES lpThreadAttributes, 
										  BOOL bInheritHandles, 
										  DWORD dwCreationFlags, 
										  LPVOID lpEnvironment, 
										  LPCWSTR lpCurrentDirectory, 
										  LPSTARTUPINFOW lpStartupInfo, 
										  LPPROCESS_INFORMATION lpProcessInformation, 
										  PHANDLE hNewToken);

static PFNCreateProcessInternalW Old_CreateProcessInternalW;

然后在DllMain里面动态导出,代码如下:
// 取得所在模块路径
::GetModuleFileName(NULL, szCurrentApp, sizeof(szCurrentApp));

// 导出相关函数
HMODULE hModule = ::LoadLibrary("kernel32.dll");
if(hModule != NULL)
{
PFNCreateProcessInternalW CreateProcessInternalW = (PFNCreateProcessInternalW)::GetProcAddress(hModule,"CreateProcessInternalW");
}

但是测试没有成功,不知道错在哪里,期待会的人帮忙解答一下,谢谢了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回