论坛登陆 注册 文章专区 投稿文章 旧版浏览
进程与端口的映射-进程,端口,映射
首页 | 页界资讯 | 安全动态 | 网络应用 | 组网技术 | 网络原理 | 工具软件 | 网管知识 | 帮助
文学 | 操作系统 | 注 册 表 | 编程语言 | 数 据 库 | 服 务 器 | 网页设计 | 图形图象 | VIP
论坛 | 网络安全 | 安全防范 | 黑客技术 | 硬件学堂 | 路由技术 | 搜索研究 | 站长经验 | 投稿
专题 | 教育频道 | 特色专题 | 精文荟萃 | 聊天通讯 | 注 册 码 | 论坛社区 | 广告服务 | 旧版
设为首页 加入收藏
当前位置:首页>>文章>>操作系统>>Windows综合>>正文

进程与端口的映射

www.xker.com 作者:未知 来源:网络转载 加入日期:2005-12-9 9:46:57
 

关于进程与端口映射的文章已经有很多了,我把我对fport的分析也写出来,让大家知道fport是如何工作的.fport.exe是由foundstone team出品的免费软件,可以列出系统中所有开放的端口都是由那些进程打开的.而下面所描述的方法是基于fport v1.33的,如果和你机器上的fport有出入,请检查fport版本.

首先,它检测当前用户是否拥有管理员权限(通过读取当前进程的令牌可知当前用户是否具有管理权限,请参考相关历程),如果没有,打印一句提示后退出,然后设置当前进程的令牌,接着,用ZwOpenSection函数打开内核对象\Device\PhysicalMemory,这个对象用于对系统物理内存的访问.ZwOpenSection函数的原型如下:

NTSYSAPI

NTSTSTUS

NTAPI

ZwOpenSection(

Out PHANDLE sectionHandle;

IN ACCESS_MASK DesiredAccess;

IN POBJECT_ATTRIBUTES ObjectAttributes

};

(见ntddk.h)

第一个参数得到函数执行成功后的句柄

第二个参数DesiredAccess为一个常数,可以是下列值:

#define SECTION_QUERY 0x0001

#define SECTION_MAP_WRITE0x0002

#define SECTION_MAP_READ 0x0004

#define SECTION_MAP_EXECUTE 0x0008

#define SECTION_EXTEND_SIZE 0x0010

#define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE)

(见ntddk.h)

第三个参数是一个结构,包含要打开的对象类型等信息,结构定义如下:

typedef struct _OBJECT_ATTRIBUTES {

 ULONG Length;

 HANDLE RootDirectory;

 PUNICODE_STRING ObjectName;

 ULONG Attributes;

 PVOID SecurityDescriptor; // Points to type SECURITY_DESCRIPTOR

 PVOID SecurityQualityOfService; // Points to type SECURITY_QUALITY_OF_SERVICE

} OBJECT_ATTRIBUTES;

typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;

(见ntdef.h)

对于这个结构的初始化用一个宏完成:

#define InitializeObjectAttributes( p, n, a, r, s ) {  (p)->Length = sizeof( OBJECT_ATTRIBUTES );  (p)->RootDirectory = r;(p)->Attributes = a;(p)->ObjectName = n;(p)->SecurityDescriptor = s; (p)->SecurityQualityOfService = NULL; }

(见ntdef.h)

那么,打开内核对象\Device\PhysicalMemory的语句如下:

WCHAR PhysmemName[] = L"\\Device\\PhysicalMemory";

void * pMapPhysicalMemory;

HANDLE pHandle;

ool OpenPhysicalMemory()

{

NTSTATUS status;

UNICODE_STRING physmemString;

OBJECT_ATTRIBUTES attributes;

RtlInitUnicodeString( &physmemString, PhysmemName ); //初始化Unicode字符串,函数原型见ntddk.h

InitializeObjectAttributes( &attributes, &physmemString,

OBJ_CASE_INSENSITIVE, NULL, NULL ); //初始化OBJECT_ATTRIBUTES结构

tatus = ZwOpenSection(pHandle, SECTION_MAP_READ, &attributes ); //打开内核对象\Device\PhysicalMemory,获得句柄

if( !NT_SUCCESS( status ))

 return false;

MapPhysicalMemory=MapViewOfFile(pHandle,FILE_MAP_READ,

0,0x30000,0x1000);

//从内存地址0x30000开始映射0x1000个字节

if( GetLastError()!=0)

 return false;

return true;

}

为什么要从0x30000开始映射呢,是这样,我们知道,在Windows NT/2000下,系统分为内核模式和用户模式,也就是我们所说的Ring0和Ring3,在Windows NT/2000下,我们所能够看到的进程都运行在Ring3下,一般情况下,系统进程(也就是System进程)的页目录(PDE)所在物理地址地址为0x30000,或者说,系统中最小的页目录所在的物理地址为0x30000.而页目录(PDE)由1024项组成,每项均指向一页表(PTE),每一页表也由1024个页组成,而每页的大小为4K,1024*4=4096(0x1000),所以,上面从物理地址0x30000开始映射了0x1000个字节.

本新闻共5页,当前在第1页  1  2  3  4  5  

上一篇:操作系统进程描述
下一篇:没有了

关闭窗口】【浏览次数:】【发送给好友】【收藏此页
相关文章 最新文章 热门文章

·解析Windows XP操作系统进程
·系统中有几个svchost进程是正常的?
·黑客入侵论坛各种手段大暴光 

·进程与端口的映射
·解析Windows XP操作系统进程
·操作系统进程描述
·常用Windows系统进程列表
·解析Windows系统进程列表
·Win2000常见系统进程描述
·任务管理器:Win2K系统进程详解
·Windows 2000 Server进程详解
·Windows的系统进程及服务
·系统进程概述
·QQ密码丢失后能做的事情:快速找回密码
·免费代理IP(每日更新)
·系统优化 专题
·找回QQ密码的注意事项 
·WinRAR 3.51 注册码
·最经典的黑客入门教材
·怎样查找对方的IP地址
·Norton AntiVirus 2006 注册码(激活
·求职简历封皮
·史上最强QQ个人档案资料欣赏
评论 本站声明
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
  • 本站大部分为网络转载,如有版权问题,请通知我们,我们立即更正!

设为首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright © 2003-2005 xker.com All rights reserved. 网站合作、广告联系QQ:12231446
小新技术网 冀ICP备05002857号