Кіріспе

Компьютерлік бағдарламалау техникасы Компьютерлік бағдарламалауда DLL инъекциясы - динамикалық сілтеме кітапханасын жүктеуге мәжбүрлеу арқылы басқа процестің адрестік кеңістігінде кодты орындау үшін қолданылатын техника. DLL инъекциясын көбінесе сыртқы бағдарламалар басқа бағдарламаның мінез-құлқына оның авторлары күтпеген немесе көздемеген жолмен әсер ету үшін қолданады. Мысалы, инъекцияланған код жүйелік функцияларды шақыруға немесе пароль мәтіндік қоршауларының мазмұнын оқуға мүмкіндік береді, бұл әдеттегідей істеуге болмайды. Кездейсоқ процестерге кездейсоқ кодты енгізу үшін қолданылатын бағдарлама DLL инжекторы деп аталады.

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- тәрізді жүйелерде дебьюгерге негізделген әдістерді пайдалану да мүмкін.