首页
社区
课程
招聘
[求助]为啥win8.1下 HOOK CreateProcessInternalW 不成功呢?
发表于: 2016-1-11 10:03 6171

[求助]为啥win8.1下 HOOK CreateProcessInternalW 不成功呢?

2016-1-11 10:03
6171
为啥win8.1下 HOOK  CreateProcessInternalW 不成功呢?

其他系统都没问题。。。。  为什么呢!百思不得其解啊!

typedef BOOL (WINAPI* PCreateProcessInternalW)(
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);

PCreateProcessInternalW TrueCreateProcessInternalW = 0;

BOOL
WINAPI
HookCreateProcessInternalW(
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
)
{
MessageBox(NULL,L"TrueCreateProcessInternalW",L"111111",MB_ICONINFORMATION);

return 0;

}

HMODULE hModule3=0;
BOOL InitDll()
{
hModule3=::LoadLibrary(TEXT("kernel32.dll"));

        if( hModule3 == NULL)
        {
        MessageBox(NULL,"kernel32.dll","111111",MB_ICONINFORMATION);
        }

   TrueCreateProcessInternalW  =(_CreateProcessInternalW)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "CreateProcessInternalW");
  if(!TrueCreateProcessInternalW)
  {
          MessageBox(NULL,"00000","111111",MB_ICONINFORMATION);
    if(hModule3)::FreeLibrary(hModule3);
    return FALSE;
  }
  return TRUE;
}

BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved)
{
        if(dwReason == DLL_PROCESS_ATTACH)
        {
               
                 if(InitDll())//先检查DLL的加载情况,如果加载失败,只能放弃HOOK
        {
                         
                 DetourRestoreAfterWith();
                 DetourTransactionBegin();
                 DetourUpdateThread(GetCurrentThread());
                 // 这里可以连续多次调用DetourAttach,表明Hook多个函数
                                         
                 DetourAttach(&(PVOID&)TrueCreateProcessInternalW, HookCreateProcessInternalW ) ;
               
                 DetourTransactionCommit();

                 }
                 else
                 {
                     MessageBox(NULL,"加载DLL失败","提示",MB_ICONINFORMATION);
                 }

        }

        return true;
}

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 159
活跃值: (24)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
CreateProcessInternalA 看看.
你这例子应该没问题吧.
我在win8.1 win10  (x64) 下都能对 本进程进行hook.
就是对TX的游戏注入hook没效果而已..
2016-1-11 12:25
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
据说是 win8.1 加载DLL顺序发生改变  kernel32.dll还没有加载,LoadLibrary函数没起到作用,但是怎么做才能加载kernel32.dll后及时HOOK呢?
大牛呢???
2016-1-12 12:35
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不能沉啊!
2016-1-13 18:31
0
雪    币: 12
活跃值: (423)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
..没发现..不过我Hook的是CreateProcessW
2016-1-14 11:39
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Hook  CreateProcessW 我用JMP跳转法可以,但是用微软的detours库就不行;不知道什么原因!望大牛指点!
2016-1-14 12:18
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Hook  CreateProcessW 我用JMP跳转法可以,但是用微软的detours库就不行;不知道什么原因!望大牛指点!
2016-1-14 12:19
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大牛在哪里!
2016-1-31 13:33
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
detours是付费版本?
Win8.1 是x32版本?
2016-2-25 17:49
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
你说的kernel32.dll没加载是不可能的,只要进入的WIN32子系统,nt会自动帮你加载的,不管你导入不导入kernel32.dll.
2016-2-25 18:40
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
免费版本啊   64版本!
2016-2-25 19:12
0
雪    币: 49
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
那为什么勾不上呢?
2016-2-25 19:13
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
13
你开OD调试看看呗,看哪里失败了。
2016-2-25 19:16
0
游客
登录 | 注册 方可回帖
返回
//