如何判断一个dll是否可以被劫持

 我来答
飘零灬雨季
2016-11-17 · TA获得超过1035个赞
知道大有可为答主
回答量:1138
采纳率:0%
帮助的人:308万
展开全部
一、需要了解的概念,KnownDlls:
KnownDlls是windows下的一种用来缓存经常用到的DLL文件的机制。更准确地说,是被用来加快应用程序对DLL文件的加载速度的机制;也可以被当做是一种安全机制,因为它能够阻止恶意软件植入木马DLL。
knowndlls,顾名思义,是指系统目录默认加载的DLL,现在病毒伪装的马甲DLL置于文件启动目录之下伺机启动早已不是什么有创意的做法。应用程
序启动前优先加载当前目录下的所需DLL,这就给木马的启动又多了一条途径,而knowndlls键值正是斩断这条传播通断的利剑,无论你在当前目录下有
多少马甲DLL,应用程序都会从SYSTEM目录下去寻找,从而避免了马甲的毒害。

二、ZwOpenSection函数:
ZwOpenSection函数在指定对象不存在或不可访问时返回失败
ZwOpenSection返回值:
#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
#define STATUS_ACCESS_DENIED ((NTSTATUS)0xC0000022L)
#define STATUS_INVALID_HANDLE ((NTSTATUS)0xC0000008L)

三、汇编指令:
TEST //仅是在逻辑与操作后,对标志位重新置位,不保留运算结果值。
SF //符号标志,主要作用于JS/JNS指令
JS 条件转移指令,SF=1时跳转

四、解释
http://www.freebuf.com/articles/system/112823.html 文中
“调用ZwOpenSection函数判断是否可以劫持的逻辑流程”图的汇编代码中ZwOpenSection返回0(成功),表示不可劫持,意思即如果是KnownDlls包含的dll是无法进行劫持的,这是对系统dll能够劫持进行判断的一种方法。
初看该文章不明白依据什么进行判断可否劫持,主要是因为作者在截图中缺少了一个对ZwOpenSection函数参数内容(KnownDlls\d3d9.dll)的截图
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式