Кіріспе
Компьютерлік бағдарламалау техникасы Компьютерлік бағдарламалауда DLL инъекциясы - динамикалық сілтеме кітапханасын жүктеуге мәжбүрлеу арқылы басқа процестің адрестік кеңістігінде кодты орындау үшін қолданылатын техника. DLL инъекциясын көбінесе сыртқы бағдарламалар басқа бағдарламаның мінез-құлқына оның авторлары күтпеген немесе көздемеген жолмен әсер ету үшін қолданады. Мысалы, инъекцияланған код жүйелік функцияларды шақыруға немесе пароль мәтіндік қоршауларының мазмұнын оқуға мүмкіндік береді, бұл әдеттегідей істеуге болмайды. Кездейсоқ процестерге кездейсоқ кодты енгізу үшін қолданылатын бағдарлама DLL инжекторы деп аталады.
In computer programming, DLL injection is a technique used for running code within the address space of another process by forcing it to load a dynamic link library. DLL injection is often used by external programs to influence the behavior of another program in a way its authors did not anticipate or intend. For example, the injected code could hook system function calls, or read the contents of password textboxes, which cannot be done the usual way. A program used to inject arbitrary code into arbitrary processes is called a DLL injector.
Unix-қа ұқсас жүйелердегі тәсілдер
ID-ге негізделген динамикалық сілтемесі бар Unix операциялық жүйелерде. so (BSD) және ld Linux-та. Сонымен (Linux-та) кездейсоқ кітапханаларды жаңа процеске LD PRELOAD ортасының айнымалысында кітапхананың жол атауын беру арқылы байланыстыруға болады, оны бір процеске жаһандық немесе жеке түрде орнатуға болады. Мысалы, Linux жүйесінде бұл команда "test. so" іске қосылған кезде оған қосылады: LD PRELOAD="./test. so" prog Мұндай кітапхананы басқа ортақ объектілер сияқты жасауға болады. GCC-мен бұл жаңа жаһандықтарды құрайтын бастапқы файлды құрастыруды қамтиды немесе опциямен байланыстырады және опциямен байланыстырады. Кітапхананың бағдарламада мәлімделген сыртқы символдарға басқа кітапханалар сияқты қолжетімділігі бар. MacOS-та келесі команда "test" файлынан ортақ кітапханамен "prog" командасын іске асырады. dylib" іске қосылған кезде оған қосылады: DYLD INSERT LIBRARIES="./test. dylib" DYLD FORCE FLAT NAMESPACE=1 prog Unix- тәрізді жүйелерде дебьюгерге негізделген әдістерді пайдалану да мүмкін.
LD PRELOAD="./test. so" prog
Such a library can be created in the same way as other shared objects. With GCC, this involves compiling the source file containing the new globals to be linked, with the or option, and linking with the option. The library has access to external symbols declared in the program like any other library. On macOS, the following command launches the command "prog" with the shared library from file "test. dylib" linked into it at the launchtime:
DYLD INSERT LIBRARIES="./test. dylib" DYLD FORCE FLAT NAMESPACE=1 prog
It is also possible to use debugger based techniques on Unix like systems.