枚举服务的一种方法(补)
来源:互联网 发布:网络出租屋怎么申请 编辑:程序博客网 时间:2024/04/25 18:41
上文说到可以通过遍历链表的方法枚举所有的服务,但也会遇到一些限制,如操作系统版本或者若系统服务不在链表中就不可以枚举了。下面的方法可以解决之,就作为对它的补充吧:)
我们通过WindowsNT源代码(见下):
DWORD
ScCreateServiceRecord(
IN LPWSTR ServiceName,
OUT LPSERVICE_RECORD *ServiceRecord
)
{
...
(*ServiceRecord) = (LPSERVICE_RECORD)HeapAlloc(
ServiceRecordHeap,
HEAP_ZERO_MEMORY,
nameSize + sizeof(SERVICE_RECORD)
);
...
}
知道Services.exe为每个SERVCIE_RECORD结构使用了堆分配的空间,且大小为sizeof(SERVICE_RECORD)+服务名称的大小。
了解这个,我们就可以使用Tool32help函数Heap32ListFirst/Next和Heap32First/Next函数来遍历Services.exe的所有分配的堆。根据SERVICE_RECORD.Signature
是否为0x76724573("sErv" in ASCII)来判断是否为一个真正的SERVICE_RECORD结构,此法就可以躲过操作系统的限制,同时也可以防止某些人将一些“特殊”的服务从链表上摘掉。
- 枚举服务的一种方法(补)
- 枚举服务的一种方法
- 08-01-29>pe_xscan 增加了一种枚举系统服务的方法
- 一种常见的python实现枚举方法
- 枚举当前系统进程的一种方法
- 关于一种另类的枚举方法
- 一种将枚举Enum转换为JSON对象的方法
- 关于枚举的一种用法
- Windows服务程序的一种简捷实现方法
- web服务鉴权的一种实现方法
- 一种中心服务中同步状态的方法
- 一种通过AIDL实现DLNA共享服务的方法
- 求数组中最大子数和的一种简单方法(非枚举)
- 一种枚举指定序列的方法 ————CF A. Pizza Separation
- 格式化补0的方法
- 位置补零的方法
- 插补方法的分类
- 一种基于手机网络共享服务的网络连接的方法及手机的制作方法
- 经典数据库备份与还原处理(转邹建)
- synchronized notifyAll wait的使用
- 面试有感
- 大学毕业整十年
- 算法的力量(李开复)
- 枚举服务的一种方法(补)
- 记录每天的事情
- JavaString String对象
- 设计模式之(State)模式
- javascript 下的trim函数
- 表达式语言(EL)和OGNL
- 什么是开源软件? 什么是免费软件?GNU是什么意思?
- 阮一峰的IT技术笔记 ?? 必须学会的几个网络测试命令(转贴)
- 什么是"Open Source"(开放源码)