Вопросы по теме 'ptrace'

Ищем способ перехватить инструкции CPUID
Я ищу аккуратный способ ловушки и возни с инструкцией CPUID процессов Linux. Поиграл с ptrace() и исправил все коды операций cpuid во всех исполняемых областях mmap'ed, созданных процессом, заменив их на int3. Не очень хорошо сработало, поскольку...
1033 просмотров
schedule 01.06.2023

Использование ptrace для отслеживания всех вызовов execve () для дочерних элементов
Я пытаюсь написать инструмент для Linux CentOS, чтобы отслеживать все порожденные процессы и то, что запускается. По сути, мне интересно пройти все вилки / клоны и испустить все командные строки из execve() . Strace уже делает (частично) это, но...
11731 просмотров
schedule 30.05.2022

ptrace %edx для sys_open несовместим
Я пытаюсь получить имя файла из системного вызова sys_open, используя ptrace. Я получаю указатель пути к файлу и могу получить правильные данные по этому адресу, однако мне нужен способ узнать, сколько данных нужно получить, т.е. длину имени файла....
773 просмотров
schedule 08.09.2022

Как отследить выполнение программы с помощью ptrace?
Я пытался использовать системный вызов «ptrace» (используя макрос PTRACE_SINGLESTEP) для отслеживания выполнения простого приложения. При записи выполнения программы я хотел бы пропустить бесполезную часть чтения, чтобы следовать только из...
659 просмотров
schedule 17.07.2022

ptrace и потоки
Я работаю над приложением Linux, включающим ptrace для наблюдения за потоками другого процесса. Когда приложение, которое я наблюдаю, разветвляет дочерний процесс, это уже работает достаточно хорошо. Вызывая waitpid в своем приложении, я могу...
4366 просмотров

Отслеживание системных вызовов
У меня есть следующий код: void attach_to_pid (int pid, char *username, int pts) { int sys_call_nr = 0; struct user_regs_struct regs; ptrace (PTRACE_ATTACH, pid, 0, 0); waitpid (pid, 0, WCONTINUED); ptrace (PTRACE_SETOPTIONS, pid, 0,...
3451 просмотров
schedule 02.06.2024

Linux C++ ptrace Сопоставить все ячейки памяти дочерних процессов
У меня есть связанный список, подобный этому: class MemoryCell { protected: unsigned char* _address; // the address offset (in another process) unsigned int _size; // the size of this memory block unsigned char* _buffer; // the data...
623 просмотров
schedule 02.07.2022

Почему strace следует другому потоку выполнения?
Я имею в виду следующую статью , посвященную атакам с использованием символьных ссылок: struct stat st; FILE * fp; if (argc != 3) { fprintf (stderr, "usage : %s file message\n", argv [0]); exit(EXIT_FAILURE); } if (stat (argv [1],...
537 просмотров
schedule 15.07.2022

Отмените системный вызов с помощью ptrace ()
В целях безопасности я использую ptrace для получения номера системного вызова, и если это опасный вызов (например, 10 для отмены связи), я хочу отменить этот системный вызов. Вот исходный код тестовой программы del.c . Скомпилируйте с gcc -o...
4467 просмотров
schedule 03.06.2022

Проверьте, находится ли адрес памяти в пределах стека текущего процесса.
Я добавляю функцию в свой отладчик (я использую Ptrace для управления отслеживаемым процессом, а также кодами libbfd/libopcodes), чтобы раскрутить стек и определить, существуют ли несоответствия между выделенным пространством стека каждого CALL и...
914 просмотров

ptrace(PTRACE_CONT) не может возобновить только что присоединенные процессы
Я пишу программу, которая должна подключаться к другим процессам (которые могут быть созданы предыдущим экземпляром моей программы) и наблюдать за их завершением. Если я оставлю свою программу работающей в течение всего времени жизни созданных мной...
817 просмотров
schedule 26.01.2023

Использование PTRACE_POKEDATA для замены данных в куче процесса
Я хотел бы использовать ptrace, чтобы присоединить свой инструмент к процессу Linux, читать и записывать в динамическую память этого процесса и снова отсоединять свой инструмент. На самом деле он не работает, хотя ошибки нет. Я не вижу никаких...
2545 просмотров
schedule 11.08.2022

Добавьте точки останова и установите обработчики
Моя высокоуровневая цель выглядит примерно так: void print_backtrace() { void *callstack[128]; int framesC = backtrace(callstack, sizeof(callstack)); printf("backtrace() returned %d addresses\n", framesC); char** strs =...
29 просмотров
schedule 24.01.2023

Ptrace без exec не работает?
Я хотел бы отслеживать системные вызовы. Многие примеры того, как это сделать, доступны в Интернете. Все они выполняют fork/ptrace(PTRACE_TRACEME)/exec. Когда я не выполняю exec в дочернем элементе, я не вижу системных вызовов, выполняемых дочерним...
121 просмотров
schedule 10.05.2022

Дочерний процесс не продолжает выполнение при ptrace'ing
Я сделал следующий простой пример для чтения памяти из дочернего процесса с помощью ptrace. Я хочу видеть значение по определенному адресу, 0x601050, каждую секунду во время выполнения небольшой программы умножения матриц. Для этого я использую...
323 просмотров
schedule 04.02.2023

Изменение strace для захвата и замены имени файла в открытом системном вызове
Я пытаюсь изменить strace, чтобы захватить системный вызов открытия файла и изменить фактически открытый файл. Например, пользователь пытается: open(OUT,">input.txt"), но действительно будет открыт файл "input.txt.version1". У меня был некоторый...
440 просмотров
schedule 28.05.2022

Родительский процесс Ptrace
Я пытаюсь отслеживать / перенаправлять системные вызовы в моем собственном процессе. LD_PRELOAD не работает, когда fwrite вызывает write внутри libc, а хуки got / plt, похоже, имеют ту же проблему. Я ищу решение на основе ptrace, но я не могу...
662 просмотров
schedule 05.11.2022

Использование ptrace для обратного чтения ls, похоже, не работает
Я следовал некоторым инструкциям по использованию ptrace, которые можно найти здесь . У меня Ubuntu 14.04, x64, и я изменяю фрагменты примера кода для работы с моей машиной x64, например, eax на rax и меняю 4s на 8s, где это уместно. В четвертом...
76 просмотров
schedule 24.07.2023

gdb не может подключиться к процессу
Вот ОС, которую я использую: Linux securecluster 4.9.8-moby #1 SMP, среда, 8 февраля, 09:56:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux При попытке подключить gdb к зависшему процессу от имени пользователя root я получил следующее: Attaching...
11093 просмотров
schedule 11.11.2023

Не удается установить точку останова в моем мини-отладчике для Linux
Я работаю над созданием мини-отладчика в качестве личного проекта. отладчик предназначен для процессоров x86 в среде GNU/Linux. В моем подходе установка точки останова по определенному адресу отлаживаемой программы работает впервые, когда я...
115 просмотров
schedule 12.02.2023