Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ» Π² Windows NT Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ. ΠΠ»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°, Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅Π³ΠΎ ΠΈ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ API CreateFile(), WriteFile() ΠΈ CloseHandle(). ΠΡΡΠ΅Ρ writeme ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅://open the file
file=CreateFile(βbadfileβ,GENERIC_ALL,0,NULL,OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,NULL);
//write our shellcode to the file
WriteFile(file,writeme,65,&written,NULL);
CloseHandle(file);ΠΠ°ΠΏΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°. ΠΠ· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΠΉ ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ½ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠ΅ 16 Π±Π°ΠΉΡ Π΄Π°Π½Π½ΡΡ , Π³Π΄Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ 8 Π±Π°ΠΉΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 4 Π±Π°ΠΉΡΠ° β ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° EBP ΠΈ Π΅ΡΠ΅ 4 Π±Π°ΠΉΡΠ° β ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π² Π±ΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ 12 Π±Π°ΠΉΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠΉ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Intel nop, ΡΠΎ Π΅ΡΡΡ 12 Π±Π°ΠΉΡ 0x90. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ nop, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ°ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° ΡΠ΅ΠΉ ΡΠ°Π· ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ nop ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΌ Π±ΡΡΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΌ Π² ΡΡΠ΅ΠΊΠ΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π±ΡΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° EBP. ΠΠ»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΡΡ 12 Π±Π°ΠΉΡ Π±ΡΡΠ΅ΡΠ° Π±Π°ΠΉΡΠΎΠΌ 0x90 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ memset() ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° Π‘.
memset(writeme,0x90,12); //set my local string to nops
ΠΠΎΠΈΡΠΊ ΡΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π±ΡΡΠ΅ΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ ΡΠΎΡΠΊΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°. Π£ΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ EIP ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½ΡΠΆΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ret ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π² ΡΠΎΡΠΊΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
EAX = 00000001 EBX = 7FFDF000
ECX = 00423AF8 EDX = 00000000
ESI = 00000000 EDI = 0012FF80
ESP = 0012FF30 EBP = 90909090ΠΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ret ΡΠ΅Π³ΠΈΡΡΡ ESP ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΠ±Π»Π°ΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° ΠΎΠ±Π»Π°ΡΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° ret ΠΏΡΠΎΠ΄Π²ΠΈΠ½Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ESP Π½Π° 4, ΠΎΠ½ ΡΡΠ°Π½Π΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ret Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP. ΠΠΎΡΠ»Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ EIP ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ESP Π² EIP Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½ Π½ΡΠΆΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ, ΡΠΎ Ρ Π½Π΅Π³ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΌΠ΅ΡΠΈΠΌ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ° EBP Π² ΡΠΏΠΈΠ»ΠΎΠ³Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ 4 Π±Π°ΠΉΡΠ° Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ Π±ΡΡΠ΅ΡΠ° 0x90.
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Π² Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΡΠ·Π²ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π±Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ESP Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½ΡΠΆΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π² ΡΠ΅Π³ΠΈΡΡΡ EIP. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ findjmp. ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΠ·Π²ΠΈΠΌΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΊΠΎΠ΄Π° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ DLL ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ Π² ΡΠΎΡΡΠ°Π² Visual Studio ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ depends.exe ΠΈΠ»ΠΈ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ dumpbin.exe.
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠΎΠΉ dumpbin, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π²Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:dumpbin /imports samp4.exe
Microsoft (R) COFF Binary File Dumper Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file samp4.exe
File Type: EXECUTABLE IMAGE
Section contains the following imports:
KERNEL32.dll
426148 Import Address Table
426028 Import Name Table
0 time date stamp
0 Index of first forwarder reference
26D SetHandleCount
174 GetVersion
7D ExitProcess
1B8 IsBadWritePtr
1B5 IsBadReadPtr
1A7 HeapValidate
11A GetLastError
1B CloseHandle
51 DebugBreak
152 GetStdHandle
2DF WriteFile
1AD InterlockedDecrement
1F5 OutputDebugStringA
13E GetProcAddress
1C2 LoadLibraryA
1B0 InterlockedIncrement
124 GetModuleFileNameA
218 ReadFile
29E TerminateProcess
F7 GetCurrentProcess
2AD UnhandledExceptionFilter
B2 FreeEnvironmentStringsA
B3 FreeEnvironmentStringsW
2D2 WideCharToMultiByte
106 GetEnvironmentStrings
108 GetEnvironmentStringsW
CA GetCommandLineA
115 GetFileType
150 GetStartupInfoA
19D HeapDestroy
19B HeapCreate
19F HeapFree
2BF VirtualFree
22F RtlUnwind
199 HeapAlloc
1A2 HeapReAlloc
2BB VirtualAlloc
27C SetStdHandle
AA FlushFileBuffers
241 SetConsoleCtrlHandler
26A SetFilePointer
34 CreateFileA
BF GetCPInfo
B9 GetACP
131 GetOEMCP
1E4 MultiByteToWideChar
153 GetStringTypeA
156 GetStringTypeW
261 SetEndOfFile
1BF LCMapStringA
1C0 LCMapStringW
Summary
3000 .data
1000 .idata
2000 .rdata
1000 .reloc
20000 .textΠ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΎΡΡΠ΅ΡΠ° ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡΡ dumpbin.exe Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ Π² ΡΡΠ·Π²ΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ samp4.exe Π²ΡΡΡΠΎΠ΅Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° DLL β kernel32.dll. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ kernel32.dll Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠΊΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ kernel32.dll.
ΠΠΎΠΈΡΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ findjmp, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΠΉΠ΄Π΅Ρ Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ kernel32.dll ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ° ESP. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ findjmp ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
findjmp kernel32.dll ESP
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΡΠ΅Ρ:
Scanning kernel32.dll for code useable with the ESP register
0x77E8250A call ESP
Finished Scanning kernel32.dll for code useable with the ESP
register
Found 1 usable addressesΠΠΎΠ΄ΠΌΠ΅Π½ΠΈΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ret ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° EIP Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0x77E8250A, ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ret ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π°Π΄ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ call ESP) Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄ EIP. ΠΡΠΎΡΠ΅ΡΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ call ESP, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ESP, ΡΠΎ Π΅ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ ΡΡΠ΅ΠΊΠ° c ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° Π°Π΄ΡΠ΅Ρ ΡΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
DWORD EIP=0x77E8250A; // a pointer to a
//call ESP in KERNEL32.dll
//found with findjmp.cΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π°Π΄ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π±ΡΡΠ΅Ρ writeme ΠΏΠΎΡΠ»Π΅ 12 Π±Π°ΠΉΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: memcpy(writeme+12,&EIP,4); //overwrite EIP here ΠΠ°ΠΏΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΅Π³ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°, ΡΠΎ ΠΊΠΎΠ΄ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ Β«HIΒ». ΠΠ±ΡΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΡΠΎΡΠΈΠΏ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΠΊΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MessageBox():
MessageBox (NULL, βhiβ, NULL, MB_OK);
ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C Π² ΠΊΠΎΠ΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄ΠΈΠ·Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΠΈΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ user32.dll ΡΡΠ½ΠΊΡΠΈΡ MessageBox(). ΠΠ΅Π»ΡΠ·Ρ Π½Π°Π΄Π΅ΡΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° user32.dll Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° Π² ΡΡΠ·Π²ΠΈΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π΅Π΅ Π·Π°Π³ΡΡΠ·ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ LoadLibraryA(). Π€ΡΠ½ΠΊΡΠΈΡ LoadLibraryA() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ Win32 Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ DLL Π² ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°. ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΡΡΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ kernel32.dll, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΠ± ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠΈΠ»ΠΈΡΡ dumpbin. ΠΡΠ°ΠΊ, Π² ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΡΠ½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ user32.dll, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ MessageBox(). ΠΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
LoadLibraryA(βUser32β); MessageBox(NULL, βhiβ, NULL, MB_OK);
Π€ΡΠ½ΠΊΡΠΈΡ LoadLibraryA() ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Β«.dllΒ», ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ user32.dll ΡΠΊΠ°Π·Π°Π½ΠΎ Π±Π΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° 4 Π±Π°ΠΉΡΠ°.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° user32.dll, Π° Π·Π½Π°ΡΠΈΡ, ΠΈ ΠΊΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ MessageBox(). Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ Π±ΡΠ΄ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, Π½Π° ΡΡΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠ΅ΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠΎ Π½Π΅Ρ ΠΎΡΠΎΡΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ExitProcess(). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:LoadLibraryA(βUser32β);
MessageBox(NULL, βhiβ, NULL, MB_OK);
ExitProcess(1);ΠΠ»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C Π² ΠΊΠΎΠ΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Visual C, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ Π² Π±ΡΡΠ΅Ρ BYTE.
ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π² ΡΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ», ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΌ Π±ΡΡΠ΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, Π² Π±ΡΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π±ΡΡΠ΅Ρ Π²ΡΠ³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΡΠ°ΠΉΠ».