เดเดฐเต เดชเดฐเดพเดเดฏเดคเตเดคเดฟเดจเต เดถเตเดทเด เดเดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดตเตเดเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เด เดตเดฐเตเดเต เดฎเตเดทเตเดจเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดจเตเดจเตเดชเตเดณเดฟเดธเต เดฏเตเดฃเดฟเดตเตเดดเตเดธเดฟเดฑเตเดฑเดฟเดฏเดฟเดฒเต เดเตบเดเตเดเตเดเดฟเดเดณเตเดฎเดพเดฏเดฟ เดเตเตผเดจเตเดจเต เดธเดเตเดต เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตฝ เดธเดพเดเตเดเตเดคเดฟเดเดตเดฟเดฆเตเดฏ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฅ เดเดจเตเดจเต เดเดเตเดเตพ เดคเตเดเดฐเตเดจเตเดจเต. เดจเตเดฑเตเดฑเตเดตเต เดตเดฟเตปเดกเตเดธเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดเตเดเตพ เดธเดเดธเดพเดฐเดฟเดเตเดเตเด, เด เดตเดฏเตเดเต เดธเตเดทเตเดเดฟเดฏเตเดเตเดฏเตเด เดธเดฎเดพเดฐเดเดญเดคเตเดคเดฟเดจเตเดฑเตเดฏเตเด เดธเดตเดฟเดถเตเดทเดคเดเตพ เดเตพเดชเตเดชเตเดเต. เดเดเตเดเดฟเดจเต เดคเดพเดดเต เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเต เดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเตเดฑเดฟเดฏ เดเดพเดฐเตเดฏเดเตเดเดณเตเด เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดเดเตเดเดจเต เดเดดเตเดคเดพเด เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดฐเต เดชเตเดฐเดพเดฏเตเดเดฟเด เดเตเดกเตเด เดเดฃเตเดเต.
เดฎเตเตป เดชเตเดธเตเดฑเตเดฑเตเดเดณเดฟเตฝ เด
เดคเต เดเดจเตเดคเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดเดคเดฟเดจเดเด เดธเดเดธเดพเดฐเดฟเดเตเดเต
- เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต เดธเตเดตเดจเด เดเดฐเดเดญเดฟเดเตเดเตเด
- เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดฌเดพเดเตเดเดชเตเดชเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ เดเตเดฒเตเดกเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด
- เดธเดฟเดธเตเดฑเตเดฑเด เดเดคเต เดฎเตเดกเดฟเดฒเดพเดฃเต เดเดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเดเตเดเดพเตป เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต - เดธเดพเดงเดพเดฐเดฃ เดฌเตเดเตเดเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดตเตเดฃเตเดเตเดเตเดเตเดเตฝ
- เดฎเตเตปเดเตเดเตเดเดฟ เดตเตเดฃเตเดเตเดเตเดเตเดเดพเตป เดตเดณเดฐเต เดเตเดฑเดเตเดเต เดซเดฏเดฒเตเดเตพ
- เดเตเดเตเดคเตฝ เดตเตเดเดคเตเดคเดฟเตฝ เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเตเด.
เดเดคเดพเดฏเดพเดฒเตเด เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดชเต เดเดจเตเดคเดพเดฃเต?
เด เดเตเดฆเตเดฏเดคเตเดคเดฟเดจเต เดเดคเตเดคเดฐเด เดจเตฝเดเดพเตป, เดธเดฟเดธเตเดฑเตเดฑเด เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจ เดเตเดณเตเดเดณเตเดเต เดเตเดฐเดฎเด เดจเตเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด เดตเดจเตเดฑเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเดฒเต เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เดเดฐเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ.
เดชเดตเตฝ เดฏเตเดธเดฟเดซเตเดตเดฟเดเตเดเต - เดตเดฟเตปเดกเตเดธเต เดเตเตผเดฃเตฝ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต (2019)
เดชเตเดฐเตเดเตเดฐเดพเดฎเตผ เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต
เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเดเต เดชเตเดฐเดงเดพเดจ เดจเตเดเตเดเด, เดเตเตผเดฃเตฝ 32 เดจเตเดเตเดเดพเตพ เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต ntdll เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต เดเดจเตเดจเดคเดพเดฃเต. เดเดคเต เดฒเตเดเดฟเดเตเดเตฝ เดเดฃเต, เดเดพเดฐเดฃเด kernel32 เดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป ntdll เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเตเดฑเตเดฑเตเดตเต เดซเดเดเตโเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเตเด.
เด
เดคเดฟเดจเดพเตฝ, เดตเดฟเตปเดกเตเดธเต เดฌเตเดเตเดเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต เดเดฐเดเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเดพเดฃเต เดตเดฟเตปเดกเตเดธเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเตพ. เด
เดตเตผ ntdll-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเดเดเตโเดทเดจเตเดเตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต. เด
เดคเตเดคเดฐเดฎเตเดฐเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด:
เดจเดฎเตเดเตเดเต เดเดจเตเดคเดพเดฃเต เดตเตเดฃเตเดเดคเต?
เดกเดฟ.เดกเดฟ.เดเต (เดกเตเดฐเตเดตเตผ เดกเตเดตเดฒเดชเตโเดฎเตเดจเตเดฑเต เดเดฟเดฑเตเดฑเต), เดเดชเตเดชเตเตพ WDK 7 (Windows Driver Kit) เดเดจเตเดจเตเด เด เดฑเดฟเดฏเดชเตเดชเตเดเตเดจเตเดจเต.- เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, Windows 7 x64)
- เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดจเตเดจ เดนเตเดกเตผ เดซเดฏเดฒเตเดเตพ เดธเดนเดพเดฏเดฟเดเตเดเตเดเตเดเดพเด
เดเดตเดฟเดเต
เดเตเดกเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดเดณเตเดณเดคเต?
เดจเดฎเตเดเตเดเต เดเตเดฑเดเตเดเต เดชเดฐเดฟเดถเตเดฒเดฟเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดเตเดฑเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดดเตเดคเตเด:
- เดธเตเดเตเดฐเตเดจเดฟเตฝ เดเดฐเต เดธเดจเตเดฆเตเดถเด เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต
- เดเตเดฑเดเตเดเต เดฎเตเดฎเตเดฎเดฑเดฟ เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต
- เดเตเดฌเตเตผเดกเต เดเตปเดชเตเดเตเดเดฟเดจเดพเดฏเดฟ เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต
- เดเดชเดฏเตเดเดฟเดเตเด เดฎเตเดฎเตเดฎเดฑเดฟ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดเตเดเตเดจเตเดจเต
เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเดฟเตฝ, เดเตปเดเตเดฐเดฟ เดชเตเดฏเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจเดฎเต เดตเดฟเตปเดฎเตเดจเต เด เดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต NtProcessStartup เดซเดเดเตโเดทเดจเดพเดฃเต, เดเดพเดฐเดฃเด เดเดเตเดเตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดชเตเดคเดฟเดฏ เดชเตเดฐเตเดธเดธเตเดธเตเดเตพ เดจเตเดฐเดฟเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต.
เดธเตเดเตเดฐเตเดจเดฟเตฝ เดเดฐเต เดธเดจเตเดฆเตเดถเด เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดฃเตเดเต เดจเดฎเตเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเด. เดเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดซเดเดเตเดทเตป เดเดฃเตเดเต
//usage: WriteLn(L"Here is my textn");
void WriteLn(LPWSTR Message)
{
UNICODE_STRING string;
RtlInitUnicodeString(&string, Message);
NtDisplayString(&string);
}
ntdll-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดซเดเดเตโเดทเดจเตเดเตพ เดฎเดพเดคเตเดฐเดฎเต เดเดเตเดเตพเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดเต, เดเตเดเดพเดคเต เดฎเตเดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดฎเดฑเตเดฑเต เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเตเดจเตเดจเตเด เดเดคเตเดตเดฐเต เดเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดฎเตเดฎเตเดฎเดฑเดฟ เดเดเตเดเดจเต เด เดจเตเดตเดฆเดฟเดเตเดเดพเดฎเตเดจเตเดจเดคเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดชเตเดฐเดถเตโเดจเดเตเดเดณเตเดฃเตเดเดพเดเตเด. เดชเตเดคเดฟเดฏ เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดเดคเตเดตเดฐเต เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒ (เดเดพเดฐเดฃเด เดเดคเต เดตเดณเดฐเต เดเดฏเตผเดจเตเดจ เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ C++ เดฒเตเดเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต), เดเตเดเดพเดคเต malloc เดซเดเดเตโเดทเดจเตเดจเตเดจเตเด เดเดฒเตเดฒ (เดเดคเดฟเดจเต เดฑเตบเดเตเด C เดฒเตเดฌเตเดฐเดฑเดฟเดเตพ เดเดตเดถเตเดฏเดฎเดพเดฃเต). เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดธเตเดฑเตเดฑเดพเดเตเดเต เดฎเดพเดคเตเดฐเดฎเต เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเต. เดเดจเตเดจเดพเตฝ เดจเดฎเตเดเตเดเต เดฎเตเดฎเตเดฎเดฑเดฟ เดเดฒเดจเดพเดคเตเดฎเดเดฎเดพเดฏเดฟ เด เดจเตเดตเดฆเดฟเดเตเดเดฃเดฎเตเดเตเดเดฟเตฝ, เด เดคเต เดเตเดฎเตเดชเดพเดฐเดคเตเดคเดฟเตฝ (เด เดคเดพเดฏเดคเต เดเตเดฎเตเดชเดพเดฐเด) เดเตเดฏเตเดฏเตเดฃเตเดเดฟเดตเดฐเตเด. เด เดคเตเดเตเดฃเตเดเต เดจเดฎเตเดเตเดเต เดจเดฎเตเดเตเดเดพเดฏเดฟ เดเดฐเต เดเตเดฎเตเดชเดพเดฐเด เดเดฃเตเดเดพเดเตเดเดพเด, เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดชเตเดชเตเดดเตเดฒเตเดฒเดพเด เด เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเตเดฎเตเดฎเดฑเดฟ เดเดเตเดเตเดเดพเด.
เด เดเดพเดธเตเดเตเดเดฟเดจเต เดซเดเดเตเดทเตป เด
เดจเตเดฏเตเดเตเดฏเดฎเดพเดฃเต
PVOID memory = NULL;
PVOID buffer = NULL;
ULONG bufferSize = 42;
// create heap in order to allocate memory later
memory = RtlCreateHeap(
HEAP_GROWABLE,
NULL,
1000,
0, NULL, NULL
);
// allocate buffer of size bufferSize
buffer = RtlAllocateHeap(
memory,
HEAP_ZERO_MEMORY,
bufferSize
);
// free buffer (actually not needed because we destroy heap in next step)
RtlFreeHeap(memory, 0, buffer);
RtlDestroyHeap(memory);
เดเตเดฌเตเตผเดกเต เดเตปเดชเตเดเตเดเดฟเดจเดพเดฏเดฟ เดจเดฎเตเดเตเดเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเด.
// https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data
typedef struct _KEYBOARD_INPUT_DATA {
USHORT UnitId;
USHORT MakeCode;
USHORT Flags;
USHORT Reserved;
ULONG ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
//...
HANDLE hKeyBoard, hEvent;
UNICODE_STRING skull, keyboard;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK Iosb;
LARGE_INTEGER ByteOffset;
KEYBOARD_INPUT_DATA kbData;
// inialize variables
RtlInitUnicodeString(&keyboard, L"DeviceKeyboardClass0");
InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL);
// open keyboard device
NtCreateFile(&hKeyBoard,
SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES,
&ObjectAttributes,
&Iosb,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN,FILE_DIRECTORY_FILE,
NULL, 0);
// create event to wait on
InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0);
while (TRUE)
{
NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL);
NtWaitForSingleObject(hEvent, TRUE, NULL);
if (kbData.MakeCode == 0x01) // if ESC pressed
{
break;
}
}
เดจเดฎเตเดเตเดเต เดตเตเดฃเตเดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต
เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดฐเต เดซเดเดเตเดทเตป เดเตเดณเตเดเต เด
เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเต
เดเดเตเดเดณเตเดเต เดเตเดฑเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดฒเตเดฒเดพ เดเตเดกเตเดเดณเตเด:
#include "ntifs.h" // WinDDK7600.16385.1incddk
#include "ntdef.h"
//------------------------------------
// Following function definitions can be found in native development kit
// but I am too lazy to include `em so I declare it here
//------------------------------------
NTSYSAPI
NTSTATUS
NTAPI
NtTerminateProcess(
IN HANDLE ProcessHandle OPTIONAL,
IN NTSTATUS ExitStatus
);
NTSYSAPI
NTSTATUS
NTAPI
NtDisplayString(
IN PUNICODE_STRING String
);
NTSTATUS
NtWaitForSingleObject(
IN HANDLE Handle,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout
);
NTSYSAPI
NTSTATUS
NTAPI
NtCreateEvent(
OUT PHANDLE EventHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN EVENT_TYPE EventType,
IN BOOLEAN InitialState
);
// https://docs.microsoft.com/en-us/windows/win32/api/ntddkbd/ns-ntddkbd-keyboard_input_data
typedef struct _KEYBOARD_INPUT_DATA {
USHORT UnitId;
USHORT MakeCode;
USHORT Flags;
USHORT Reserved;
ULONG ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
//----------------------------------------------------------
// Our code goes here
//----------------------------------------------------------
// usage: WriteLn(L"Hello Native World!n");
void WriteLn(LPWSTR Message)
{
UNICODE_STRING string;
RtlInitUnicodeString(&string, Message);
NtDisplayString(&string);
}
void NtProcessStartup(void* StartupArgument)
{
// it is important to declare all variables at the beginning
HANDLE hKeyBoard, hEvent;
UNICODE_STRING skull, keyboard;
OBJECT_ATTRIBUTES ObjectAttributes;
IO_STATUS_BLOCK Iosb;
LARGE_INTEGER ByteOffset;
KEYBOARD_INPUT_DATA kbData;
PVOID memory = NULL;
PVOID buffer = NULL;
ULONG bufferSize = 42;
//use it if debugger connected to break
//DbgBreakPoint();
WriteLn(L"Hello Native World!n");
// inialize variables
RtlInitUnicodeString(&keyboard, L"DeviceKeyboardClass0");
InitializeObjectAttributes(&ObjectAttributes, &keyboard, OBJ_CASE_INSENSITIVE, NULL, NULL);
// open keyboard device
NtCreateFile(&hKeyBoard,
SYNCHRONIZE | GENERIC_READ | FILE_READ_ATTRIBUTES,
&ObjectAttributes,
&Iosb,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN,FILE_DIRECTORY_FILE,
NULL, 0);
// create event to wait on
InitializeObjectAttributes(&ObjectAttributes, NULL, 0, NULL, NULL);
NtCreateEvent(&hEvent, EVENT_ALL_ACCESS, &ObjectAttributes, 1, 0);
WriteLn(L"Keyboard readyn");
// create heap in order to allocate memory later
memory = RtlCreateHeap(
HEAP_GROWABLE,
NULL,
1000,
0, NULL, NULL
);
WriteLn(L"Heap readyn");
// allocate buffer of size bufferSize
buffer = RtlAllocateHeap(
memory,
HEAP_ZERO_MEMORY,
bufferSize
);
WriteLn(L"Buffer allocatedn");
// free buffer (actually not needed because we destroy heap in next step)
RtlFreeHeap(memory, 0, buffer);
RtlDestroyHeap(memory);
WriteLn(L"Heap destroyedn");
WriteLn(L"Press ESC to continue...n");
while (TRUE)
{
NtReadFile(hKeyBoard, hEvent, NULL, NULL, &Iosb, &kbData, sizeof(KEYBOARD_INPUT_DATA), &ByteOffset, NULL);
NtWaitForSingleObject(hEvent, TRUE, NULL);
if (kbData.MakeCode == 0x01) // if ESC pressed
{
break;
}
}
NtTerminateProcess(NtCurrentProcess(), 0);
}
PS: เดกเตเดฌเดเตเดเดฑเดฟเตฝ เดจเดฟเตผเดคเตเดคเดพเตป เดเดเตเดเดณเตเดเต เดเตเดกเดฟเดฒเต DbgBreakPoint() เดซเดเดเตโเดทเตป เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเด. เดถเดฐเดฟเดฏเดพเดฃเต, เดเตเตผเดฃเตฝ เดกเตเดฌเดเตเดเดฟเดเดเดฟเดจเดพเดฏเดฟ เดจเดฟเดเตเดเตพ WinDbg เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดฟเดฒเตเดเตเดเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดเดเตเดเดจเต เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเดจเดพเดเตเด
เดธเดฎเดพเดนเดฐเดฃเดตเตเด เด เดธเดเดฌเตเดฒเดฟเดฏเตเด
เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด เดเดณเตเดชเตเดช เดฎเดพเตผเดเด เดเดชเดฏเตเดเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต
Makefile
!INCLUDE $(NTMAKEENV)makefile.def
เดเดฑเดตเดฟเดเดเตเดเตพ:
TARGETNAME = MyNative
TARGETTYPE = PROGRAM
UMTYPE = nt
BUFFER_OVERFLOW_CHECKS = 0
MINWIN_SDK_LIB_PATH = $(SDK_LIB_PATH)
SOURCES = source.c
INCLUDES = $(DDK_INC_PATH);
C:WinDDK7600.16385.1ndk;
TARGETLIBS = $(DDK_LIB_PATH)ntdll.lib
$(DDK_LIB_PATH)nt.lib
USE_NTDLL = 1
เดจเดฟเดเตเดเดณเตเดเต Makefile เดคเดฟเดเดเตเดเตเด เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด, เดเดจเตเดจเดพเตฝ เดเดฑเดตเดฟเดเดเตเดเตพ เดเตเดฑเดเตเดเตเดเตเดเดฟ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดจเตเดเตเดเดพเด. เด เดซเดฏเตฝ เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเตเดฑเต เดเดฑเดตเดฟเดเดเตเดเตพ (.c เดซเดฏเดฒเตเดเตพ), เดฌเดฟเตฝเดกเต เดเดชเตเดทเดจเตเดเตพ, เดฎเดฑเตเดฑเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดจเตเดจเดฟเดต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเต.
- TARGETNAME - เด เดตเดธเดพเดจเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดฃเตเด เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต เดชเตเดฐเต.
- TARGETTYPE - เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเดฒเดฟเดจเตเดฑเต เดคเดฐเด, เด เดคเต เดเดฐเต เดกเตเดฐเตเดตเตผ (.sys) เดเดเดพเด, เดคเตเดเตผเดจเตเดจเต เดซเตเตฝเดกเต เดฎเตเดฒเตเดฏเด เดกเตเดฐเตเดตเตผ เดเดฏเดฟเดฐเดฟเดเตเดเดฃเด, เดฒเตเดฌเตเดฐเดฑเดฟ (.lib) เดเดฃเตเดเตเดเดฟเตฝ, เดฎเตเดฒเตเดฏเด เดฒเตเดฌเตเดฐเดฑเดฟ เดเดฃเต. เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเตฝ (.exe) เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดฎเตเดฒเตเดฏเด PROGRAM-เดฒเตเดเตเดเต เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต.
- UMTYPE - เด เดซเตเตฝเดกเดฟเดจเดพเดฏเดฟ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดฎเตเดฒเตเดฏเดเตเดเตพ: เดเดฐเต เดเตบเดธเตเตพ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดณเตเดณ เดเตบเดธเตเตพ, เดตเดฟเตปเดกเต เดฎเตเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดตเดฟเตปเดกเตเดเตพ. เดเดจเตเดจเดพเตฝ เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฒเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฎเตเดเตเดเต nt เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต.
- BUFFER_OVERFLOW_CHECKS - เดฌเดซเตผ เดเดตเตผเดซเตเดฒเตเดฏเตโเดเตเดเดพเดฏเดฟ เดธเตเดฑเตเดฑเดพเดเตเดเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเต, เดจเดฟเตผเดญเดพเดเตเดฏเดตเดถเดพเตฝ เดเดเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดฎเดฒเตเดฒ, เดเดเตเดเตพ เด เดคเต เดเดซเดพเดเตเดเตเดจเตเดจเต.
- MINWIN_SDK_LIB_PATH โ เด เดฎเตเดฒเตเดฏเด SDK_LIB_PATH เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เดกเดฟเดกเดฟเดเตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดเตเดเตพ เดเตเดเตเดเตเดกเต เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดกเดฟเดเตเดฒเดฏเตผ เดเตเดฏเตเดค เด เดคเตเดคเดฐเดฎเตเดฐเต เดธเดฟเดธเตเดฑเตเดฑเด เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดจเดฟเดเตเดเดณเตเดเต เดชเดเตเดเดฒเดฟเดฒเตเดฒเตเดจเตเดจเต เดตเดฟเดทเดฎเดฟเดเตเดเตเดฃเตเด, เด เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเดชเตเดชเตเดเตเดเดฏเตเด เดเดตเดถเตเดฏเดฎเดพเดฏ เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟเดจเตเดฑเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
- เดเดฑเดตเดฟเดเดเตเดเตพ - เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดจเดพเดฏเตเดณเตเดณ เดเดฑเดตเดฟเดเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต.
- เดเตพเดชเตเดชเตเดเตเดจเตเดจเต - เด เดธเดเดฌเตเดฒเดฟเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดนเตเดกเตเดกเตผ เดซเดฏเดฒเตเดเตพ. เดเดตเดฟเดเต เด เดตเตผ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ DDK-เดฏเตโเดเตเดเตเดชเตเดชเด เดตเดฐเตเดจเตเดจ เดซเดฏเดฒเตเดเดณเดฟเดฒเตเดเตเดเตเดณเตเดณ เดชเดพเดคเดฏเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดคเตเดเตเดเดฟเดฒเตเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด.
- TARGETLIBS - เดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเดฃเตเด เดฒเตเดฌเตเดฐเดฑเดฟเดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต.
- เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดเดพเดฐเดฃเดเตเดเดณเดพเตฝ 1 เดเดฏเดฟ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดฃเตเด เดเดฐเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเดพเดฃเต USE_NTDLL.
- USER_C_FLAGS - เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตเดกเต เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเดฎเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฐเตเดชเตเดฐเตเดธเดธเตเดธเตผ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเดจเดพเดเตเดจเตเดจ เดเดคเตเดเตเดเดฟเดฒเตเด เดซเตเดฒเดพเดเตเดเตพ.
เด เดคเดฟเดจเดพเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฎเตเดฎเตพ x86 (เด เดฒเตเดฒเตเดเตเดเดฟเตฝ x64) เดเตเดเตเดเตเดกเต เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต, เดตเตผเดเตเดเดฟเดเดเต เดกเดฏเดฑเดเตเดเดฑเดฟ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดฟ เดฌเดฟเตฝเดกเต เดเดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด. เดเดเตเดเตพเดเตเดเต เดเดฐเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเตฝ เดเดฃเตเดเตเดจเตเดจเต เดธเตเดเตเดฐเตเตปเดทเตเดเตเดเดฟเดฒเต เดซเดฒเด เดเดพเดฃเดฟเดเตเดเตเดจเตเดจเต.
เด เดซเดฏเตฝ เด
เดคเตเดฐ เดเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเดเต เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเตเดฎเดพเดฑเตเดฑเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดฟเดจเตเดคเดฟเดเตเดเดพเตป เดธเดฟเดธเตเดฑเตเดฑเด เดถเดชเดฟเดเตเดเตเดเดฏเตเด เดเดเตเดเดณเต เด
เดฏเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเดเตเดเดจเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเดพเด?
autochk เดเดฐเดเดญเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเดณเตเดเต เดธเตเดฑเตเดฑเดพเตผเดเตเดเดชเตเดชเต เดเตเดฐเดฎเด เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเตเดจเตเดจเดคเต เดฐเดเดฟเดธเตเดเตเดฐเดฟ เดเตเดฏเตเดเต เดฎเตเดฒเตเดฏเด เด เดจเตเดธเดฐเดฟเดเตเดเดพเดฃเต:
HKLMSystemCurrentControlSetControlSession ManagerBootExecute
เดธเตเดทเตป เดฎเดพเดจเตเดเตผ เด เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดเดฐเตเดจเตเดจเดพเดฏเดฟ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเต. เดธเดฟเดธเตเดฑเตเดฑเด 32 เดกเดฏเดฑเดเตเดเดฑเดฟเดฏเดฟเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเดฒเตเดเตพเดเตเดเดพเดฏเดฟ เดธเตเดทเตป เดฎเดพเดจเตเดเตผ เดคเดฟเดฐเดฏเตเดจเตเดจเต. เดฐเดเดฟเดธเตเดเตเดฐเดฟ เดเต เดฎเตเดฒเตเดฏ เดซเตเตผเดฎเดพเดฑเตเดฑเต เดเดชเตเดฐเดเดพเดฐเดฎเดพเดฃเต:
autocheck autochk *MyNative
เดฎเตเดฒเตเดฏเด เดนเตเดเตเดธเดพเดกเตเดธเดฟเดฎเตฝ เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด, เดธเดพเดงเดพเดฐเดฃ ASCII เด เดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดฎเตเดเดณเดฟเตฝ เดเดพเดฃเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเต เดซเตเตผเดฎเดพเดฑเตเดฑเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเตเด:
61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00
เดถเตเตผเดทเดเด เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตบเดฒเตเตป เดธเตเดตเดจเด เดเดชเดฏเตเดเดฟเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต,
เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดเตเดเตพเดเตเดเต เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต:
- เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเตฝ system32 เดซเตเตพเดกเดฑเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเตเด
- เดฐเดเดฟเดธเตเดเตเดฐเดฟเดฏเดฟเดฒเตเดเตเดเต เดเดฐเต เดเต เดเตเตผเดเตเดเตเด
- เดฎเตเดทเตเตป เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตเดฏเตเด
เดธเตเดเดฐเตเดฏเดพเตผเดคเตเดฅเด, เดเดฐเต เดจเตเดฑเตเดฑเตเดตเต เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดฐเต เดฑเตเดกเดฟเดฎเตเดฏเตเดกเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดคเดพ:
install.bat
@echo off
copy MyNative.exe %systemroot%system32.
regedit /s add.reg
echo Native Example Installed
pause
add.reg
REGEDIT4
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager]
"BootExecute"=hex(7):61,75,74,6f,63,68,65,63,6b,20,61,75,74,6f,63,68,6b,20,2a,00,4d,79,4e,61,74,69,76,65,00,00
เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดเตเดฏเตโเดคเต เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตโเดคเดคเดฟเดจเตเดถเตเดทเด, เดเดชเดฏเตเดเตเดคเต เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเต เดธเตโเดเตเดฐเตเตป เดฆเตเดถเตเดฏเดฎเดพเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเตเดคเดจเตเดจเต, เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเดฟเดคเตเดฐเด เดฒเดญเดฟเดเตเดเตเด:
เดซเดฒเด
เด
เดคเตเดคเดฐเดฎเตเดฐเต เดเตเดฑเดฟเดฏ เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดฑเต เดเดฆเดพเดนเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเต, เดตเดฟเตปเดกเตเดธเต เดจเตเดฑเตเดฑเตเดตเต เดคเดฒเดคเตเดคเดฟเตฝ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดฟเดเดเตเดเตเด เดธเดพเดฆเตเดงเตเดฏเดฎเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพเดเตเดเต เดฌเตเดงเตเดฏเดชเตเดชเตเดเตเดเต. เด
เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฎเตเตป เดชเดคเดฟเดชเตเดชเดฟเดจเตเดเตเดเดพเตพ เดตเดณเดฐเต เดจเตเดฐเดคเตเดคเต เดคเดจเตเดจเต เดกเตเดฐเตเดตเดฑเตเดฎเดพเดฏเดฟ เดเดเดชเดดเดเตเดจเตเดจ เดชเตเดฐเดเตเดฐเดฟเดฏ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดธเตเดตเดจเด เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเต เดเดพเดจเตเด เดเดจเตเดจเตเดชเตเดณเดฟเดธเต เดธเตผเดตเดเดฒเดพเดถเดพเดฒเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณเดตเดฐเตเด เดคเตเดเดฐเตเด. win32 เดทเตเดฒเตเดฒเดฟเดจเตเดฑเต เดตเดฐเดตเตเดเต, เดเดคเดฟเดจเดเด เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเตเดเตเดคเตเดค เดเดฐเต เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดธเตเดตเดจเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด เดเตเดฎเดพเดฑเตเดจเตเดจเดคเต เดฏเตเดเตเดคเดฟเดธเดนเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเด (เดเดคเดฟเตฝ เดเตเดเตเดคเตฝ
เด
เดเตเดคเตเดค เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดธเดเตเดต เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเตฝ เดธเตเดตเดจเดคเตเดคเดฟเดจเตเดฑเต เดฎเดฑเตเดฑเตเดฐเต เดเดเดเดคเตเดคเดฟเตฝ เดธเตเดชเตผเดถเดฟเดเตเดเตเด, เด
เดคเดพเดฏเดคเต UEFI เดกเตเดฐเตเดตเตผ. เดเดเตเดเดณเตเดเต เดฌเตเดฒเตเดเต เดธเดฌเตโเดธเตโเดเตเดฐเตเดฌเตเดเตเดฏเตเดฏเตเด, เด
เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เด
เดเตเดคเตเดค เดชเตเดธเตเดฑเตเดฑเต เดจเดทเตโเดเดฎเดพเดเดฟเดฒเตเดฒ.
เด
เดตเดฒเดเดฌเด: www.habr.com