???????? ????? ????
(??
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
.