请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

梦织未来

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1348|回复: 27

[原创] hook wow64服务函数(隐蔽性很赞)

[复制链接]

升级   100%

221

主题

66

精华

1504

积分
发表于 2017-11-10 23:32:42 | 显示全部楼层 |阅读模式
梦织未来(www.mengwuji.net)

作者:mengwuji

这东西以前无聊写着玩儿的,发这个东西出来是没看见网上有人实现过,所以感觉还算有点儿价值。

之前介绍过wow64子系统是什么,详见:http://www.mengwuji.net/thread-6988-1-1.html

这玩意儿在64位系统中运行32位程序的时候才有,它是32位程序的64位环境部分,用来和系统底层交互的。32位程序是没办法直接和64位内核交互的,因为参数栈等数据的大小不同。wow64在代码执行逻辑上位于32位程序的底层,而且是以透明方式存在的,微软并没有提供方法去探知wow64内部的信息。

wow64里面也有一张类似ssdt的表,所以修改这张表也是可以拦截到所有32位进程进入内核的请求的。于是我就做了一个类似与hook ssdt的东西,把这张表改了改,改成拦截我们感兴趣的函数调用,最重要的是隐蔽性极好。

下面的代码我拦截的是NtQueryVirtualMemory查询内存的api,下面是调用部分。

  1. void CALLBACK whNtQueryVirtualMemoryFilter(ULONG ParameterTable, ULONG* pResult)
  2. {
  3. auto ProcessHandle    = *(HANDLE*)(ParameterTable);
  4. auto BaseAddress    = *(PVOID*)(ParameterTable + 0x4);
  5. auto MemoryInformationClass  = *(MEMORY_INFORMATION_CLASS*)(ParameterTable + 0x8);
  6. auto MemoryInformation   = *(MEMORY_BASIC_INFORMATION**)(ParameterTable + 0xc);
  7. auto MemoryInformationLength = *(SIZE_T*)(ParameterTable + 0x10);
  8. auto ReturnLength    = *(PSIZE_T*)(ParameterTable + 0x14);
  9. *pResult = 0xc0000001;
  10. }
  11. int main(_In_ int _Argc, _In_reads_(_Argc) _Pre_z_ char ** _Argv, _In_z_ char ** _Env)
  12. {
  13. auto Success = false;
  14. CMtrwhServiceFunc CMtrwhNtQueryVirtualMemory("NtQueryVirtualMemory", whNtQueryVirtualMemoryFilter, false, &Success);
  15. if (Success == true)
  16. {
  17.   MEMORY_BASIC_INFORMATION Mbi = { 0 };
  18.   if (VirtualQuery((LPCVOID)main, &Mbi, sizeof(MEMORY_BASIC_INFORMATION)) == 0)
  19.   {
  20.    printf("成功拦截~");
  21.   }
  22. }
  23. getchar();
  24. }
复制代码


我把这种hook封装成了一个类CMtrwhServiceFunc,构造函数原型是:
CMtrwhServiceFunc(char* pszFuncName, _twhFunctionFilter pfnwhFunctionFilter, bool IsFrontMtr, bool* pIsMtrSuccess);
第一个参数是服务函数的名字,我们就当作内核nt函数填就行了;第二个参数是一个回调函数地址,当调用名称为pszFuncName的函数时就会调用这个回调函数;第三个参数是指示第二个回调是在执行进入内核前调用还是内核返回后调用,这个类里面我只实现了内核返回后调用;第四个参数就是代表这个hook行为是否成功。
回调函数有两个参数,第一个参数是拦截的nt函数的参数表地址,参数取法见whNtQueryVirtualMemoryFilter函数操作。第二个参数是返回值地址,往这个地址写值就是修改返回值了,写法我的过滤函数同样提供的有。
程序运行后小伙伴们可以用PCHunter查看下进程里面是否有hook,来验证此方法的隐蔽性。

代码中我已经支持win7~win10,只是我写的过滤只支持内核调用后过滤,小伙伴们有需要的可以看懂代码后自己修改成能在进入内核前进行过滤的。

ps:注意必须是64位系统上的32位程序才能使用这种办法。解压密码:www.mengwuji.net



FilterWow64.rar

12.15 KB, 下载次数: 27

售价: 10 金钱  [记录]

我一定是见鬼了!
回复

使用道具 举报

升级   100%

41

主题

5

精华

153

积分
发表于 2017-11-10 23:43:33 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

升级   78%

5

主题

0

精华

39

积分
发表于 2017-11-11 08:07:19 | 显示全部楼层
是HOOK的这个模块吗?   wow64cpu.dll  有点厉害,顶一下,
回复 支持 反对

使用道具 举报

升级   9.33%

47

主题

0

精华

228

积分
发表于 2017-11-11 09:39:15 | 显示全部楼层
用PChunter能看出 进程被 xxx.dll->Ntxxxxxxx函数这样吗
回复 支持 反对

使用道具 举报

升级   41.33%

13

主题

0

精华

112

积分
发表于 2017-11-11 11:34:14 | 显示全部楼层
顶下,以前玩过
回复 支持 反对

使用道具 举报

升级   36.67%

2

主题

0

精华

105

积分
发表于 2017-11-11 12:35:01 | 显示全部楼层
顶顶,谢谢分享~~~
回复 支持 反对

使用道具 举报

升级   20%

7

主题

0

精华

80

积分
发表于 2017-11-11 13:25:57 | 显示全部楼层
好几年前 就看过有多开器hook这个了
回复 支持 反对

使用道具 举报

升级   100%

221

主题

66

精华

1504

积分
 楼主| 发表于 2017-11-11 14:38:48 | 显示全部楼层
YOUBADBAD 发表于 2017-11-11 09:39
用PChunter能看出 进程被 xxx.dll->Ntxxxxxxx函数这样吗

PChunter当然是看不出来的。
我一定是见鬼了!
回复 支持 反对

使用道具 举报

升级   100%

221

主题

66

精华

1504

积分
 楼主| 发表于 2017-11-11 16:12:39 | 显示全部楼层
qwerasdf 发表于 2017-11-11 08:07
是HOOK的这个模块吗?   wow64cpu.dll  有点厉害,顶一下,

是64位的ntdll.dll,应该叫wntdll.dll这个模块。
我一定是见鬼了!
回复 支持 反对

使用道具 举报

升级   80%

0

主题

0

精华

40

积分
发表于 2017-11-11 17:05:27 | 显示全部楼层
厉害,厉害
学习一下
回复 支持 反对

使用道具 举报

升级   8%

0

主题

0

精华

4

积分
发表于 2017-11-12 22:32:51 | 显示全部楼层
只能膜拜~,学习了~
回复 支持 反对

使用道具 举报

升级   62%

3

主题

0

精华

31

积分
发表于 2017-11-13 10:20:20 | 显示全部楼层
可以的,,让我想起之前32一个叫野猪力量的东西了。。
回复 支持 反对

使用道具 举报

升级   48%

0

主题

0

精华

24

积分
发表于 2017-11-13 12:52:34 | 显示全部楼层
只能膜拜~,学习了~
回复 支持 反对

使用道具 举报

升级   56%

4

主题

1

精华

28

积分
发表于 2017-11-13 18:33:17 | 显示全部楼层
已购买,感谢梦大分享

补充内容 (2017-11-13 19:43):
已大致研究完毕,获取服务号的方式让我想起了绝影写的那个内核态动态感染模块
回复 支持 反对

使用道具 举报

升级   28%

0

主题

0

精华

14

积分
发表于 2017-11-20 22:35:54 | 显示全部楼层
  hello
回复 支持 反对

使用道具 举报

升级   64%

0

主题

0

精华

32

积分
发表于 2017-11-21 03:48:35 | 显示全部楼层
买不起!伤。。。。
回复 支持 反对

使用道具 举报

升级   32%

0

主题

0

精华

16

积分
发表于 2017-11-23 06:40:57 | 显示全部楼层
学习一下。
回复 支持 反对

使用道具 举报

升级   4%

0

主题

0

精华

2

积分
发表于 2017-11-24 00:51:51 | 显示全部楼层
必需下载来学习学习
回复 支持 反对

使用道具 举报

升级   40%

2

主题

0

精华

20

积分
发表于 2017-12-3 16:27:02 | 显示全部楼层
买了后.立刻变穷鬼- -
回复 支持 反对

使用道具 举报

升级   18%

0

主题

0

精华

9

积分
发表于 2017-12-4 10:34:37 | 显示全部楼层
学习了,感谢老大分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|mengwuji ( 粤ICP备13060035号-1 )  

GMT+8, 2018-2-23 08:39 , Processed in 0.440111 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表