Autores: Lucas Emanuel Rodrigues de Matos, Italo Viviano Félix Martins
Projeto desenvolvido como trabalho da disciplina Sistemas Operacionais, cujo objetivo é criar um logger de chamadas de sistema (syscalls) em ambiente Linux.
Implementar uma ferramenta capaz de:
- Interceptar todas as syscalls realizadas por um processo em execução.
- Registrar:
- Nome da syscall
- Argumentos (traduzidos, quando possível)
- Valor de retorno
- Timestamp
- PID do processo
- Exportar o log para análise posterior em um arquivo CSV.
O projeto está dividido em arquivos separados para organização e facilidade de manutenção:
- É o programa principal.
- Faz:
- Execução ou anexação ao processo alvo.
- Configuração do
ptrace
. - Loop de captura das syscalls.
- Impressão no terminal.
- Escrita do log no arquivo CSV.
- Chama a função
translate_syscall()
para traduzir syscalls conhecidas.
- Cabeçalho com definições comuns às traduções:
- Estrutura
syscall_info_t
. - Prototipagem de funções de tradução.
- Estrutura
- Contém funções específicas de tradução para syscalls conhecidas.
- Traduz syscalls como:
execve
open
openat
read
write
- e várias outras
- Implementa funções auxiliares como:
read_string
→ lê strings na memória do processo.read_string_array
→ lê arrays de strings (ex.: argv).
Se colocássemos todas as traduções dentro de syscall_logger.c
, o arquivo ficaria enorme e difícil de manter.
Separar em módulos permite:
- Manter o código organizado e legível.
- Adicionar novas syscalls traduzidas sem mexer no código principal.
- Facilitar manutenção para futuras alterações ou melhorias.
gcc -o syscall_logger syscall_logger.c translations.c -O2
./syscall_logger /bin/ls
./syscall_logger /bin/ls -l /etc
sleep 60 &
sudo ./syscall_logger -p <pid_do_sleep>
As syscalls capturadas ficam salvas em:
syscall_log.csv
Exemplo de linha no CSV:
timestamp,pid,syscall,args,retval
"2025-07-15 15:35:16.123456789",4567,openat,"AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY",0x3
- Captura de syscalls via
ptrace
. - Tradução de argumentos em syscalls mais comuns.
- Exportação para arquivo CSV.
- Suporte a processos filhos (fork, exec, clone).
- Suporte a anexação a processos já rodando.
Projeto realizado para atender aos requisitos da disciplina Sistemas Operacionais.