한국   대만   중국   일본 
???????? ????? ???? - ?????????? ????????? ???? ??? ?? ?????

???????? ????? ????

?? ?????????? ????????? ????
Dynamic link library
?????(???) ??? ??????
.dll
??? ?????? ????????
application/vnd.microsoft.portable-executable
??????? ??? ?????
com.microsoft.windows-dynamic-link-library
??? ??????
MZ
??????????? Microsoft
?????????? Shared library

???????? ????? ???? (?? DLL )?? ???? ????????? ?????????? ??? ???? ?????????? ?? ????? ???????????? ????? ?? ????? ???????? ?????????? ?????? ? OS / 2 ???. ??? ??????????? ??????? ????? ???????? DLL ? OCX (???? ???????????? ???? ????????? ????? ???? ) ?? DRV (???? ???????? ????? ?????) ?????. ???????? ???? DLL?? ?????? ???????? ?????? EXE ??? - ???? ???? ???? ? ???? ??? (?? PE) ???? ????????? ?? ???? ? ?? ???? ? NE)New Executable) ???? ????????? ?? ???? . ?????? EXE??? DLL?? ????????? ???? ?? ? ??????? ? ????? ?? ?? ?????? ?? ????? ?????.

??????? ???? ?? ???? ???? DLL? ??? ?? ???????? ????? ????? ?? ???????? ?? ??? ???? ??? ????? ?????? ????????? ????? DLL ?????? ????. ?????????? ?? ???? DLL ???? ????? ???????? ???? ?? ???? ????? ????? ????? ICL ? ???????? ???? ? ?? ????? ???????? FON ? FOT ?????? ??????. [?]

?? ????? ???? ?????? ?????? ????????? ?????? ???? ???? ??? ?? ?? ???????? DLL ???? ????? ?? ?? ?????? ??? ???? ???? ? ?? ?? ??????? ????.

?? ??? ??????? ??????? ?? ????? ?????? ?? ???? ?????? ?? ??????? ??? ? ?? ????? ??? ??? ???? ?????? ?????? ?????? ?????? ? ????????? ??????? ???? ??????. [?]

?? ?????? DLL [ ?????? ]

????? ???????? ?????????? ?????? ? ?????? ???? ?? ?? ???? ???? ????? ???? ???? ??????. ?? ?????? ???? ??? ???? ??? ??? ?? ?? ??? ???? ?????? ??? ?? CPU ?? ?? ?????????? ???? ?? ?????? (yield ???)? ?? ???? ?????? ??????? (GUI) ?????? ??? ?? ?? ?? ?? ????? ??? ? ?????? ???????? ?? ????? ????. ???? ?????? ????? ???? ???? ????? ???? ???? ????? ???????: MS-DOS . ???? ????? ??? ???? ???? ???????????? ??????? ???? "DLL"??? ????? ???????. API ?????? ???? ??????? ?????? (GDI)? ?? ?? DLL ?? ??? GDI. EXE ?????????? ???????? ???? ????? ?? USER. EXE . ??? ???????? ????? ?? ????? DOS ???? ?? ??? ?????????? ?? ??? ????? ?????? ?? ?????? ?????? ?????? ?? ??? ???? ???? ???? ?????? ???? ??? ?? ?? ????? ?? ???? ?? ?? ??????? RAM? ???? ???? ???? ???? ????????? ???? ?????? ?? ??????. ?? ?? GDI ???? ???? ?? ??????? ??? ?? ?? ????? ?????? ?? ?????????? ??? ????? ???. ?? ???? ?????? ???? ???????? ?? ?? ???? ???? ???? ??????? ???? ??????. ????? ????? ?? ?? ?????? ??????? API ???? ?? ???????????? ?? ?? ????? ????? ?????. ??? ?? ????????? ?????????? ???? ?? ???????? ?????????? ???? ?????? ?????? ?? ????????? (????? ???? ????? ???? ?????? ???????? ?????? ??????? ????? ????? ????) ????? ???? ?????????? ??????? ?????? ?????? ???. GDI ?? ??????? ????? ?????? ?? ??? ?? ??? " ?????? ?????? "? ???? ??? ?? ?????????? ????? ????? ??? ??????.

???? ????? ?????? ?? GDI ?? ???? ???? ?? ???????? ?????? ????? ??? ????? ???? ??? ?? ?? ?????? ?? (windows shell) ????? ??? ?? ?????????? ????? ?????? ?? ???????? ??? ? ???? ??? ????????? ?? ??????? API?? ?? ?? ???????????? ????? USER ? GDI ???????? ????. ?? ????? ≪????? ????≫ ??? ????.

?? ?? ???????? ≪???????≫ ?????? (?? ?????(shared) ?????)? ?? ????? ??????? ?? ?? ??????? ???????? ??? ????? ???????? ????? ?? ???? ?????? ?? ?? ????? ≪?????≫ ????? ???????? ??? ?? ?????? ?? ?? ???? ?? ??? ?????? ?? ???? ?? ?? ?? ??????? ?? ????? ????? ?? ??? ??????? ??????. ?? ????? ????? ?? ?????? ?? ?? ???? ??????? ???? ???????. ??????????? ?? ??? ?????? ?? ???????? ??????? ?? ???? ????? ?? ????? ???? (??? ?? ???? ???????? ????? ??????? OS-extension)? ?? ????? ?? ??? ????? ???????.

???? ???????? ????? ?????? (??? ?? ????)? DLL?? ???? ? ???? ?? ???????? ?????? ??????? (GUI) ?????. ?? ???? ?????? ????????? ????? ????? ??? DLL???? ?? ????? DRV ????? ?? ?????????? ?????????? ???? ?????? ?? ???? ????? API ?? ?? ???? ?? ?????? ?????? ???? ???? (DDI) ????? ?????? ? "??? (GDI)" ? " USER) GUI)" ???? API?? ????? ????? ???????? ???? ????? ?? ???? GDI ? USER ? ????? DLL?? ?? ????? .EXE ???? ????.

????? ???? ????? ???? ?? ?????? ?? ?? ???????????? ???????? ??? ?? ???? ????? ?? ????? ???? ?????? ??? ?? ?? ????? ???? ????? ???????. DLL?? ?????? ????????? ???????????? ?? ?????? ?????? ??? ? ????? ??????? ???? ?? ????? ???????. ??????? ???? ????? ?????? ?? ??????? ?? ?? ? ??????? ?? ?? DLL ??? ??? ? ?? ?????? ?? ???? ?????? ????????? ????? ???? ????? ??? ?????? ?? ??? ??????????? ?? ?????? ?????? ???????? ???? ????.

??? ???? ?? ?????? ??????? ???? ??????? ?? ???????? ????? ???? ????-?????? ???. ?? ???? ???? ???? ??? ????? ????? ?? ????? ?????? ?? ????????? ????? ? ???? ?????? ??????? ?? ?? ?? ???? ???? ???? ???? ? ????? ???? ?? ?????????? ?? ??? ???? ?????? ???? ??? ???? ?????? ?? ??? ?????????. ??? ????? ????? ???? ?? ??????? ?? ???? ?? ??? Object Component ? ????? ActiveX ? ?????????.

?? ?????? x.1? 2.x ? 3.x? ???? ???????????? ?????? ?? ???? ???? ????? ?? ?? ?????? ??????????. ?? DLL ??? ?? ??? ?? ??? ???? ???? ???????? ??. ?? ?? ??? ???? ??????????? ?? ?? ???????? ??????? ???????? ??????????? ?? ?? ?????? ???? ????. ???????? ???????? ?? ??? ????????? ?? ?????? ?????? ???????. ??? ???????? ?? ????? ?? ??? ????????? ???????? ??? ?????? ???? ??????? ???? ????? ?? ???????? ?????? ?????? ?????????? ????? ?? ???? ???. ?? ????? ???????????? ?? ???? ?? ?????? ?? ? ?? ?????? ?? ???? ???? ??? ???? ??????. ?? ???? ?? ?? DLL ???? ??? ?? ?????? ?????? ???? ??????? ????? ????? ??? ????? ???????? ?? ?????? ?????? ???? ?????? ???? ?? ??? ???????? ??????? ????. ?? ???? ?? ??? ?????? ??????? ????? ?? ???????????? ?? ???? ?? ?????? ?? ? ?????? ?? ? ?????? ?? ????? ?? ?? ?????? ??? ???????????? ?????? ??? ?? ?? ????? ???? ????? ??? ? ?? ????? ???? ? ????? ????? ???????? ????? ?? DOS ?? ????? ???.

??? ?? DLL?? ???? ?????? ?????? ?????? ??? ????? ????? ????? ?????? ????? ?? ?????? ??? " ???? ???????? " ?????? ??????. [?] ?? ????? ???? ? ?????????? NET ?????? ?? ???? ??????? ?? ????? ?? ??? ?? ???? ?????? DLL hell? ??? ?? ????? ?? ??? ???? ??? ?????? ????? ?? ????? ???? ?? ????? ?????????? ????? ???????? ? ?????????? ?????? ????? ???? ???? ??????? ? ?? ?? ???? ???????????? ?????? ??? ?????????? ??????? ???. ??? ?? ????? ??????? ???? DLL hell? ????? ?????? ???? ?? ???? ?????????.

????????? DLL [ ?????? ]

?? ???????? DLL?? ?????? ???? EXE?? ?????? ?????? ?? ???? ????? ?? ????? ???? ?? ???? ????? ???? ???? ???? ?? ??? ???? ?? ???? ??? ????? ? ??????? ?? ?? ?? ??? ????? ??????.

????? ????? ?????? DLL ???? ?????? ???? ???? ????? ???? ???? ?? ?? EXE ???? ?? ?????? ?? ?? ?? ?? ???? ???? ???????? ???. ?? ??? ??? ???? ??????? ????? "RUNDLL. EXE" ?? "RUNDLL32.EXE" ?? ???? ???? ? ????? ?????? ?? ???? DLL?? ????? ?????? ?? ????? ?????? ???? ???? ???? ???? ???????? ???? ???.

DLL?? ??????? ???? ???? ?? ? ???? ????? ?? ????? ??????? ? ?? ?????? ????? ??????? ?? ????? ?????? ??/????? ?????? ???? ????? ???? ????? ???? ?? ????????? ????? ?????? ?????? ?? ?????? ??????? ????? ?????? ??? ?? ????? ???. ?? ???? ??? ????? ?????????? ?????? ? OS / 2 ????????? ?? ????? ?????? ?? ?? DLL???? ?? ?? ??? ????? ???????? ????? ?? ????? ?????? ?????????? ??????? ???? ?? ???? ?? ????? ???? ??? ?? ???? ???? ?? ??? ??? ???. ?? ????? ?? ??????? OS ????? ??????? ?? ???? ? ?????? ?? ?? ?????? ?????.

DLL?? ?? ???? ????? ?? ?????? ???????? ???? ??????? ? ?? ??????? ?????? ?????? ?? ???? ?????? ?? ?? ???????? ????? ?? ????? ?????? ??? ?????? ?? ??? ?????? ?? ??? DLL ?? ???? ????? ????? ????? ??? ?????? ?? ???????? EXE ???? ?????.

?????? ????? [ ?????? ]

?? ?????? API ? ???????? DLL ?? ??? ???? ????????? ???????. ?? ??? ?????? ?? ?? ????????? ??? ??? ?? ????? ?? ???? ???? ?????? ? ?????? ?????? ???? (???? ??) ?? ??????? ?????? ???? (???? ???????) ? ????.

?? ?? DLL ??????? ?? ???? ???? ????????? ?? ?? DLL ??????? ??????? ?? ?????? ?????? ??????? ????? ????? ?? ???? ?? ?? ????? ?????? ????? ??????? ? ?? ???? ???? ????? ?????????. ??? ????? ?????? ????? ??? ???? ?? ??? ?? ?????? ??????? ???? ??????? ?? ??? ?????? ? ??? ?? ?? ?????? ?????? ?? ???? DLL ?? ???? ???? ??????? ??????.

?????? ??????? ??? ??? ???????? ?? DLL ??????? ????? ?????? ???? ?? ??????? ?? ?? DLL ??????? ??????? ?? ??? ????? ?? ???? ???????? DLL ????. ?? ???? ???????? ??????? ???? ????????? ?? ?????? ?????? ????? ?? ??? ????? ??????? ????? ??? ???????? ?????? ?? ???? ??? ???? ?????? ?? ?????? ?????? ???? ???? ?????. ?? ?? ???? ?? ???? ????? ??????????? ????? ???? ??????? ?? ????? DLL ????? ????? ???????? ??? ?? ????? ?????? ????? ??????? ???? ?? ?????? ???????? ???????? ????? ?? ???? ???? ?? ???????? ???? ?????? ??? ????????? ?? ?????? ????? ???????? ????? ????. ?? ????? ????? ??????? ?? ??? ?? ???? ????? ????? ??????? ???????? ?? ??? ????? ?????? ????? ?? ?? ??? ?? ???? ?????? ???? ??? ???? ???. ??? ?? ???? ??? ???? ??????? ?? ??????? ?? ??????? ????? ?? DLL?? ???.

??? ?? DLL ?? ???? ????????????? ?????? ??? ????? ??? (?? ????? ???? UPX )? ???? ??????? ?? ?? ?? ????? ?????? ? ????? ???? ??????? ? ?? ?????? ?????? ????????. ??????? ?????? ? ????? ??? ???? ?? ??????? ???????? ?????? ???? ?? ?????? ????? ?????? ????????? DLL?? ?? ??????? ???? ?????? ??? ????? ???? ??? ?? ??? ????? ??? ????? ?? ?????? ?????? ???? ????? ?????? ??????? ????? ????? ????? ????? ??? ?? ?? ????? ?? ?????? ???? ?? ??? ??? ?? DLL ?? ??? ??? ?? ?? ????? ?????? ???? ????? ????? ???.

???????? ??????????? [ ?????? ]

?????? ???????????? ???????? ???????????? ???? ??? ???? DLL?? ?? ???? ???? lib ???? ???????. ?? ????? ????? kernel32.dll? ???????? ???? ????? ???? ????? ???? ?????? ????? ????? ???? ? ?????? ?????? ?? ???? kernel32.lib ????? ???.

?????? ?? ???????????? ???? ??????? ?? ????? ?? ?? ???????? ???? ??? ? ???? ??? ?? ?? ?????? ??????? ????? ????? ?? ???? ??? ???? ????? ?? ???? ??????. ??? ???? ?????? ????? ???? ???? ?? ???? ???????? ???? (IAT) ??? ?? ???? ?? ???? ???????????? ?????? DLL ????? ??????. (?? ???? ????? ??? DLL ????? ????? ??? ?? IAT ???). ?? ???? ????? IAT ?? ???????? ????? ?? ?????? ?? ???????? ?? ?? ???? ?? DLL ?? ?? ??????? ???????? ???? ????? ??????.

??? ???? ? ????? ?? [ ?????? ]

?? ????? ?? ???? ?? DLL ???? ??????? ???? ?? ??? ?????? ? ?? ???? ???????? ?? ?? ??? ??????? ??????. ?? ???? ?????? ????? ?? ??????? ?? ?? DLL ?? ?? ????? ?? ?? ??? ???? ???. ????? ?? ???? ????? ?????? ?????? ???? ???? ?? ???? ???????? ???? DLL ?? ???? IAT ???. ????? ??? ?? ????? ????? ??? ?? ????? ???? ???? ?? ?? ???. ???? ???? ????? API ????????? ??? ?????? ?? ???????? ????? ?????? ??? ???????? ?? ????? ?????? ?? ???? ????? ?????? ????????? ????? ????????? ?? ?????? ???? ????? API ?????? ?? ?? ?????? ???? ???.

???????? ????? ?? ????????? ???? ?????? ?? ?? ?? ????? ???? ??? ???? ?????? ?? ?????? ?? ???????? ????? ?? ??????: ????? ???? ???? DLL?? ?? ?????? ????? ???? ???????? ???????? ?? ????? ?????? ??????? ???? ???? ???? ?? ???? ??????? ???. ??? ????? ??? ???? ??? ?? ??? ?????? ???? ??????? ???? ??????? ?? ??? ?? ?? ?? ???? ????? ????? ????? ???. ?? ?????? ?? ????? ???? ??? ????????? ???? ???? ???????? ?????? ?????? ??? ????? ???? ???? ???.

?????? ???? ??? ?? ?? ???? ?????? ?? ?? ?? ???? ??? ?? ?? DLL ???? ???? ? ??? ??? ???? ??? ??? ?? ???????? ????? ???????? ??? ?? ???? ??????? ?? ? ??? ????. ???? ????? ???????? ???? ?????? ????? ?????? ????? ? ????? ?????????? DLL ?? ???????? ?? ?? ????? ??? ?? ????? ??????. ?? ???? ????? ?????? ????? ?????? ?? ??? ???? ???? ?? ???????? ?? ??? ??????? ??? ?? ???? ??? ?????? ???? ?????? ?? ?????? ????? ???????? ??? ??????? ??????. ?? ??? ??? ????? ??? ???????? ?? ?? ???????? ?? ?? ?? ?? ????? ??? ??? ?????? ???? ?????? ?????? ???? ????????? ?????? ?? ?????? ??????.

???????? ?????? ????? ??? ?? ???? ?????? ???????? ??????? ??? ?? ?? ???? ????? ?? ???? ??????? ??? ????? ????? ???? ???? ? ?????? ?? ???? ???? ??? ?? ??????? ??????? ???? ???????? ???????? ??? ???????? ???? ????? ?? ???????? ?????? ???? ?????. ?? ????? ????? ???? ?????????? ?????? ????????? ?? DLL??? ????? ????? ?? ?? ???? ?? ?????? ????? ???????. ?? ???? ??? ???? ????? ????? ????????? ???? ?? ????????? ?? ???? ??? ???? ?? ??? ??? ????????? ???. ??? ??? ??????????? ?? ?? ????? ????? ???? ????? ???? ????? ??????? ??? ????? ?????????? ??????? ?????? ?? ????? ??????? ???????? ???? ???? ?? ????? ?? ?????????? ???? ??? ?? ??????????? ?? ???? ?? ????? ?????? ???????? ?? ?? ????? ????????? ??????? ?????? (????? ?????? MD5 ) ???? ?????? ???????? ???? ????? ???. ???????? ?? ???????? ???? ?????? ???? ???????? ???? ???? ?? ???????? ???????? ??? (?? ????? ??????) ??????? ???? ? ???? ????? ?? ???? ?????? ?? ??? ???? ???.

????? ???? ?? ???? ???? [ ?????? ]

???????? DLL ???? ??? ?????? ???? ?? ???? ???? ???????? ????? ?? ?????? ?? ??? "Run-time dynamic linking" ?? ???????? ???? ???? ???? ?????????? ?? ??????? ?? ???? LoadLibrary (?? LoadLibraryEx ). ???? GetProcAddress ???? ?????? ????????? ???? ??? ?? ???? ??? ? FreeLibrary ???? ??? ??? ?? DLL ?? ??????? ?? ???? ???. ??? ????? ????? ????? ?? dlopen ? dlsym ? dlclose ?? POSIX API ?????????.

?????? ????? ???? ?? ???? ???? ?? ?? ????? ?? ????? ???? ?? ????? ?? ???????? ?? ??? ? ??? ???. ????? ?? ???? ?? ?? API ?????? ????? ????? ?? ?? ??? ????????? ????.

??????? ?????? [ ?????? ]

?????? ?????? ?? ????????? ?? ?? ?????? ?? ?? ???????? DLL ????? ???? ??? DLL ???? ????? ???? ?? ??? ???????? ???? ?????? ?????? ?? ???? ?????? ??? ??? ???? ?????? ???? DLL???? ?? ?? ???? ??? ?????? ?? ?? ???? ????? ????? ???? ???. ?? ??? ??? ?? ?????? ???? ??? ?? ?????? ?? ?? ???????? DLL ????? ??? ?? ?????? ???????? ???????? ???? ?? ?? ????? ???????. [?] ?? ??? ???? ????? ???? ??? ??????? ????? ?? ?????? ???? ?????? DLL ?? ???? ??? ?? ?? ?? ???????? ???? ?? ???? ????? ?? ??? ?? ????? ?? ????????? ?????? ?? ???? ?? ????????? ?? ?????? ???? ????? ?? ????????? ????? ??????? ?? ??? ?????? DLL ?? ?? ???? LoadLibrary ? GetProcAddress ???? ??? ? ?? ?? ???????? ???. ??? DLL ?? ????? ???? ?? ???????? ???? ?? ???? ????????? ??? ???? ?????? ?????? ?? ??????(Exception) ????? ?????? ?? ???? ??? ???? ??? ? ?? ????? ?? ?? ?????? ???. ??? ?????? ?? ???????? ?????? ????? ???? ????? ???? ?? ??? ?????????? ?? ?????? ?? ?? ?? ???? ??? ????? ??????.

??????? ??????? ????? ??? ??? ???????? ??????????? ?? ????? ?????? ?? ????? ?????? ?????? ?????????? ????? ?? ??? ?? ????? ???????? ?? ?????? ?? DLL ?/?? ?? ???? ???? DLL ?? ????????? ??? ????? ????? ???.

??????? ???????? ? ???? [ ?????? ]

???? [?] [ ?????? ]

?? ?? ???? ????? ?? ??? ????? ????? program ? library ??????? ??????. ?? ????? ????? ????? ???? ??? ???? ??? ?? ??? exports ??? ???????.

???? ???? ?????? ?? ????? ?? DLL?? ???? ?? ???????? LIB ????? ???? ????? ?? ?? DLL? ???? ????? external ?? ??????? ?????? ???? ???? ???? ??? DLL ??????? ??????? ?? ????? ?? name ???? ???????? ???? (??? ?????? ???) ?? index ???? ??????? ???? ??.

?????????? ?????? ????? Microsoft Visual Basic [ ?????? ]

?? ?????? ?????(VB) ???? ????? ?? ???? ???? ???????? ??????. ??? ????? ?? ??????? ?? LoadLibrary ? GetProcAddress ????? API? ???????(declare ????) ?? ????? ????????? ??? ???? ???.

????? ???? ???? ????? DLL ?? ???? ????????? VB ?? ???? ????? ???? ?????? ??? ???? DLL ?? ???? ????. ????? ????? ???????? ??? ?? ?????? ? ?? ????? ?? ?? ?????? ???.

????? ????? DLL?? ?? VB? ?? IDE ???? ?? ??? ????? ?????? ?? DLL??? ActiveX ?? ????? ????? ?? ??? ??? ??? [?] ??? ???? ???? ????? ??? ?? ?? ??????? ????? ?????? ?? ?? ????? ?? ????? ????? ?? ?? DEF. ????? ??? ?? ??? ?? ???? ? ?????? ? ??? ?? ?? ????? ???. ??? ????? ?????? ?? ????? ?? DLL ????????? ?????? ?? ?? ??????? ?? ?????? ????? (???? ? ?? ????????) ????? ??? ?? ???????? ?? ???? ?????? "?????(Declare)" ????? ???.

C ? ++ C [ ?????? ]

?????????? ?????? ?? + +(MSVC) ??? ????? ?? ???? ????????? C ++ ????? ?????? ?? ????? ?????? ????? ?? ????? ???? ??? ?? ???? ??? ?????? ?????? ?? ?? ?? ++???? ????? ?????? ???? ??????????? ?????? C ? C ++? ?? ???? ???????? ?????? GCC ???? ????????. ??? ??????? ?? ????? __declspec ??? ?? ????? ???? ??????? ???????. ???? ????? ????? ?????? ?? ????? C ?? C ++ ???? ?????? ???? ????? ?????? ???? ?? ????? " extern "C ?? ?? C ++ ????? ???? ?? ???????? ?? ???? ???? ?? ????? C ???? ??????? ???. [?]

????? ?? ???? ???? ????? ???? ??? ?? ???? ??? ?? ??????? ?? ????????? __declspec ? ????? ???? ??? ?? ???? IMPORT ?? EXPORTS ?? ??? DEF ???? ??????? ?? ????? ??? ??? ?????. ???? DEF ?? ??? ????????? ???? ????? ?????? ??????? ? ???????? ???? C++ ????.

????? DLL ?? ?? ???? DLL ? LIB ?? ????? ??????. ???? LIB ???? ????? ?? ????? ?? DLL ?? ???? ??????? ??????? ??????? ???? ????? ???? ???? ???? ????. ??? ????? DLL ??? ?? ??? ?? ?? ???????? - Component Object Model ????? ????? ???? DLL ???? ?? ?? ??? ?? ?????????????? ?? ?? ????? ??????? PATH ????? ??? ????? ?? ?? ????????? ????? ??? ??? ?? ?? ???? ????????? ?? ????? ?????? ?? ?? ?? ??? ??????? ?? ?? ???? ???? ?????. DLL??? COM ???? ?? ??????? ?? regsvr32.exe ??? ??????? ?? ?????? ????? DLL ? ????? ????? ?? ( GUID ) ?? ?? ??????? ???? ??????. ??? ????????? ????????? ?? DLL?? ?? ????? ???? GUID ????? ??????? ???? ?? ???? ?? ?? ???? ???? ?? ?? ????? ?? ?? COM ?? ?????? ?? ?????? ????????? ???? ??????????? ?? ? ???? ??????????? ?? ?? ??????? ????.

???????? ???????????? [ ?????? ]

??????? ?? ?????????? DLL [ ?????? ]

???????? ??? ???? ?????? ?? ????? ?? ????????? ??? ???? ??????? ???? ?? ???????? ???? ????? ?? ????? ?? DLL ?? ???? ??????? ????? ????.

???? ????

{$APPTYPE CONSOLE}


program
 Example
;


// import function that adds two numbers

function
 AddNumbers
(
a
,
 b
 :
 Double
)
:
 Double
;
 StdCall
;
 external
 'Example.dll'
;


// main program

var

   R
:
 Double
;


begin

  R
 :=
 AddNumbers
(
1
,
 2
)
;

  Writeln
(
'The result was: '
,
 R
)
;

end
.

???? ?? ?? ??? ?? ???? ????? Example.lib ?? ????? ???? ?????? ??????? ???? ????. (??? ???? ???? Example.dll ????? ???????) ?? ????? (????? ???? ????? ????? ???? ?????!) ??? ?? ?? ????? ???????. Example.lib ??? ???? ?? ???? ?????? ???? ???????? ?? ????? ??????? DLL ????? ??????. ?? ???? ????? ??? ????? ?????? ???? ????? ??????? ???? ????? ???????? ??? ????? AddNumbers ?? ???? ???. ??? ?????? ???? DLL Example.dll ?? ?? ???? ?? ???? exe ?? ?? ??? ????? ??????? ??? ????.

#include
 <windows.h>

#include
 <stdio.h>


// Import function that adds two numbers

extern
 "C"
 __declspec
(
dllimport
)
 double
 AddNumbers
(
double
 a
,
 double
 b
);


int
 main
(
int
 argc
,
 char
 *
argv
[])

{

    double
 result
 =
 AddNumbers
(
1
,
 2
);

    printf
(
"The result was: %f
\n
"
,
 result
);

    return
 0
;

}

??????? ?? ????? ???? ???? ???? [ ?????? ]

???????? ??? ???? ?????? ?? ????? ?? ???????? ???? ???? ? ??????? ????? ?? ??????? ?? ??????????? ???? ??? API ??????? ??????? ????.

?????????? ?????? ????? [ ?????? ]

?????: ?? ??? ???????? ???? ?? ??????? ?????????? ???? ???????? ??? ?? ???????? ?????? ?????

Option
 Explicit

Declare
 Function
 AddNumbers
 Lib
 "Example.dll"
 _
(
ByVal
 a
 As
 Double
,
 ByVal
 b
 As
 Double
)
 As
 Double


Sub
 Main
()

Dim
 Result
 As
 Double

Result
 =
 AddNumbers
(
1
,
 2
)

Debug
.
Print
 "The result was: "
 &
 Result

End
 Sub

???? ???? [ ?????? ]

?????: ?? ??? ???????? ???? ?? ??????? ?????????? ???? ???????? ??? ???????? ?????? ?????!

program
 Example
;

  {$APPTYPE CONSOLE}

  uses
 Windows
;

  var

  AddNumbers
:
function
 (
a
,
 b
:
 integer
)
:
 Double
;
 StdCall
;

  LibHandle
:
HMODULE
;

begin

  LibHandle
 :=
 LoadLibrary
(
'example.dll'
)
;

  if
 LibHandle
 <>
 0
 then

    AddNumbers
 :=
 GetProcAddress
(
LibHandle
,
 'AddNumbers'
)
;

  if
 Assigned
(
AddNumbers
)
 then

    Writeln
(
 '1 + 2 = '
,
 AddNumbers
(
 1
,
 2
 )
 )
;

  Readln
;

end
.

???? ?? [ ?????? ]

?????: ?? ??? ????????? ???? ?? ?? ?? ???????? ?????????? ???? ???????? ???? ???????? ?????? ?????.

int
 a
=
0
;

a
++
;

consol
.
write
(
a
);

???? ?????? [ ?????? ]

?????: ?? ??? ????????? ???? ?? ???????? ?????????? ???? ???????? ??? ?? ???????? ?????? ?????!

import
 ctypes


my_dll
 =
 ctypes
.
cdll
.
LoadLibrary
(
"Example.dll"
)

# The following "restype" method specification is needed to make

# Python understand what type is returned by the function.

my_dll
.
AddNumbers
.
restype
 =
 ctypes
.
c_double


p
 =
 my_dll
.
AddNumbers
(
ctypes
.
c_double
(
1.0
),
 ctypes
.
c_double
(
2.0
))


print
 "The result was:"
,
 p

??? Object Component (COM) ?? ????????? ?????? ?? ???? ??????? ?????????? ???? ?? DLL ? EXE ????? ??????. ??? ?????????? ???? ????? ???? ? ???? ?? ??????? ? ?????? ????? ???? ????? ? ???? ?????? ?? ????? ?? ???? ????? ??????. ?????? COM ????? ?? ?? DLL ?????? ??? ? ?? ????? ????? ?????? ?? ????? ?? ?? ?????? ????? ?? ?????? ???????. ??? ????? ?????? ?? ????? COM ???? ?????????? ???????? ??????? ?? ???????? ????? GUI ???? ????? ?????? ????? ? ASP. ????? ?????? ????????? ?? ???? ???????? ??????????? ????. [?]

?? ???? ?? ?????????? ?? ??????? ?? ????? ????? DLL ?????? ??????? DLL spoofing, DLL preloading ?? ???? ??????? ?????? ?? ????????? DLL ???? ????? ?? ???? ????? ?? ?? ????? ?? ???? ???? ??? ??? ???? ??? ????????? ???? ???????. [?] [??] [??] [??] ??? ?????????? ???? Georgi Guninski ?? ??? ???? ??? ??. [??] ?? ????? ????? ??? ?? ???? ????? ACROS ?????? ?? ?? ??? ??? ? ??? ?? ????? ???? ?????? ????????? ??? ?? ?? ?? ????? ???? ????? ???. [??] ??????????? ?? ?? ???????? ????? ???? ???????? ???? ???????? ???? ?????? ????? ????? ???????? ?? ???? Temp ? ??????? ????? ?? ??? ?????????? ???? ?????. [??] [??] [??] [??] [??] [??] [??]

???????? ?????? [ ?????? ]

????? ?? ????? [ ?????? ]

????? [ ?????? ]

  • Microsoft Corporation. "Creating a Resource-Only DLL" . Microsoft Developer Network Library .
  • Mohammad ( ????-??-?? ). ≪????? ???? ??? ??????? dll≫ . ??? ???? ? ???? ?????? - ????? ??????? - ?? ?????? ???? ? ????????? . ?????????? ?? ????-??-?? .
  • "The End of DLL Hell" . Microsoft Corporation. Archived from the original on 2008-05-06 . Retrieved 2009-07-11 .
  • "Linker Support for Delay-Loaded DLLs" . Microsoft Corporation . Retrieved 2009-07-11 .
  • "???? (???? ????????????)" . ?????????? ????????? ???? . 2018-11-04.
  • Petrusha, Ron (2005-04-26). "Creating a Windows DLL with Visual Basic" . O'Reilly Media . Retrieved 2009-07-11 .
  • MSDN ? ?? ??????? ?? extern ???? ???? ???? ?????
  • Satran, Michael. "Component Object Model (COM)" . msdn.microsoft.com .
  • "DLL Preloading Attacks" . msdn.com . Retrieved 25 March 2018 .
  • "More information about the DLL Preloading remote attack vector" . technet.com . Archived from the original on 1 January 2016 . Retrieved 25 March 2018 .
  • "An update on the DLL-preloading remote attack vector" . technet.com . Archived from the original on 5 January 2016 . Retrieved 25 March 2018 .
  • "Double clicking on MS Office documents from Windows Explorer may execute arbitrary programs in some cases" . www.guninski.com . Retrieved 25 March 2018 .
  • "Binary Planting - The Official Web Site of a Forgotten Vulnerability. ACROS Security" . www.binaryplanting.com . Retrieved 25 March 2018 .
  • "Dev to Mozilla: Please dump ancient Windows install processes" . theregister.co.uk . Retrieved 25 March 2018 .
  • "Gpg4win - Security Advisory Gpg4win 2015-11-25" . www.gpg4win.org . Retrieved 25 March 2018 .
  • "McAfee KB - McAfee Security Bulletin: Security patch for several McAfee installers and uninstallers (CVE-2015-8991, CVE-2015-8992, and CVE-2015-8993) (TS102462)" . service.mcafee.com . Retrieved 25 March 2018 .
  • "fsc-2015-4 - F-Secure Labs" . www.f-secure.com . Archived from the original on 31 July 2017 . Retrieved 25 March 2018 .
  • "ScanNow DLL Search Order Hijacking Vulnerability and Deprecation" . rapid7.com . 21 December 2015 . Retrieved 25 March 2018 .
  • Team, VeraCrypt. "oss-sec: CVE-2016-1281: TrueCrypt and VeraCrypt Windows installers allow arbitrary code execution with elevation of privilege" . seclists.org . Retrieved 25 March 2018 .