首页
社区
课程
招聘
[求助]被COMODO inlineHOOk恶心到了!
发表于: 2013-12-26 04:54 5825

[求助]被COMODO inlineHOOk恶心到了!

2013-12-26 04:54
5825
你们要想试试 可以装个V6最新版的 firewall  OD随便加载一个程序  定位到 ZwClose 就明白了

一个大名鼎鼎的系统防护公司 竟然连一个r3下HOOK方式都另人感到恶心  虽然是免费的 我也一直都在用 也一直怀疑它的规则存储有问题 直到今天规则清空消失了我才装个新版  b==,因为总是有磁盘访问我想是拦截了什么 用OD加载后才发现这种COMODO HOOK:

使用读内存JMP  这里不说什么了 偷点懒没什么。。。

7C92CFEE ntdll.ZwClose   - FF25 1E00AE71   jmp dword ptr ds:[71AE001E]
7C92CFF4                   0003            add byte ptr ds:[ebx],al
7C92CFF6                   FE              ???                                      ; 未知命令
7C92CFF7                   7F FF           jg short ntdll.7C92CFF8
7C92CFF9                   12C2            adc al,dl

jmp dword ptr ds:[71AE001E]:

JMP后要保存返回地址是吧? 也没什么啊 随便使用个局部变量也就OK了   

可奇葩的是 它竟然是使用0x118(280)个数组来保存当前线程的返回地址 可真是连小学生都不如了!
超过280个他就不保存了 。。。原来用户速度可以这样甩着玩的COMODO 要死哦 280个线程要来个网络阻塞 那返回后有没有BUG都不知道。。

这还不行,这个地方占用了4096个字节页面地址的内存 返回的地方也是个4096个字节页面地址的内存。相当于一个APIHOOK占用
2次分配的4096的页面内存。。 浪费用户内存多可惜啊。。。难道不会用 HeapCreate 申请一个内存堆吗??

71AF000A                                       57              push edi
71AF000B                                       52              push edx
71AF000C                                       51              push ecx
71AF000D                                       50              push eax
71AF000E                                       BF 3B00AF71     mov edi,71AF003B
71AF0013                                       8B5424 10       mov edx,dword ptr ss:[esp+10]
71AF0017                                       B9 18010000     mov ecx,118
71AF001C                                       33C0            xor eax,eax
71AF001E                                       F0:0FB157 01    lock cmpxchg dword ptr ds:[edi+1],edx    ; 锁定前缀  
71AF0023                                       74 09           je short 71AF002E
71AF0025                                       83C7 0E         add edi,0E
71AF0028                                       33C0            xor eax,eax
71AF002A                                     ^ E2 F2           loopd short 71AF001E
71AF002C                                       EB 04           jmp short 71AF0032
71AF002E                                       897C24 10       mov dword ptr ss:[esp+10],edi
71AF0032                                       58              pop eax
71AF0033                                       59              pop ecx
71AF0034                                       5A              pop edx
71AF0035                                       5F              pop edi
71AF0036                                     - E9 E559529E     jmp guard32.10015A20
71AF003B                                       68 00000000     push 0
71AF0040                                       F0:8325 3C00AF7>lock and dword ptr ds:[71AF003C],0       ; 锁定前缀
71AF0048                                       C3              retn
71AF0049                                       68 00000000     push 0
71AF004E                                       F0:8325 4A00AF7>lock and dword ptr ds:[71AF004A],0       ; 锁定前缀
71AF0056                                       C3              retn
71AF0057                                       68 00000000     push 0
71AF005C                                       F0:8325 5800AF7>lock and dword ptr ds:[71AF0058],0       ; 锁定前缀
71AF0064                                       C3              retn
71AF0065                                       68 00000000     push 0
71AF006A                                       F0:8325 6600AF7>lock and dword ptr ds:[71AF0066],0       ; 锁定前缀
71AF0072                                       C3              retn

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
4KB一个页面也算不上浪费了,用堆的话不一定带有可执行属性,还是自己分配改可执行属性安全些,而且不容易被堆的数据破坏,作为安全软件,还是用安全的办法好。
不过对于HOOK保存当前线程调用的返回地址确实是有点奇葩,难道是有特殊用途,否则解释不通为什么要这么搞。
2013-12-26 07:57
0
雪    币: 341
活跃值: (143)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
膜拜。。。。
2013-12-26 09:11
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
你看看 71AE001E 地址嘛,就给看 71AF001E  ??
明显 71AE001E 应该是它自己的一个全局函数表,通过那个表跳转到他自己的code里面
2013-12-26 09:21
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
目测楼主搞错了???
2013-12-26 11:13
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
明显什么啊  71AE0000 和71AF0000 是两块新内存    guard32.10015A20  才是他自己的内存
2013-12-26 12:43
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
下面是他的占用内存表。。。 每块内存相隔 65536个字节空间 我不知道为什么这么申请。。。HeapCreate可以指定 执行属性
上传的附件:
2013-12-26 12:59
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
可能他占用了一大块内存 才几个代码 面子上过不去 所以搞些动作。。。  再不自己也可以写个简单点的VMemAlloc内存申请吧 用了好大块内存
2013-12-26 13:07
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
我都没看到71AE0000地址的数据,我哪知道哪里是哪里,他里面的地址是71AF0000?
2013-12-30 08:54
0
雪    币: 130
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
恩 。。使用的是文件映射内存 被系统保留申请 0x10000 个字节,我上面的图就是以0x10000地址开始的 每个HOOK占了大概三快大内存    而且 它的防驱动加载不全面 大概可以随便Load了。。。我无语
2013-12-30 16:51
0
游客
登录 | 注册 方可回帖
返回
//