Введение
Техника компьютерного программирования В компьютерном программировании 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-подобных системах
На Unix-подобных операционных системах с динамическим линкером на основе id. Так (на BSD) и LD Linux. Так (на Linux), произвольные библиотеки могут быть связаны с новым процессом, указав имя пути библиотеки в переменной среды LD PRELOAD, которая может быть установлена глобально или индивидуально для одного процесса. Например, в системе Linux эта команда запускает команду "prog" с общей библиотекой из файла "test. Так что" присоединился к нему во время запуска: LD PRELOAD="./test. Такая библиотека может быть создана таким же образом, как и другие общие объекты. В случае GCC это включает в себя составление исходного файла, содержащего новые глобальные, которые будут связаны с опцией or, и связывание с опцией. Библиотека имеет доступ к внешним символам, объявленным в программе, как и любая другая библиотека. На macOS следующая команда запускает команду "prog" с общей библиотекой из файла "test. 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.