三个nop的玄机

2014-2-10 Nie.Meining Debug

最近百度卫士宣传力度挺大,春节在家闲来无事下载了一个看看。第一印象感觉界面简约,功能干净不臃肿,是我喜欢的风格。首先在x86环境下看看hook点:

1.png

跟360、金山卫士、QQ管家等其它主动防御一样,hook点选择了系统调用的分发函数KiSystemServiceRepeat。而且hook方式跟QQ管家很像,将mov edi, esp; cmp esi, xxx; 这两条指令替换成了三个nop和一个jmp,但是他们之间的区别是,QQ管家是先nop再jmp,百度卫士是先jmp再nop。其实这个顺序是有玄机的!(以前逆向过QQ管家,感谢sysnap大牛点拨)

我们先看看hook前的原始指令截图如下:

2.png

我们现在来考虑一个小概率的特殊情况,假如某个内核线程正好执行完图中的mov edi, esp指令(即将执行下一条指令cmp esi, xxx)时,hook操作发生了。在这种情况下,按照QQ管家的hook方式,该内核线程可以安全着陆(下一条指令变成了nop而已),但是百度卫士的hook方式可能会导致蓝屏。因此从hook安全的角度上来讲还是先nop后jmp好一些。不过这是个小概率事件。

接着看了看jmp到的地址,在bd0001.sys驱动中:

3.png

各种需要的信息压栈后,call过滤函数。过滤函数部分截图如下:

4.png

感觉跟其它主动防御的处理方式也差不多。由于曾经逆向过QQ管家(QQ电脑管家中的TsFltMgr Hook框架分析》、QQ电脑管家中的 Hook 过程分析》),这里就没再继续了。另外由于这种处理框架在现有的主动防御软件中非常流行,我曾经也自己手痒仿照这种框架完成过一个主动防御的雏形,开源放到了看雪上了:《发一个主动防御的代码》。

接下来用64位的win8系统也做了一下测试。由于PatchGuard的原因,64位主动防御目前主要采用对象钩子实现。测试的截图如下:

5.png

图中 CallbackDetect.sys 中的钩子是我的检测模块注册的假钩子;bd0001.sys 中的钩子是百度卫士注册的钩子;其它是360注册的钩子。对象钩子的检测方法可以参考我前几天写的《ObCallback 回调钩子检测》。不过该文章中有些结构逆向得不太精确,感谢FlowerCode大牛的讨论和补充,两个关键结构精确描述如下:

typedef struct _CALLBACK_BODY {
	LIST_ENTRY                  CallbackList;
	OB_OPERATION                Operations;
	ULONG                       Active;
	OB_HANDLE                   Handle;
	POBJECT_TYPE                ObjectType;
	POB_PRE_OPERATION_CALLBACK  PreOperation;
	POB_POST_OPERATION_CALLBACK PostOperation;
	EX_RUNDOWN_REF              RundownProtection;
} CALLBACK_BODY, *PCALLBACK_BODY;

typedef struct _CALLBACK_NODE {
	USHORT         Version;
	USHORT         OperationRegistrationCount;
	PVOID          RegistrationContext;
	UNICODE_STRING Altitude;
	CALLBACK_BODY  Entries[1];
} CALLBACK_NODE, *PCALLBACK_NODE;

评论:

borter
2018-09-08 03:48
viagra online prices cialis levitra
http://www.cialiscnrx.com/#
ulcetle
2018-09-07 15:42
safely buying cialis overseas
http://cialiscnrx.com/#
toneBlog
2018-09-04 13:36
tadalafil cost buy cialis online
http://cialiscnrx.com/#
Richardokpew
2018-09-04 11:35
can you get high on viagra
http://www.viagrabs.com/ - buy generic viagra[/url]
what happens if viagra lasts more than 4 hours
Richardokpew
2018-09-04 10:48
hakkД± viagra
http://www.viagrabs.com/ - viagra online[/url]
when will a generic version of viagra be available
Richardokpew
2018-09-04 10:23
the cheapest viagra online
http://viagrabs.com/ - buy viagra online[/url]
can you buy viagra online without prescription
Anercoto
2018-09-04 04:20
buy generic cialis 5mg online
http://www.cialiscnrx.com/#
Hassanahagich
2018-09-02 15:49
what will too much cialis do
http://cialisle.com - cialis
cialis when do you take it
Hassanahagich
2018-09-02 14:14
forum cialis france
http://cialisle.com - cialis online
cialis daily long term effects
Hassanahagich
2018-09-02 12:47
cialis pump bodybuilding
http://cialisle.com - cialis online
is taking cialis dangerous
ADrusadusa
2018-08-31 21:29
Pression arterielle  est comment dur  votre sang pousse contre les parois de vos arteres lorsque votre coeur  essence pompe le sang. Arteres sont les tubes qui transportent prendre  offre sang loin de votre coeur. Chaque temps  votre  manque de sensibilite bat, il pompe le sang  tout au long vos arteres a la reste  de votre corps.
https://www.cialispascherfr24.com/ou-acheter-cialis-internet/
Hassanahagich
2018-08-29 23:21
ervaring cialis 5 mg
http://cialisle.com - buy generic cialis
what is the best online pharmacy for cialis
Hassanahagich
2018-08-29 21:05
best site to buy cialis without prescription
http://cialisle.com - cialis
cialis 5mg lilly fta
Hassanahagich
2018-08-29 16:25
cialis uk over the counter
http://cialisle.com - buy generic cialis
cialis interactions with other drugs
Hassanahagich
2018-08-29 13:19
buying cialis online is it safe
http://cialisle.com - cialis
is cialis covered by insurance

发表评论:

Powered by emlog