aurain
技术文摘
posts - 137,  comments - 268,  trackbacks - 0
     摘要: 在应用层,枚举进程及其通信端口一般可以用iphlpapi.dll中提供的函数来获取。如获取Tcp连接,则调用GetTcpTable或者AllocateAndGetTcpTableFromStack来查询。这些API都是通过调用NtDeviceIoControlFile这个NativeAPI来进入内核查询信息的,如果在内核用SSDT Hook来挂钩此函数,从而隐藏特定的IP、端口信息的话,那么在应用层,常规的查询方法就查不到隐藏的端口了。
本文通过直接向设备对象\Device\Tcp发送IOCTL Code=IOCTL_TCP_QUERY_INFORMATION_EX的命令,直接获取进程,端口信息。本文也同时实现了UDP端口的查询。
具体请参考下面的代码,使用WinDDK 6001.18001编译。
  阅读全文
posted @ 2010-07-09 18:28 水 阅读(5763) | 评论 (3)编辑 收藏
     摘要: 最近在项目中需要用到哈希表,要以ip地址构造哈希函数和比较函数。就去网上找了下相关的资料,看了下glib中哈希表中的实现方式,虽然最终没用这个,但既然找了就顺便记录下来,方便查阅。
哈希表是一种提供key-value访问的数据结构,通过指定的key值可以快速的访问到与它相关联的value值。hash表的一种典型用法就是字典,通过单词的首字母能够快速的找到单词。关于哈希表的详细介绍请查阅数据结构的相关书籍,我这里只介绍glib库中哈希表的哈希函数和比较函数。
  阅读全文
posted @ 2010-07-06 17:43 水 阅读(3735) | 评论 (1)编辑 收藏
     摘要: 枚举进程模块通常可以使用诸如:CreateToolhelp32Snapshot,Module32First,Module32Next 等"Tool Help Functions"接口来实现, 并且这也是最通用的方法(从Win95就开始支持了), 但是今天我们要介绍的是ntdll.dll导出的未文档化接口ZwQueryVirtualMemory,。相比前面所介绍的方法,该方法可以检测出隐藏的模块(类似IceSword)。  阅读全文
posted @ 2010-07-05 16:32 水 阅读(9436) | 评论 (3)编辑 收藏
posted @ 2010-05-21 14:23 水 阅读(794) | 评论 (0)编辑 收藏
posted @ 2010-05-21 14:13 水 阅读(897) | 评论 (0)编辑 收藏
     摘要: 在Windows执行体中,通过文件对象来代表文件,该文件对象是一种由对象管理器管理的执行体对象。例如:目录也是由文件对象代表的。

内核组件通过对象名来引用文件,即在文件的全路径前面加\DosDevices。(在Windows 2000及后续操作系统中,\??等同于\DosDevices)。例如,文件C:\WINDOWS\example.txt的对象名为\DosDevices\C:\WINDOWS\example.txt。你需要用对象名来打开文件以获取句柄。

  阅读全文
posted @ 2009-12-31 15:27 水 阅读(9994) | 评论 (1)编辑 收藏
     摘要: 一种自定义网络通信协议  阅读全文
posted @ 2009-12-31 08:57 水 阅读(4522) | 评论 (2)编辑 收藏
     摘要: 整理了tcp/ip协议栈中一些常见的协议格式结构体定义,如以太网包、arp、ip等  阅读全文
posted @ 2009-12-03 11:47 水 阅读(6752) | 评论 (0)编辑 收藏
     摘要: SQL——表结构、表数据的复制  阅读全文
posted @ 2009-11-15 15:52 水 阅读(806) | 评论 (1)编辑 收藏
     摘要: 大量的系统安全问题是由于薄弱的缓冲处理以及由此产生的缓冲区溢出造成的,而薄弱的缓冲区处理常常与字符串操作相关。c/c++语言运行库提供的标准字符串操作函数(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的写入。

基于Windows XP SP1以及随后的操作系统的Windows DDK版本提供了安全字符串函数(safe string functions)。这类函数被设计的目的是用来取代相同功能的c/c++标准函数和其它微软提供的库函数。这类函数具有以下特征:

每个函数以目标缓冲区所占的字节大小作为其一个输入参数,因此可以保证在写入时不会超出缓冲区末端。
每个函数的输出字符串均以NULL结尾(null-terminate),即使该函数可能会对正确的结果进行截断。
所有函数均有返回值,类型为NTSTATUS,只有返回STATUS_SUCCESS时,操作结果才正确。
每个函数均有两种类型的版本,按字节或者按字符数。例如,RtlStringCbCatW和RtlStringCchCatW。 阅读全文
posted @ 2009-09-27 14:50 水 阅读(6344) | 评论 (0)编辑 收藏
仅列出标题
共14页: 1 2 3 4 5 6 7 8 9 Last 

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(17)

随笔分类(138)

随笔档案(137)

网络开发

最新随笔

搜索

  •  

积分与排名

  • 积分 - 489123
  • 排名 - 36

最新随笔

最新评论

阅读排行榜

评论排行榜