Как мне во время выполнения (без LD_PRELOAD
) перехватить / перехватить функцию C, такую как fopen()
в Linux, в духе Detours для Windows? Я хотел бы сделать это из Python (следовательно, я предполагаю, что программа уже работает на виртуальной машине CPython), а также перенаправить на код Python. Я в порядке, просто перехватывая функции общей библиотеки. Я также хотел бы сделать это без изменения способа запуска программы.
Одна из идей состоит в том, чтобы развернуть свой собственный инструмент на основе ptrace()
или переписать код, найденный с помощью dlsym()
или в PLT, и нацелить на генерируемые ctypes
функции, вызываемые на C, но я решил спросить здесь сначала. Спасибо.