gdi+ c盘哪些文件可以删除图像

GDI+_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
G​D​I​+​画​图​P​P​T​教​程
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:826.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢vb运用Gdi+ 函数绘制任意四边形图像_vb吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:54,296贴子:
vb运用Gdi+ 函数绘制任意四边形图像收藏
vb运用Gdi+ 函数绘制任意四边形图像
vb运用Gdi+实现矩形、平行四边形图像很容易。如果要绘制任意四边形图像就不是一件容易的事,因为在Gdi+中没有具体实现的函数。究竟能不能实现呢?答案是肯定的。我把它封装成一个方法,代码如下:
'绘制任意四边形图像函数
Public Sub ImgAnyRectI(ByVal graphics AsLong, ByVal bitmap As Long, pot() As POINTL, count As Integer)
Dim Bitmap2 As Long
Dim gBmp As Long
Dim pox(3) AsVariant
Dimpoy(3) As Variant
Dim pos(3) As POINTL
Dim newW As Long
Dim newH As Long
Dim i As Long
Dim ky1 As Single
Dim ky2 As Single
For i = 0 To 3
pox(i) = pot(i).X
poy(i) = pot(i).Y
QSortAny pox, 0, 3
QSortAny poy, 0, 3
newW = pox(3) - pox(0)
newH = poy(3) - poy(0)
GdipCreateBitmapFromScan0 newW,newH, 0, GpPixelFormat.PixelFormat32bppARGB, ByVal 0, Bitmap2
GdipGetImageGraphicsContextBitmap2, gBmp
GdipGraphicsClear gBmp,&HFFFFFF
GdipDrawImageRectI gBmp, bitmap, 0, 0, newW, newH
ky1 = pot(3).Y - pot(0).Y
ky2 = pot(2).Y - pot(1).Y
For i = 0 To newH - 1
pos(0).Y = ky1 * i /newH + pot(0).Y
pos(0).X = ((pos(0).Y -pot(0).Y) * (pot(0).X - pot(3).X)) / (pot(0).Y - pot(3).Y) + pot(0).X
pos(1).Y = ky2 * i /newH + pot(1).Y
pos(1).X = ((pos(1).Y -pot(1).Y) * (pot(1).X - pot(2).X)) / (pot(1).Y - pot(2).Y) + pot(1).X
pos(2).Y = ky1 * (i +2) / newH + pot(0).Y
pos(2).X = ((pos(2).Y -pot(0).Y) * (pot(0).X - pot(3).X)) / (pot(0).Y - pot(3).Y) + pot(0).X
GdipDrawImagePointsRectI graphics, Bitmap2, pos(0), 3, 0, i, newW, 1,UnitPixel
GdipDisposeImage Bitmap2
GdipDeleteGraphics gBmp
'快速排序(升序)
Public Sub QSortAny(Arr As Variant, LowAs Long, Hi As Long)
If Not IsArray(Arr) Then Exit Sub
On Error GoTo QuickSort
Dim M As Variant
Dim V As Variant
If Hi &= Low Then Exit Sub
M = Arr(Int((Low + Hi) \ 2))
Do While (l &= h)
While Arr(l) & M: l= l + 1: Wend
While M& Arr(h): h = h - 1: Wend
If (l &=h) Then
V = Arr(l): Arr(l) = Arr(h)
Arr(h) = V
l = l + 1:h = h - 1
If (Low & h) Then QSortAny Arr,Low, h
If (l & Hi) Then QSortAny Arr, l, Hi
Exit SubQuickSort:
MsgBox Err.descriptionEnd Sub
下面详细解释实现的思路。
在Gdi+函数中有一个函数 GdipDrawImagePointsRectI 他能帮我们实现任意四边形图像绘制,它是绘制任意四边形图像的核心函数。绘制任意四边形图像函数中用到的其它函数,如下:
'数组排序(这不是Gdi+函数是我封装的一个函数)
GdipCreateBitmapFromScan0
'用于在内存中创建一副图片
GdipGetImageGraphicsContext
'用于从内存中图片在内存中创建画布
GdipGraphicsClear
'用于设置画布背景完全透明
GdipDrawImageRectI
'用于在内存画布上绘制矩形图像
GdipDisposeImage
'用于删除内存中的图像
GdipDeleteGraphics
'用于删除内存中的画布
要绘制任意四边形图像,矩形图像无法一次绘制出整个任意四边形图像。要把矩形图像切割成1--2个像素高,宽与矩形图像宽相等的图片,对于每一个图片进行拉伸变形后,绘制到目标的相应位置,全部完成后整个任意四边形图像就绘制出来了,为避免闪烁要在内存中绘制,再把内存中这个图像一次性绘制到屏幕上,这就是我们要的任意四边形图像。
这里有一个问题需要注意,我们先来看一副图片。
其中,ABCD 矩形是abcd任意四边形外接矩形,我们在内存中绘制ABCD 矩形大小的图像,abcd 任意四边形是我们要绘制的图像,AB边对应ab边,BC边对应bc边,CD边对应cd边,DA边对应da边。我们把ABCD矩形图像,从上到下进行切割。利用循环很容易做到,每次增加一个像素,DA边有多少像素高,就把图像切割成多少个图片,因为da边可能比DA边要长,但da边不可能大于DA的2倍,所以把每一个图片的高设置为2像素,使图片有一个像素的重复,这样就避免了露白现象。
如何根据在DA边上的位置计算出在da边相应位置呢?在DA边上任取一点Q,那么在da边上相应的点q=AQ*(daH/DA)(注:其中daH是从a点到d点的高度,不是da的长度),同理可计算出在bc边中的相应位置。
'绘制任意四边形图像函数
ImgAnyRectI(ByVal graphics As Long, ByValbitmap As Long, pot() As POINTL, count As Integer)参数说明:
'数组,任意四边形顶点坐标(从左上角开始,顺时针次序),数据类型:POINTL结构类型
'顶点个数,4个
完整代码如下:
(请自行添加Gdi+函数模块) 窗体模块代码:OptionExplicit
Private Sub Form_Load()
Dim bitmap As Long
Dim graphics As Long
Dim pot(3) As POINTL
Me.AutoRedraw = True
Me.ScaleMode = 3
InitGDIPlus
GdipCreateFromHDC Me.hdc, graphics
' App.Path &"\002.jpg" 换成你的图片路径
GdipCreateBitmapFromFileStrPtr(App.Path & "\002.jpg"), bitmap
'设置任意四边形顶点坐标(左上角开始顺时针次序),但最好要是凸任意四边形
pot(0).X= 300
pot(0).Y = 100
pot(1).X = 900
pot(1).Y = 300
pot(2).X = 1000
pot(2).Y = 600
pot(3).X = 100
pot(3).Y = 700
ImgAnyRectI graphics, bitmap, pot,4
GdipDeleteGraphicsgraphics
GdipDisposeImage bitmap
TerminateGDIPlus
Me.Refresh
标准模块代码:
Option Explicit
'绘制任意四边形图像函数
Public Sub ImgAnyRectI(ByVal graphics AsLong, ByVal bitmap As Long, pot() As POINTL, count As Integer)
Dim Bitmap2 As Long
Dim gBmp As Long
Dim pox(3) AsVariant
Dimpoy(3) As Variant
Dim pos(3) As POINTL
Dim newW As Long
Dim newH As Long
Dim i As Long
Dim ky1 As Single
Dim ky2 As Single
For i = 0 To 3
pox(i) = pot(i).X
poy(i) = pot(i).Y
'找出四顶点坐标的最大值和最小值
QSortAny pox, 0, 3
QSortAny poy, 0, 3
'以任意四边形外接矩形确定内存中图像大小
newW = pox(3) - pox(0)
newH = poy(3) - poy(0)
GdipCreateBitmapFromScan0 newW, newH,0, GpPixelFormat.PixelFormat32bppARGB, ByVal 0, Bitmap2
GdipGetImageGraphicsContextBitmap2, gBmp
GdipGraphicsClear gBmp,&HFFFFFF
GdipDrawImageRectI gBmp, bitmap, 0,0, newW, newH
ky1 = pot(3).Y - pot(0).Y
ky2 = pot(2).Y - pot(1).Y
For i = 0 To newH - 1
pos(0).Y = ky1 * i /newH + pot(0).Y
pos(0).X = ((pos(0).Y -pot(0).Y) * (pot(0).X - pot(3).X)) / (pot(0).Y - pot(3).Y) + pot(0).X
pos(1).Y = ky2 * i /newH + pot(1).Y
pos(1).X = ((pos(1).Y -pot(1).Y) * (pot(1).X - pot(2).X)) / (pot(1).Y - pot(2).Y) + pot(1).X
pos(2).Y = ky1 * (i +2) / newH + pot(0).Y
pos(2).X = ((pos(2).Y -pot(0).Y) * (pot(0).X - pot(3).X)) / (pot(0).Y - pot(3).Y) + pot(0).X
GdipDrawImagePointsRectI graphics, Bitmap2, pos(0), 3, 0, i, newW, 1,UnitPixel
GdipDisposeImage Bitmap2
GdipDeleteGraphics gBmp
'快速排序(升序)
Public Sub QSortAny(Arr As Variant, LowAs Long, Hi As Long)
If Not IsArray(Arr) Then Exit Sub
On Error GoTo QuickSort
Dim M As Variant
Dim V As Variant
If Hi &= Low Then Exit Sub
M = Arr(Int((Low + Hi) \ 2))
Do While (l &= h)
While Arr(l) & M: l= l + 1: Wend
While M& Arr(h): h = h - 1: Wend
If (l &=h) Then
V = Arr(l):Arr(l) = Arr(h)
Arr(h) = V
l = l + 1:h = h - 1
If (Low & h) Then QSortAny Arr,Low, h
If (l & Hi) Then QSortAny Arr,l, Hi
Exit SubQuickSort:
MsgBox Err.descriptionEnd Sub 把完整代码粘贴到窗体上,点击运行即可看到你所要的图像。
VB GDI+绘制圆角矩形VB GDI+绘制圆角矩形通用函数MGdipDrawFillRunRectI:参数简介:Graphics
输出图形起始坐标;w,h
输出图形宽和高;runw、runh
输出图形圆角宽和高;pen、brush
画笔和画刷;参数传入时绘制边框并填充;不传入pen 只填充不绘制边框;不传入brush 只绘制边框不填充。(请自己添加GDI+ API 声明模块)'窗体模块:Private Sub Form_Load()
Dim Graphics As Long
Dim Pen As Long, Brush As Long
InitGdiplus
GdipCreateFromHDC Me.HDC, Graphics
GdipCreatePen1 &HFFFF0000, 1, UnitPixel, Pen
GdipCreateSolidFill &HAA0000FF, Brush
MGdipDrawFillRunRectI Graphics,
100, 100, 500, 400,pen,brush
GdipDeletePen Pen
GdipDeleteBrush Brush
GdipDeleteGraphics Graphics
TerminateGdiplusEnd Sub '绘制圆角矩形通用函数:Public Sub MGdipDrawFillRunRectI(ByVal Graphics As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal w As Long, ByVal h As Long, _
Optional ByVal RunW As Long = 0, Optional ByVal RunH As Long = 0, _
Optional ByVal Pen As Long = 0, Optional ByVal Brush As Long = 0)
w = w - RunW - 1
h = h - RunH - 1
'设置画布为消锯齿
GdipSetSmoothingMode Graphics, SmoothingModeAntiAlias
'以下绘制圆角矩形代码-------------------------------------------------------------------
'创建路径path
GdipCreatePath FillModeAlternate, Path
'将路径添加到path
GdipAddPathArcI Path, X + w, Y + h, RunW, RunH, 0, 90
GdipAddPathLineI Path, X + RunW / 2, Y + h + RunH, X + w + RunW / 2, Y + h + RunH
GdipAddPathArcI Path, X, Y + h, RunW, RunH, 90, 90
GdipAddPathLineI Path, X, Y + RunH / 2, X, Y + h + RunH / 2
GdipAddPathArcI Path, X, Y, RunW, RunH, 180, 90
GdipAddPathLineI Path, X + RunW / 2, Y, X + w + RunW / 2, Y
GdipAddPathArcI Path, X + w, Y, RunW, RunH, 270, 90
GdipAddPathLineI Path, X + w + RunW, Y + h + RunH / 2, X + w + RunW, Y + RunH / 2
'填充路径
If Brush && 0 Then GdipFillPath Graphics, Brush, Path
'绘制路径
If pen && 0 Then GdipDrawPath Graphics, Pen, Path
'删除路径
GdipDeletePath PathEnd Sub
以前见过这个贴,然后就再也找不到了现在终于见到了
这是在干什么
不错的方法,mark一下
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或1 / 60609 页
查看: 606088|回复: 606088
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
无效楼层,该帖已经被删除
1 / 60609 页posts - 53,&
comments - 205,&
trackbacks - 0
GDI+存在的意义:将编程与具体硬件实现细节分开。
GDI+步骤:获取画布,绘制图像、处理图像
命名空间:
System.Drawing命名空间提供对GDI+基本图形功能的访问
System.Drawing.Drawing2D:提供高级的二维和矢量图形功能
System.Drawing.Imaging:命名空间提供高级GDI+图像处理功能
System.Drawing.Text:提供高级GDI+排班功能
System.Drawing.Pringting:提供打印相关服务
System.Drawing.Design:扩展设计时,用户界面逻辑和绘制的类。用于扩展,自定义。
画图工具:
Graphics(画布):类封装一个GDI+绘图图面,提供将对象绘制到显示设备的方法,Graphics与特定的设备上下文关联。画图方法都被包括在Graphics类中,在画任何对象之前都需要创建一个Graphics类实例作为画布。
创建画布 (三种方法):
利用控件或窗体的Paint事件中的PainEventArgs。
适用场景:为控件创建绘制代码。
//窗体的Paint事件的响应方法
void Form1_Paint(object sender, PaintEventArgs e)
Graphics g = e.G
}//直接重载控件或窗体的OnPaint方法:
void OnPaint(PaintEventArgs e)
Graphics g = e.G
}注意:Paint事件在重绘控件时发生。
调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。
适用场景:在已存在的窗体或控件上绘图
Graphics g = this.CreateGraphics();
由从Image继承的任何对象创建Graphics对象。
适用场景: 需要更改已存在的图像
Image img = Image.FromFile(@"IMG\graph.jpg");
Graphics g = Graphics.FromImage(img);
方法成员:
名称说明DrawArc 画弧。DrawBezier 画立体的贝尔塞曲线。DrawBeziers 画连续立体的贝尔塞曲线。DrawClosedCurve 画闭合曲线。DrawCurve 画曲线。DrawEllipse 画椭圆。DrawImage 画图像。DrawLine 画线。DrawPath 通过路径画线和曲线。DrawPie 画饼形。DrawPolygon 画多边形。DrawRectangle 画矩形。DrawString 绘制文字。FillEllipse 填充椭圆。FillPath 填充路径。FillPie 填充饼图。FillPolygon填充多边形。FillRectangle 填充矩形。FillRectangles 填充矩形组。FillRegion 填充区域。
PEN类(画笔):绘制指定宽度和样式的直线。使用DashStyle属性绘制几种虚线,可以使用各种填充样式(包括纯色和纹理)来填充Pen绘制的直线,填充模式取决于画笔或用作填充对象的纹理。
创建画笔:
//用指定的颜色实例化一只画笔的方法如下:
public Pen(Color);
//用指定的画刷实例化一只画笔的方法如下:
public Pen(Brush);
//用指定的画刷和宽度实例化一只画笔的方法如下:
public Pen(Brush , float);
//用指定的颜色和宽度实例化一只画笔的方法如下:
public Pen(Color, float);
//实例化画笔的语句格式如下:
Pen pn=new
Pen(Color.Blue);
Pen pn=new
Pen(Color.Blue,100);属性成员:
名称说明Alignment 获得或者设置画笔的对齐方式。Brush 获得或者设置画笔的属性。Color 获得或者设置画笔的颜色。Width 获得或者设置画笔的宽度。Brush类(画刷):是一个抽象的基类,因此它不能被实例化,用它的派生类进行实例化一个画刷对象。
结构组件:
Point类:表示一个具体的点。
创建Point实例:
public Point(int x,int y)Size类:表示尺寸(像素为单位)。Size结构包含宽度和高度
创建Size实例:
Size s = new
Size(Width, Height);Rectangle结构:一个构造函数的参数是X坐标,Y坐标,宽度和高度,另一个构造函数的参数是Point和Size结构,
创建Rectangle实例:
//用指定的位置和大小初始化Rectangle类的新实例。
public Retangle(Point,Size);
public Rectangle(int,int,int,int);属性成员:
名称说明Bottom底端坐标Height矩形高IsEmpty测试矩形宽和高是否为0Left矩形左边坐标Location矩形的位置Right矩形右边坐标Size矩形尺寸.Top矩形顶端坐标Width矩形宽X矩形左上角顶点X坐标Y矩形左上角顶点Y坐标
风格组件:
Color类(颜色以及透明度):由透明度(A)和三基色(R,G,B)所组成
属性成员:
名称说明A 获取此Color结构的alpha分量值,取值(0~255)。B 获取此Color结构的蓝色分量值,取值(0~255)。G 获取此Color结构的绿色分量值,取值(0~255)。R 获取此Color结构的红色分量值,取值(0~255)。Name 获取此Color结构的名称,这将返回用户定义的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的),对于自定义的颜色,将返回RGB值。静态方法成员:
名称说明FromArgb 从四个8位ARGB分量(alpha、红色、绿色和蓝色)值创建Color结构。FromKnowColor从指定的预定义颜色创建一个Color结构。FromName 从预定义颜色的指定名称创建一个Color结构。获取设置一个具体像素的颜色值示例:
//(1)定义Bitmap
Bitmap myBitmap = new
Bitmap("c:\\MyImages\\TestImage.bmp");
//(2)定义一个颜色变量把在指定位置所取得的像素值存入颜色变量中
Color c = new
//获取此Bitmap中指定像素的颜色。
c = myBitmap.GetPixel(10, 10);
//(3)将颜色值分解出单色分量值
b = c.B;Font类(字体风格):定义特定文本格式,包括字体、字号和字形属性。
创建Font实例:
//字体名为Font的FontFamily的字符串表示形式
public Font(string 字体名, float 字号,FontStyle 字形)//字号和字体为可选项
public Font(string 字体名,float 字号)属性成员:
名称说明Bold是否为粗体。FontFamily字体成员。Height字体高。Italic是否为斜体。Name字体名称。Size字体尺寸。SizeInPoints获取此 Font对象的字号,以磅为单位。Strikeout是否有删除线。Style字体类型。Underline是否有下划线。Unit字体尺寸单位。
重要参数:
GraphicsPaths(路径):表示一系列连续的线条和曲线。
创建路径:
public GraphicsPath(System.Drawing.PointF[] pts, byte[] types, System.Drawing.Drawing2D.FillMode fillMode)
//fillMode 填充方式 point[] 结构数组
types[] 对应点的类型 枚举PathPointType
PathPointType枚举:
名称说明Start路径起点Bazier默认贝塞尔曲线PathTypeMark遮盖点DashMode添加椭圆PathMarker路径标记CloseSubpath子路径终结点Bazier3立体贝塞尔曲线
方法成员:
名称说明AddArc添加圆弧AddBezier添加立方贝塞尔曲线AddClosedCurve添加闭合曲线AddEllipse添加椭圆AddLine添加线段AddPath添加路径,bool参数表示是否将添加路径的第一个图形作为当前路径最后一个图形的子成员AddPie添加扇形轮廓AddPolygon添加多边形AddRectangle添加矩形AddString添加字符串ClearMarkers清除所有标志CloseAllFigures闭合所有开放图形CloseFigure闭合当前图形Reverse反转数组各点顺序Reset清空,并做好接收准备StartFigure不闭合当前图形就开始新的图形GetBounds获得边界(矩形)GetLastPoint获得最后一个点
Regions(组合图形):由矩形和路径组成
创建组合图形:
public Region(System.Drawing.Drawing2D.RegionData rgnData)
public Region(System.Drawing.Drawing2D.GraphicsPath path)
public Region(System.Drawing.Rectangle rect)
public Region(System.Drawing.RectangleF rect)方法成员:
名称说明Complement更新,以包含与参数不相交的部分Exclude更新,以仅包含内部以及与参数不想交的部分Union更新为与指定参数的并集Xor更新为与指定参数的并集与交集的差集Translate指定量偏移坐标Intersect更新为与指定参数的交集IsInfinite(g)测试此region是否在指定g上具有无限内部MakeEmpty清空MakeInfinite初始化为无限内部
阅读(...) 评论()GDI+漏洞介绍
近日,爆出有史以来最大的安全漏洞。通过该,攻击者可以将木马藏于图片中,网民无论是通过浏览器浏览、还是用各种看图软件打开、或者在即时聊天窗口、电子邮件、Office文档里查看这些图片,只要看了就会中招!哪怕只是看了一个!其危害程度远远超过以往微软公布过的任何。gdi漏洞
据安全专家介绍,此次微软爆出的非常严重,有点类似以前的“”和“”,但涉及的图片格式更多,包括bmp、wmf、gif、emf、vml等,因此漏洞涉及面广,影响网民数众多,危害程度特别巨大,堪称“微软有史以来最大的安全漏洞”。
GDI+漏洞(MS08-052)将影响常见的文件格式、EMF、WMF、VML、BMP,也就是说机器上有该漏洞的系统一旦打开(甚至不需要用户打开,只要程序解析该文件)包含有漏洞的利用代码的文件就会执行其中的任意代码。对于该漏洞黑客可以通过在网络上、社区中上传图片、QQ等聊天工具中发送图片或者表情来利用,一旦机器上有漏洞的用户看到该图片就会执行黑客指定的任意代码,比如下载执行、硬盘等。由于很多第三方软件也含有该漏洞,所以简单的为系统打上补丁并不能彻底补上该漏洞,因此我们建议大家使用超级巡警GDI+漏洞(MS08-052)修复程序来进行漏洞修补。目前已有黑客开始注意该漏洞并研究利用方法。
存在GDI+漏洞的文件
文件名称:
文件版本:5.1.
文件名称:VGX.dll
文件路径:%CommonProgramFiles%MicrosoftSharedVGX
文件版本:7.00.&&& 7.00.&&& 6.00.&& 6.00.
漏洞相关描述
GDI+VML缓冲区溢出漏洞-CVE-
GDI+处理渐变大小的方式中存在一个远程执行漏洞。如果用户浏览包含特制内容的,该漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以完全控制受影响的系统。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。那些被配置为拥有较少系统用户权限的用户比具有用户权限的用户受到的影响要小。
GDI+EMF内存损坏漏洞-CVE-
GDI+处理内存分配的方式中存在一个远程执行代码漏洞。如果用户打开特制的EMF图像文件或浏览包含特制内容的网站,则此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以完全控制受影响的系统。攻击者可随后安装程序;查看、更改或删除;或者创建拥有完全用户权限的。那些帐户被配置为拥有较少系统用户权限的用户比具有管理用户权限的用户受到的影响要小。
GDI+GIF分析漏洞-CVE-
GDI+分析GIF图像的方式中存在一个远程执行代码漏洞。如果用户打开特制的GIF图像文件或浏览包含特制内容的网站,则此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以完全控制受影响的系统。攻击者可随后安装;查看、更改或删除数据;或者创建新帐户。
GDI+WMF缓冲区溢出漏洞-CVE-
GDI+为WMF图像文件分配内存的方式中存在一个远程执行代码漏洞。如果用户打开特制的WMF或包含特制内容的网站,则此漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以完全控制受影响的。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。那些帐户被配置为拥有较少系统用户权限的用户比具有管理用户权限的用户受到的影响要小。
GDI+BMP整数溢出漏洞-CVE-
GDI+处理整数计算的方式中存在一个远程执行代码漏洞。如果用户打开特制的BMP图像文件,该漏洞可能允许远程执行代码。成功利用此漏洞的攻击者可以完全控制受影响的系统。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。那些帐户被配置为拥有较少系统用户权限的用户比具有管理用户权限的用户受到的影响要小。
GDI+漏洞的影响
受此漏洞,几乎所有浏览器、即时、Office程序以及看图软件等第三方软件都可能成为木马传播的渠道。网民即便没有点击运行任何程序,只要浏览了BBS、、或即时聊天窗口里带木马的图片,就会立即中招。一旦网民查看了这些带木马的图片,或浏览了带木马图片的网站,攻击者就能利用这一GDI+图片漏洞远程执行代码和安装程序,随意查看、更改或删除用户的电脑数据,或者创建能完全访问用户电脑的新帐户。也就是说,攻击者可以利用该漏洞完全控制住你的电脑!
漏洞影响:
Microsoft产品中所使用的(GdiPlus.dll)通过基于类的API提供对各种图形方式的访问。
GDI+库在解析特制的BMP文件时存在整数溢出漏洞,如果文件中包含有畸形的BitMapInfoHeader的话,就会导致错误的整数计算,最终触发可利用的内存破坏。成功利用此漏洞的攻击者可完全控制受影响的系统。如果用户使用受影响的软件查看特制图像文件或浏览包含特制内容的网站,则这些漏洞可能允许远程执行代码。
攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。那些帐户被配置为拥有较少系统用户权限的用户比具有管理用户权限的用户受到的影响要小。
受影响的图片格式:
此次gdi+漏洞非常严重,类似以前的光标漏洞和wmf漏洞,涉及的格式更广(bmp\wmf\gif\emf\vml)
漏洞影响的系统和软件:
MicrosoftWindowsServer2003DatacenterEdition
MicrosoftWindowsServer2003EnterpriseEdition
MicrosoftWindowsServer2003StandardEdition
MicrosoftWindowsServer2003WebEdition
MicrosoftWindowsServer2008
MicrosoftWindowsStorageServer2003
MicrosoftWindowsVista
MicrosoftWindowsXPHomeEdition
Microsoft.NETFramework1.x
Microsoft.NETFramework2.x
MicrosoftDigitalImage200611.x
MicrosoftForefrontClientSecurity1.x
MicrosoftOffice2003SmallBusinessEdition
MicrosoftOffice2003StandardEdition
MicrosoftOffice2007
MicrosoftOfficeExcelViewer
MicrosoftOfficeExcelViewer2003
MicrosoftOfficePowerPointViewer2003
MicrosoftOfficeProject2002
MicrosoftOfficeWordViewer
MicrosoftOfficeXP
MicrosoftPlatformSDKRedistributable:GDI+
MicrosoftSQLServer2005
MicrosoftSQLServer2005CompactEdition3.x
MicrosoftSQLServer2005ExpressEdition
MicrosoftVisio2002
MicrosoftVisio2003Viewer
MicrosoftVisio2007Viewer
MicrosoftVisualFoxPro9.x
MicrosoftVisualStudio2005
MicrosoftVisualStudio2008
MicrosoftWordViewer2003
MicrosoftWorks8.x
其他引用了含有漏洞的GdiPlus.dll的应用程序。
GDI+漏洞答疑
此漏洞的影响范围有多大?
这是一个远程执行代码漏洞。成功利用此漏洞的攻击者可以完全控制受影响的系统。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。
造成漏洞的是什么?
漏洞是由于GDI未正确处理特制的EMF或WMF图像文件中的格式错误的标题时区溢出造成的。
什么是GDI?
MicrosoftWindows图形设备接口(GDI)允许应用程序在视频显示和打印机上使用图形和格式化文本。基于Windows的应用程序不直接访问图形硬件。而是GDI代表应用程序与设备驱动程序进行交互。有关GDI的详细信息,请访问WindowsGDI起始页。
什么是(WMF)和增强型图元文件(EMF)图像格式?
WMF图像是一种16位图元文件格式,其中可以同时包含矢量信息和位图信息。它非常适合Windows操作系统。
EMF图像是一个32位格式,其中可以同时包含矢量信息和位图信息。此格式是对Windows图元文件格式的改进,加入了一些扩展功能。
有关图像类型和格式的详细信息,请参阅Microsoft知识库文章320314。有关这些文件格式的其他信息,请访问MSDN技术资源库网站。
攻击者可能利用此漏洞执行什么操作?
成功利用此漏洞的攻击者可以运行任意代码。攻击者可随后安装程序;查看、更改或删除;或者创建拥有完全用户权限的新帐户。
攻击者如何利用此漏洞?
此漏洞要求用户打开特制图像文件。
在电子邮件攻击情形中,攻击者可以通过向用户发送特制的EMF或WMF或者其中嵌入EMF或WMF图像文件的Office文档,并诱使用户打开文档或查看内含特制图像文件的电子邮件来利用此漏洞。
在基于Web的攻击情形中,攻击者必须拥有一个网站,其中包含用于尝试利用此漏洞的EMF或图像文件。另外,接受或宿主用户提供的内容的网站以及受到破坏的网站可能包含可能利用此漏洞的特制内容。攻击者无法强迫用户访问特制的网站。相反,攻击者必须说服用户访问该网站,方法通常是让用户单击电子邮件或InstantMessenger消息中的链接以使用户链接到攻击者的网站。
受此漏洞威胁最大的系统有哪些?
所有当前支持的Windows系统均受到威胁。不受此漏洞的影响。
此更新有什么作用?
此更新通过修改GDI执行整数计算以阻止堆溢出的方式来消除此漏洞。
发布此安全公告时,此漏洞是否已公开披露?
否。通过可靠的披露渠道了解到有关此漏洞的信息。在最初发布此安全公告时,Microsoft未收到任何表明此漏洞已公开披露的信息。此安全公告解决了披露的漏洞以及通过内部调查发现的其他问题。
在发布此安全公告时,Microsoft是否收到任何有关此漏洞已被利用的报告?
否。在最初发布此安全公告时,Microsoft未收到任何表明此漏洞已被公开用于攻击客户的信息,也没有看到任何发布的概念代码证明。
我是第三方应用程序开发人员,我的应用程序使用。我的应用程序是否容易受到攻击,如何进行更新?
重新分发gdiplus.dll的开发人员应该确保他们通过下载本公告中提供的更新来更新随其应用程序安装的gdiplus.dll版本。鼓励开发人员按照使用共享组件的推荐最佳方案执行操作。有关使用共享组件的最佳做法的详细信息,请参阅关于独立应用程序的Microsoft知识库文章835322。
我正在开发包含可重新分发文件gdiplus.dll的软件。应该怎样做?
您应该为您的开发软件安装本公告中提供的安全更新。如果已经随您的应用程序重新分发了gdiplus.dll,您应该使用为您的开发软件下载此安全更新时获得的此文件更新版本向您的客户发布您的的更新版本。
如果第三方应用程序使用或安装受影响的gdiplus.dll组件,那么安装所有需要的Microsoft安全更新之后是否仍然容易受到攻击?
否,此安全更新替换并重新随操作系统提供的受影响的。如果第三方应用程序遵循建议的最佳方案,即将共享组件用作并列组件,那么它们也不会受到影响。如果第三方应用程序没有遵循推荐的最佳方案,而是随其应用程序一起重新分发了gdiplus.dll的旧,则客户可能受到威胁。Microsoft知识库文章954593也包含面向希望手动检查已注册的受影响OLE组件的说明。鼓励客户联系第三方解决方案开发商以获取其他信息。
为本词条添加和相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和770多万专业认证智愿者沟通。
您也可以使用以下网站账号登录:
此词条还可添加&
编辑次数:6次
参与编辑人数:3位
最近更新时间: 03:08:48
贡献光荣榜
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品}

我要回帖

更多关于 word删除空白页 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信