博文
缓冲区溢出原理及防护(2005-09-10 21:08:00)
摘要:中科院研究生院 蒋 涛
摘 要 本文详细分析了缓冲区溢出的原理,描述了网络攻击者利用缓冲区溢出漏洞进行系统攻击的一般过程,最后简单讨论了几种缓冲区溢出的保护方法。
关键词 缓冲区溢出 缓冲区溢出漏洞 安全攻击 缓冲区溢出保护
在过去的十年中,以缓冲区溢出为攻击类型的安全漏洞是最为常见的一种形式。更为严重的是,缓冲区溢出漏洞占了远程网络攻击的绝大多数,这种攻击可以使得一个匿名的Internet用户有机会获得一台主机的部分或全部的控制权!由于这类攻击使任何人都有可能取得主机的控制权,所以它代表了一类极其严重的安全威胁。
缓冲区溢出攻击之所以成为一种常见的攻击手段,其原因在于缓冲区溢出漏洞太普通了,并且易于实现。而且,缓冲区溢出所以成为远程攻击的主要手段,其原因在于缓冲区溢出漏洞给予了攻击者所想要的一切:殖入并且执行攻击代码。被殖入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。本文简单介绍了缓冲区溢出的基本原理和预防办法。
一、缓冲区溢出的概念和原理
缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。
缓冲区是程序运行的时候机器内存中的一个连续块,它保存了给定类型的数据,随着动态分配变量会出现问题。大多时为了不占用太多的内存,一个有动态分配变量的程序在程序运行时才决定给它们分配多少内存。如果程序在动态分配缓冲区放入超长的数据,它就会溢出了。一个缓冲区溢出程序使用这个溢出的数据将汇编语言代码放到机器的内存里,通常是产生root权限的地方。仅仅单个的缓冲区溢出并不是问题的根本所在。但如果溢出送到能够以root权限运行命令的区域,一旦运行这些命令,那可就等于把机器拱手相让了。
造成缓冲区溢出的原因是程序中没有仔细检查用户输入的参数。例如下面程序:
example1.c
void func1(char *input) {
char buffer[16]; ......
菜鸟如何查找清除插入式木马程序(2005-09-10 21:00:00)
摘要:目前网络上最猖獗的病毒估计非木马程序莫数了,2004年后木马程序的攻击性也有了很大的加强,在进程隐藏方面,做了较大的改动,不再采用独立的EXE可执行文件形式,而是改为内核嵌入方式、远程线程插入技术、挂接PSAPI等,这些木马也是目前最难对付的。本期就教你查找和清除线程插入式木马。
操作步骤:
1.通过自动运行机制查木马
一说到查找木马,许多人马上就会想到通过木马的启动项来寻找“蛛丝马迹”,具体的地方一般有以下几处:
1)注册表启动项:
在“开始/运行”中输入“regedit.exe”打开注册表编辑器,依次展开[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\]和[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\],查看下面所有以"Run"开头的项,其下是否有新增的和可疑的键值,也可以通过键值所指向的文件路径来判断,是新安装的软件还是木马程序。
另外[HKEY LOCAL MACHINE\Software\classes\exefile\shell\open\command\]键值也可能用来加载木马,比如把键值修改为“X:\windows\system\ABC.exe "%1"%”。
2)系统服务
有些木马是通过添加服务项来实现自启动的,大家可以打开注册表编辑器,在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices]下查找可疑键值,并在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\]下查看的可疑主键。
然后禁用或删除木马添加的服务项:在“运行”中输入“Services.msc”打开服务设置窗口,里面显示了系统中所有的服务项及其状态、启动类型和登录性质等信息。找到木马所启动的服务,双击打开它,把启动类型改为“已禁用”,确定后退出。也可以通过注册表进行修改,依次展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务显示名......
关于AutoCAD中线型的定制问题(2005-09-03 19:40:00)
摘要:线型的多样性,是地形图绘制的特色之一,可以说掌握了地形图中线型的定制和使用,就等于掌握了AutoCAD线型定制的全部内容。地(形)图行政区界线、道路、管线等都是用特殊的线型表示的,虽然在AutoCAD中很少有可供使用的专用的地形图线型,但通过由AutoCAD提供的线型自定义功能,处理这些特殊线型也并不是一件困难的事。本文通过对地形图中典型线型的定制和使用的介绍,以帮助初学者掌握AutoCAD中线型的定制及使用。 在这里把地形图中的线分为两大类:一类是普通意义上的线,象等高线、小路,输电线、长城线等,这样的自定义线尽管有的外形较复杂,但都把它归为同一类,因为它们在使用上是一致的,由同样的方式调用,同样可供line、pline这样的命令使用,是“真正的线”;另一类是所谓多线(或多重线)Multiline。多重线实质上是由多条线平行构置而成,对其定义好后,由多重线绘制命令mline,一次就可以把多条不同样式的平行线绘制成。Multiline(多线)作为一种“线”,比起用Offset(偏移)等命令来,在使用上自然有作为“线”的优越之处。
一、 如何定制各种通用的性型
可以把普通线型的分为三类:简单线型、带形(Shape)的线型、带文本字符串的线型。
(一)、 如何编辑和调用线型文件
线型文件是以.lin为扩展名的文本文件,可使用任何ASCII文本编辑器来编辑,如WINDOWS的NOTEPAD记事本。将线型文件编辑好后最好保存在AutoCAD的路径中,如AutoCAD安装目录下的\SUPPORT子目录中,这样就可以进入AutoCAD的缺省调用路径中。在线型文本中,可插入任何说明,只需在行首加上双分号“;;”。
在AutoCAD中要调用自定义的线型,只需在线型调用对话框中,将待输入的线型文件名,能过浏览路径,选择确认自定义的.lin文件即可。
(二)、 如何定义象行政分界线这类简单的线型。
这类线型是由重复使用的虚线、空格、点组成,如:
*县界(宽.2), -.-.-.-.-.-.-
A,2.0,-1.0,0,-1.0
第一行中*号为标示符,标志一种线型定义的开始。“县界”为线型名,宽.2用以提示线宽为0.2mm。在AutoCAD 2000中增加了线宽选择的工具条,就放在线型选择条的旁边,这是一个很有用的功能,通......
Auto CAD2004完全笔记5(2005-08-06 09:43:00)
摘要:三维部分
三维部分笔记:
UCS:User(用户)Coordinate(坐标)System(系)
WCS:Word(世界)Coordinate(坐标)System(系)
UCS类型:
1.原点UCS,可以在不改变X、Y、Z三轴方向的情况下,放置坐标系的原点。
2.Z轴矢量UCS:第一点确定的是原点,第二点确定的是Z轴正方向。
3.3点UCS:第一点为原点,第二点为X轴正方向;第三点为Y轴正方向。
4.X/Y/Z轴旋转UCS:从原点向固定轴正方向看,逆时针为负,顺时针为正。旋转也就是两根轴同时向第三根轴旋转相同的角度。
5.面UCS:将X、Y平面快速置于选取的平面上,参考面只能是平面,曲面不能放置UCS。
6.对象UCS:主要是针对X、Y平面而言,也就是以对象来旋转X、Y平面中的X、Y轴方向;
指XY面在不脱离原面的情况下,XY轴的方向发生变化,点的一点作为X轴正方向,离此点最近的端点为原点。
7.视图UCS,不论当前UCS的X、Y、Z三根轴方向如何,视图UCS均可以将X置于水平方向,Y置于垂直方向,这样可以利用不同文件间视图的相互统一。
注:在AutoCAD建模中,重要的内容是视图的空间不断切换和UCS的灵活应用,主要是实体建模,AutoCAD的曲面建模功能较弱。
三维部分菜单的操作:
视图:(视图菜单下有如下视图)
六个平面视图:俯视图、仰视图、左视图、右视图、主视图(又名前视图)、后视图
四个等轴侧视图:西南等轴侧视图、东南等轴侧视图、东北等轴侧视图、西北等轴侧视图;此四个视图均从45度对角线去看图形。
照相机视图:以两点来定一个视图;从第一点看向第二点。
实体工具栏:
3个基本体系(长方体、球体、圆柱体)、圆锥体、楔体、圆环的绘制
拉伸建模:(前提:必须是首尾相连的封闭体)默认操作为给一个高度也可给拉伸角度,拉伸角度定义:给正值越来越小,给负值越来越大;沿路径进行拉伸:要和图形垂直并且只能在X、Y面上进行绘制 实例:椅子的制作等
旋转建模:有三个参数可选,但是一般不用。基本操作:以两点确定一条轴旋转。实例:碗的制作、圆桌的绘制等
剖切:选择对象之后有如下提示:
指定切面上的第一个点,依照 [对象(O)/Z 轴(Z)/视图(V)/XY 平面(XY)/YZ 平面(YZ)/ZX 平面(ZX)/三点(3)] &l......
Auto CAD2004完全笔记4(2005-08-06 09:42:00)
摘要:半径、直径:用来标圆和圆弧的半径和走私。
圆弧:用的最多的是半径标注。圆:可用半径也可用直径。随便。
角度:无限长的线无法进行角度标注。
基线标注:必须有一个标注的前提下才能使用;在第一个标注的左侧点就以左边为基点,在第一个标注的右侧点就以右侧为基点。
连续标注:也要有一个前提。然后是一个一个往后标。
引线:引一条线方便无法标注的尺寸。要想引线做的标注文字的移动不影响引线。画好引线之后按Esc键。
公差:公差给多少可根据实际经验或自己查手册来给。形位公差:(形状、位置公差)(注:公差有书专门介绍。可自己买教材回来看)公差无法分解。属于外部参照类。如要修改可用编辑文字来修改。
圆心标记:在圆心上加一个标记,默认大小为半径2.5毫米
倾斜:将标注倾斜,选中之后给倾斜角度
对齐文字:有五个选项包括:(默认、角度、左、中、右)
样式:可更改标注的样式。
标注样式:
标注样式对话框首页上有下列按钮:
置为当前:将某个标注样式置为当前。
新建:新建标注样式。
修改:修改标注样式选项。修改直接将此图内所以标注更改
替代:将当前标注样式中的某些选项替代换成另外的选项。但不更改已标注的对象。
比较:将两个标注样式中的选项进行比较。列出不同的选项。(会弹一个对话框。)
点新建按钮将进入下一个对话框。里面的选项卡依次是:
新样式名:指定新新样式名
基本新式:用将哪种标注样式为基本样式。
用于:用于所有标注还是……
填完点继续将对新的标注样式进行下一步设置。
点修改和替代进入的下一级对话框是一样的:选项卡内依次为:
直线和箭头:此选项卡中将对标注的直线和箭头的属性进行更改。
文字:此选项卡用来编辑标注文字属性
调整:调整标注的一些设置。其重点为:全局比例
主单位:设置标注的单位和标注的精确度。和标注的比例因子(注:比例因子不可随便更改。)
换算单位:如勾上。会将标注的换算单位显示出来。(公制毫米和英尺英寸之前换算)
公差:对公差进行设置。一般不用。
注:标注比例的控制:即全局比例的控制。图框放大N倍,则全局比例就给N倍。
相反如图框缩小1/N,则全局比例就给面1/N。
公差符号:公关的公式:
基本:尺寸\H公差高度\S上偏差^下偏差
注:H和S必须是大写的。
1:1的图形:H可以设置为......
Auto CAD2004完全笔记3(2005-08-06 09:42:00)
摘要:2)、W来制作图块,此图块可以放在一个指定的目录中,可以方便的进行调用,并且可以实现图块的相互替换
二、图块的插入:
1)、插入----图块,浏览,找到图块名
2)、minsert可以实现图块的阵列插入
三、图块的替换,操作步骤:
1)、在命令行输入 -i,回车
2)、被替换的图块名称=替换的图块名称,回车
3)、输入Y,回车,即确认图块重定义,实现替换
4)、按ESC键,取消插入图块,只实现图块替换
四、属性的定义:
属性是依附于图块的信息,必须结合图块才可以实现自身功能,在插入图块时,提示信息输入
附:图块替换路径的确定,确定图块所放的目录后,工具/选项/文件/支持工程文件的搜索路径,点“添加”找到图块所存放的目录。只有搜索目录满足要求,才可以实现图块替换。
图块属性的定义:
绘图——块——定义属性
编辑属性(对定义属性的文字操作)
如在屏幕上指定点则是以命令的等式显示属性的录入,如插在原点的位置则以对话框的形式提示。
图块实例:
补充说明:如果本身文件丢失,想要用备份文件的话,可以直接将备份文件的扩展名名为.dwg即可。
多线(ml) 多线编辑(mledit)
建筑图一般分为两大类:建筑施工图、室内装饰图
多线图标的调入:右击任何浮动工具条一工具栏——自定义——命令——绘图——多线
多线宽度的控制,默认宽度是1。因为1的N倍是N。
多线的线条数可以改变:格式——多线样式 绘制建筑图时一般将多线设为三条。
多线的比例的控制——针对墙壁的厚度。一般的比例为:120 240 360 480 等。
绘制多线时有一个对齐方式的设定:有三种对齐方式——上、下、无。在绘制的过程中选择“无”。鼠标以中间为对齐。上和下一般不用。
多线在没有炸开的情况下不可修剪。(注:炸开之后将无法恢复!)
建筑墙体画完整理好之后可将中间线删除。利用:工具——快速选择----颜色选择
如果通过颜色选不中的话。两个原因。第一:颜色代码给的不正确。第二:多线没有分解。
建筑中门窗的大小:窗户一般有......
Auto CAD2004完全笔记2(2005-08-06 09:40:00)
摘要:云线(revcloud)用来做标记(不重要)
样条曲线(SPL)全称:(pline)
用左键确定各点后,三次回车:第一次断开,第二次起点切线方向,第三次终点切线方向
椭圆(EL)全称(ellipse)
不常用。先给长轴的总长,再给短轴的一半。或者以中心画:长短轴各给一半。
椭圆弧(ellipse)不常用。用来画椭圆弧
点(P)全称(point)
点工具不可以按右键确定退出,要想退出只能按ESC键。有下列绘制操作:
格式:点样式
点的大小,相对于屏幕的比例给10%比较合适,
外面的图标相当于多点 ,操作过程中,按 ESC才能退出
单点:绘图菜单里,即点一点就退出
点的定数等分(DIV): 通过点将一个对象等分成N等份
点的定距等分(ME):将一个对象按多长距离一个点做标记
闭式路径的等分,N等分就为N个点;开式路径的等分,N等分为N—1个点
注:点的操作不同于其他工具的操作,退出后重复上一次操作可以回到上次想要的,和其他有联级菜单的绘图工具不一样
图案填充(BH)全称(bhatch)
必须是封闭的对象才能填充
AR开头 建筑上比较多
ANSI美国国家标准
ISO国际标准化组织的标准
一定要点预览 ESC或右键 返回
编辑剖面线: 修改II:第二个图标
剖面填充后,在没有分解的情况下,可以特性匹配MA
填充图案尽量不要分解,以便于编辑
图案填充的三种高级设置:
外部的意思,点哪个区域,填充哪个区域
注:忽略填充,往里面忽略,计算方式为向内计算
面域(REG)全称(region)
前提:首尾相连的封闭体 引申出点线面体的概念
将一个首尾相连的封闭对象由线框变成一个面,实现线到面的转换。第一次点会有点慢
引伸到布尔运算:调出实体编辑,布尔运算的三种形式:并集、差集、交集,只有面域才可以进行布尔运算
修改工具栏:
删除(E)全称(erase)
用来删除对象,点击删除在命令行输入ALL即是删除绘图区域所以对象;默认为删除被选中对象
复制(CO)全称(copy)
用来复制对象,默认为复制被选对象;指定基点将复制出的对象移动到另一个位置。......
Auto CAD2004完全笔记1(2005-08-06 09:39:00)
摘要:Auto CAD2004完全笔记
准备知识
在图形表达时,如果没有特殊说明,均以毫米为单位
光滑度确定:工具/选项/显示/圆弧和圆的平滑度 为20000。注:最大值
右键功能取消:工具/选项/用户系统配置/绘图区域中不显示快捷菜单
密码设:工具/选项/打开和保存/下面的安全选项
对象捕捉设置:工具/草图设置/对象捕捉——全部选择
UCS图标可见性:视图/显示/UCS图标/(开/关)
相对坐标:前面加上@
相对直角坐标格式:@x的变量,Y的变量
相对极坐标格式:@长度<角度
角度为与水平正方向所成的角度:
水平方向右为“0”度,逆时针为正,顺时针为负
尺寸分两种:定形尺才和定位尺才
绘制直线时,U为撤消一步 C为封闭,也可以按CTRL+Z等于撤消到上一次操作。
启用对象捕捉快捷键(F3)
正交模式快捷键(F8)
F2键为命令行窗口和绘图窗口相互之间进行切换
AutoCAD对色彩没有特殊要求
选择常用的三种方法:
1)从左向右拖动窗口选择,要框住才能选中
2)以右向左拖动窗口选择,只要接触到对象就能选中,包含在其内的也能选中
3)点选
在AutoCAD的操作中,一般情况下,鼠标右键等同于回车键
操作完成后,再按一次右键为重复上一次的操作
三键鼠标 中间键向外滚动为放大窗口,向里滚动为缩小窗口
平面部分一
[两列工具条,除文字、图块、多线]
工具栏的操作:绘图工具栏(等同于绘图菜单)
直线(L):全称(line)
在屏幕上指定两点可画出一条直线。也可用相对坐标
或者在正交模式打开的情况下,直接给实际距离 鼠标拖动来控制方向
构造线(XL):全称(xline)
H为水平 V为垂直 O为偏移 A为角度 B为等分一个角度。
多段线(PL):全称(pline)
首先在屏幕上指定一点,然后有相应提示:
指定下一个点或 [圆弧(A)/半宽(H)/长度(L)/放弃(U)/宽度(W)]。可根据需要来设置。
其中“圆弧”指定宽度可画任意角度圆弧;“半宽”指多段线的一半宽度,即如要高线宽为10,则5;“长度”给相应的值,则画出相应长度的多......
vb实战1(2005-08-02 09:17:00)
摘要:417198309(417198309) 08:51:02
Team work(183006284) 07:14:53
在一个文本框中有多行文本。
点击其中任意一行,把相应的内容显示在另一文本框中,要怎么实现呢?
自由飞翔(417198309) 08:51:51
你参考这个代码:
点击其中任意一行,把相应的内容显示在另一文本框中,要怎么实现呢?
自由飞翔(417198309) 08:52:57
Option Explicit
Const EM_GETSEL = &HB0
Const EM_LINEFROMCHAR = &HC9
Const EM_LINEINDEX = &HBB
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
Public Sub GetCaretPos(ByVal hwnd5 As Long, LineNo As Long, ColNo As Long)
Dim i As Long, j As Long
Dim lParam As Long, wParam As Long
Dim k As Long
i = SendMessage(hwnd5, EM_GETSEL, wParam, lParam)
j = i / 2 ^ 16 '取得目前光标所在位置前有多少个Byte
LineNo = SendMessage(hwnd5, EM_LINEFROMCHAR, j, 0) '取得光标前面有多少行
LineNo = LineNo + 1
k = SendMessage(hwnd5, EM_LINEINDEX, -1, 0)
'取得目前光标所在行前面有多少个Byte
ColNo ......
基于VB的分布式监控系统通信设计2(2005-08-02 04:09:00)
摘要:4. 网络通信
VB6.0与旧版本相比较,最明显的特点是增加了强大的网络功能,将其用于分布式监控系统中可以轻松地实现远程通信。VB的WINSOCK控件有效屏蔽了对WINDOWS套接字的低层操作,可方便地建立起网络中任意两个具有唯一IP地址节点间的连接,并通过UDP或TCP协议进行数据交换,可用于创建Client/Server应用程序。
本文举分布式监控系统中节点间通信的实例,其中节点A(IP地址202.114.102.134)作为服务器负责某一区域的数据采集与处理,程序内有一名为TCPServer的Winsock控件;节点B(IP地址202.114.102.135)是同级或上一级的某一节点,作为客户机,其程序内有一名为TCPClient的Winsock控件。
节点A服务器核心程序如下:
(1)初始化程序
tcpserver(0).RemoteHostIP = 202.114.102.135
tcpserver(0).LocalPort = 1001 'tcpserver(0)专用于侦听
tcpserver(0).Listen
(2)发送数据程序
tcpserver(Index).SendData Text1.Text
(3)处理客户机连接请求程序
Private Sub TCPServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load tcpserver(Index)
tcpserver(Index).Accept requestID
End Sub
(4)客户机数据到达处理程序
Private Sub TCPServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim RD As String
tcpserver(Index).GetData RD, vbString
txtRD.text=RD
tcpserver(Index).SendData RD
End Sub
(5)关闭连接程序
Private Sub TCPServer_Close(Index As Integer)
tcpserver(Index).Close
Unload tcpserver(Index)
E......
