Požadavky ke sledování sys. volání

Jako kostru použijte tracer.tgz.

Hodnoty systemových volání viz /usr/include/asm/unistd_64.h např.: http://lxr.linux.no/linux+v2.6.23.17/include/asm-x86_64/unistd.h

Pořadí parametrů v registerech viz A.2.1 http://www.x86-64.org/documentation/abi.pdf

SYNOPSIS

tracer [-x trace.xml | -p trace.pl] /path/to/command [args]

Požadavky

Formát a příklad výstupu v XML viz syscalltrace.xml.

Požadavky (requests) na chování a formát výpisu v XML:

Splnění požadavků R17 a R20 povede k nadprůměrnému hodnocení. Požadavky R18, R19 a R21 jsou bonusové.

Příklad výstupu ve formátu PROLOG viz syscalltrace.pl

Sledujte následující systémová volání. Druhý, příp. třetí sloupec ignorujte (slouží při zadávání projektu pro přehled obtížnosti).

Adresáře


close       int 
fchdir      int
fchown      int,uint,uint
chdir       char*
rmdir       char*
unlink      char*
chroot      char*
rename      char*,char*
chown       char*,uint,uint
getcwd      char*,size_t


open        char*,int,mode_t                    consts,or
access      char*,int                           consts,or
mkdir       char*,mode_t                        consts,or
chmod       char*,mode_t                        consts,or
fchmod      int,mode_t                          consts,or
stat        char*,struct stat*                  struct
lstat       char*,struct stat*                  struct


getdents    uint,struct linux_dirent*,uint      struct,array
getdents64  uind,struct linux_dirent*,uint      struct,array

Soubory


close       int 
fsync       int
ftruncate   int,off_t


lseek       int,off_t,int                       consts
unlink      char*
rename      char*,char*
truncate    char*,off_t


read        int,void*,size_t                    buf
write       int,void*,size_t                    buf


open        char*,int,mode_t                    consts,or
access      char*,int                           consts,or
creat       char*,mode_t                        consts,or

Paměť


munlockall  void 
brk         void*                               retcode viz manpage
munlock     void*,size_t
mlock       void*,size_t
munmap      void*,size_t


mlockall    int                                 const,or
mmap        void*,size_t,int,int,int,off_t      const,or
mprotect    void*,size_t,int                    const,or
msync       void*,size_t,int                    const,or

Semafory


exit        int                                 param + retcode viz manpage
exit_group  int


semctl*     int,int,int,union(int,void*)            const,union


semget      key_t,int,int                           const,or,mask
futex*      int*,int,int,struct timespec*,int*,int  const,struct


semop*      int,struct sembuf*,uint                 struct,array

Příklad užití

Skript gimme-etc-ro-files.sh obsahuje dotaz dynamické analýzy testovaného programu v podobě XPath výrazu nad XML DOM.


$ ./tracer -x syscalltrace.xml /path/to/command
$ ./gimme-etc-ro-files.sh syscalltrace.xml
Found 1 nodes:
-- NODE --
/etc/group