如何判断一个dll是否可以被劫持
展开全部
一、需要了解的概念,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)的截图
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)的截图
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询