From 7ad20e4a9d42c3ad5e9e1e9ab3b80290d22a02c7 Mon Sep 17 00:00:00 2001 From: Vyacheslav Cherkashin Date: Tue, 9 Jul 2013 13:52:53 +0400 Subject: [PATCH] [IMPROVE] add arguments in ks_feature (for syscall) --- ks_features/Makefile.am | 4 +- ks_features/features_data.c | 2 +- ks_features/ks_features.c | 12 +- ks_features/syscall_list.h | 305 ++++++++++++++++++++++---------------------- 4 files changed, 164 insertions(+), 159 deletions(-) diff --git a/ks_features/Makefile.am b/ks_features/Makefile.am index f670827..9b8e32a 100644 --- a/ks_features/Makefile.am +++ b/ks_features/Makefile.am @@ -7,7 +7,9 @@ cross_compiler = $(subst gcc,,$(CC)) inlude_opt = -I$(realpath $(top_srcdir)/src/modules/kprobe) \ -I$(realpath $(top_srcdir)/src/modules/kprobe/arch) \ - -I$(realpath $(top_srcdir)/src/modules/ksyms) + -I$(realpath $(top_srcdir)/src/modules/ksyms) \ + -I$(realpath $(top_srcdir)/src/common) \ + -I$(realpath $(top_srcdir)/src/modules/driver) extra_cflags = "$(inlude_opt) $(board_opt)" all-local: diff --git a/ks_features/features_data.c b/ks_features/features_data.c index 5c2c6c6..3b072fe 100644 --- a/ks_features/features_data.c +++ b/ks_features/features_data.c @@ -5,7 +5,7 @@ struct feature { enum syscall_id *feature_list; }; -#define X(x) id_##x +#define X(name, args) id_##name enum syscall_id { SYSCALL_LIST }; diff --git a/ks_features/ks_features.c b/ks_features/ks_features.c index 379821a..1bbaaf0 100644 --- a/ks_features/ks_features.c +++ b/ks_features/ks_features.c @@ -11,6 +11,7 @@ struct ks_probe { struct jprobe jp; struct kretprobe rp; int counter; + char *args; }; #define CREATE_JP(name) \ @@ -25,7 +26,7 @@ struct ks_probe { .handler = NULL \ } -#define X(x) #x +#define X(name, args) #name static const char *const syscall_name[] = { SYSCALL_LIST }; @@ -36,11 +37,12 @@ enum { }; -#define X(x) \ +#define X(name, args__) \ { \ - .jp = CREATE_JP(x), \ - .rp = CREATE_RP(x), \ - .counter = 0 \ + .jp = CREATE_JP(name), \ + .rp = CREATE_RP(name), \ + .counter = 0, \ + .args = #args__ \ } static struct ks_probe ksp[] = { diff --git a/ks_features/syscall_list.h b/ks_features/syscall_list.h index 6fa0e2e..1a352a9 100644 --- a/ks_features/syscall_list.h +++ b/ks_features/syscall_list.h @@ -2,157 +2,158 @@ #define _SYSCALL_LIST_H #define SYSCALL_LIST \ - X(sys_accept4), \ - X(sys_accept), \ - X(sys_access), \ - X(sys_acct), \ - X(sys_bind), \ - X(sys_chdir), \ - X(sys_chmod), \ - X(sys_chown16), \ - X(sys_chown), \ - X(sys_chroot), \ - X(sys_clone), \ - X(sys_connect), \ - X(sys_creat), \ - X(sys_dup3), \ - X(sys_epoll_create1), \ - X(sys_epoll_ctl), \ - X(sys_epoll_pwait), \ - X(sys_epoll_wait), \ - X(sys_eventfd2), \ - X(sys_eventfd), \ - X(sys_execve), \ - X(sys_exit_group), \ - X(sys_exit), \ - X(sys_faccessat), \ - X(sys_fadvise64_64), \ - X(sys_fallocate), \ - X(sys_fanotify_init), \ - X(sys_fanotify_mark), \ - X(sys_fchmodat), \ - X(sys_fchownat), \ - X(sys_fgetxattr), \ - X(sys_flistxattr), \ - X(sys_fork), \ - X(sys_fremovexattr), \ - X(sys_fstat64), \ - X(sys_ftruncate64), \ - X(sys_futimesat), \ - X(sys_getcwd), \ - X(sys_getpeername), \ - X(sys_getsockname), \ - X(sys_getsockopt), \ - X(sys_getxattr), \ - X(sys_inotify_add_watch), \ - X(sys_inotify_init1), \ - X(sys_inotify_init), \ - X(sys_inotify_rm_watch), \ - X(sys_ipc), \ - X(sys_kill), \ - X(sys_linkat), \ - X(sys_link), \ - X(sys_listen), \ - X(sys_listxattr), \ - X(sys_lstat64), \ -/* TODO: X(sys_lstat), */ \ - X(sys_mkdirat), \ - X(sys_mkdir), \ - X(sys_mknodat), \ - X(sys_mknod), \ - X(sys_mmap_pgoff), \ - X(sys_mount), \ - X(sys_msgctl), \ - X(sys_msgget), \ - X(sys_msgrcv), \ - X(sys_msgsnd), \ - X(sys_name_to_handle_at), \ -/* TODO: X(sys_newfstatat), */ \ - X(sys_old_mmap), \ - X(sys_openat), \ - X(sys_open_by_handle_at), \ - X(sys_open), \ - X(sys_pause), \ - X(sys_pipe2), \ - X(sys_ppoll), \ - X(sys_pread64), \ - X(sys_preadv), \ - X(sys_pselect6), \ - X(sys_pwrite64), \ - X(sys_pwritev), \ - X(sys_readlinkat), \ - X(sys_readlink), \ - X(sys_recvfrom), \ - X(sys_recvmmsg), \ - X(sys_recvmsg), \ - X(sys_recv), \ - X(sys_removexattr), \ - X(sys_renameat), \ - X(sys_rename), \ - X(sys_rmdir), \ - X(sys_rt_sigaction), \ - X(sys_rt_sigprocmask), \ - X(sys_rt_sigsuspend), \ - X(sys_rt_sigtimedwait), \ - X(sys_rt_tgsigqueueinfo), \ - X(sys_semctl), \ - X(sys_semget), \ - X(sys_semop), \ - X(sys_semtimedop), \ - X(sys_sendfile64), \ - X(sys_sendfile), \ - X(sys_sendmmsg), \ - X(sys_sendmsg), \ - X(sys_send), \ - X(sys_sendto), \ - X(sys_setns), \ - X(sys_setsockopt), \ - X(sys_setxattr), \ - X(sys_shmat), \ - X(sys_shmctl), \ - X(sys_shmdt), \ - X(sys_shmget), \ - X(sys_shutdown), \ - X(sys_sigaction), \ -/* TODO: X(sys_sigaltstack), */ \ - X(sys_signalfd4), \ - X(sys_signalfd), \ -/* TODO: X(sys_signal), */ \ - X(sys_sigpending), \ - X(sys_sigprocmask), \ - X(sys_sigsuspend), \ - X(sys_socketcall), \ - X(sys_socketpair), \ - X(sys_socket), \ - X(sys_splice), \ - X(sys_stat64), \ - X(sys_statfs64), \ - X(sys_statfs), \ -/* TODO: X(sys_stat), */ \ - X(sys_swapoff), \ - X(sys_swapon), \ - X(sys_symlinkat), \ - X(sys_symlink), \ - X(sys_syncfs), \ - X(sys_tee), \ - X(sys_tgkill), \ - X(sys_timerfd_create), \ - X(sys_timerfd_gettime), \ - X(sys_timerfd_settime), \ - X(sys_truncate64), \ - X(sys_truncate), \ - X(sys_umount), \ - X(sys_unlinkat), \ - X(sys_unlink), \ - X(sys_unshare), \ - X(sys_uselib), \ - X(sys_utimensat), \ - X(sys_utimes), \ - X(sys_utime), \ - X(sys_vfork), \ - X(sys_vmsplice), \ - X(sys_wait4), \ - X(sys_waitid) -/* TODO: X(sys_waitpid) */ + X(sys_accept4, dpdd), \ + X(sys_accept, dpd), \ + X(sys_access, sd), \ + X(sys_acct, s), \ + X(sys_bind, dpd), \ + X(sys_chdir, s), \ + X(sys_chmod, sd), \ + X(sys_chown16, sdd), \ + X(sys_chown, sdd), \ + X(sys_chroot, s), \ + X(sys_clone, ddddd), \ + X(sys_connect, dpd), \ + X(sys_creat, sd), \ + X(sys_dup3, ddd), \ + X(sys_epoll_create1, d), \ + X(sys_epoll_ctl, dddp), \ + X(sys_epoll_pwait, dpddpx), \ + X(sys_epoll_wait, dpdd), \ + X(sys_eventfd2, dd), \ + X(sys_eventfd, d), \ + X(sys_execve, sss), \ + X(sys_exit, d), \ + X(sys_exit_group, d), \ + X(sys_faccessat, dsd), \ + X(sys_fadvise64_64, dxxd), \ + X(sys_fallocate, ddxx), \ + X(sys_fanotify_init, dd), \ + X(sys_fanotify_mark, ddxds), \ + X(sys_fchmodat, dsd), \ + X(sys_fchownat, dsddd), \ + X(sys_fgetxattr, dspx), \ + X(sys_flistxattr, dpx), \ + X(sys_fork, ), \ + X(sys_fremovexattr, ds), \ + X(sys_fstat64, xp), \ + X(sys_ftruncate64, dx), \ + X(sys_futimesat, dsp), \ + X(sys_getcwd, px), \ + X(sys_getpeername, dpd), \ + X(sys_getsockname, dpd), \ + X(sys_getsockopt, dddpd), \ + X(sys_getxattr, sspx), \ + X(sys_inotify_add_watch, dsd), \ + X(sys_inotify_init, ), \ + X(sys_inotify_init1, d), \ + X(sys_inotify_rm_watch, dd), \ + X(sys_ipc, ddxxpx), \ + X(sys_kill, dd), \ + X(sys_linkat, dsdsd), \ + X(sys_link, ss), \ + X(sys_listen, dd), \ + X(sys_listxattr, spx), \ + X(sys_lstat64, sp), \ +/* TODO: X(sys_lstat, sp), */ \ + X(sys_mkdirat, dsd), \ + X(sys_mkdir, sd), \ + X(sys_mknodat, dsdd), \ + X(sys_mknod, sdd), \ + X(sys_mmap_pgoff, xxxxxx), \ + X(sys_mount, pppxp), \ + X(sys_msgctl, ddp), \ + X(sys_msgget, dd), \ + X(sys_msgrcv, dpxxd), \ + X(sys_msgsnd, dpxd), \ + X(sys_name_to_handle_at, dspdd), \ +/* TODO: X(sys_newfstatat, dspd), */ \ + X(sys_old_mmap, p), \ + X(sys_openat, dsdd), \ + X(sys_open_by_handle_at, dpd), \ + X(sys_open, sdd), \ + X(sys_pause, ), \ + X(sys_pipe2, dd), \ + X(sys_ppoll, pdpp), \ + X(sys_pread64, dpxx), \ + X(sys_preadv, xpxxx), \ + X(sys_pselect6, dxxxpp), \ + X(sys_pwrite64, dsxx), \ + X(sys_pwritev, xpxxx), \ + X(sys_readlinkat, dspd), \ + X(sys_readlink, spd), \ + X(sys_recv, dpxd), \ + X(sys_recvfrom, dpxdpd), \ + X(sys_recvmmsg, dpddp), \ + X(sys_recvmsg, dpd), \ + X(sys_removexattr, ss), \ + X(sys_renameat, dsds), \ + X(sys_rename, ss), \ + X(sys_rmdir, s), \ + X(sys_rt_sigaction, dpp), \ + X(sys_rt_sigprocmask, dppx), \ + X(sys_rt_sigsuspend, px), \ + X(sys_rt_sigtimedwait, pppx), \ + X(sys_rt_tgsigqueueinfo, dddp), \ + X(sys_semctl, dddx), \ + X(sys_semget, ddd), \ + X(sys_semop, dpd), \ + X(sys_semtimedop, dpdp), \ + X(sys_send, dpxd), \ + X(sys_sendfile64, ddlxx), \ + X(sys_sendfile, ddxx), \ + X(sys_sendmmsg, dpdd), \ + X(sys_sendmsg, dpd), \ + X(sys_sendto, dpxdpd), \ + X(sys_setns, dd), \ + X(sys_setsockopt, dddpd), \ + X(sys_setxattr, sspxd), \ + X(sys_shmat, dpd), \ + X(sys_shmctl, ddp), \ + X(sys_shmdt, p), \ + X(sys_shmget, dxd), \ + X(sys_shutdown, dd), \ + X(sys_sigaction, dpp), \ +/* TODO: X(sys_sigaltstack, pp), */ \ +/* TODO: X(sys_signal, dp), */ \ + X(sys_signalfd4, dpxd), \ + X(sys_signalfd, dpx), \ + X(sys_sigpending, p), \ + X(sys_sigprocmask, dpp), \ +/* TODO: X(sys_sigsuspend, ddp), */ \ +/* TODO: X(sys_sigsuspend, p), */ \ + X(sys_socketcall, dx), \ + X(sys_socket, ddd), \ + X(sys_socketpair, dddd), \ + X(sys_splice, dxdxxd), \ + X(sys_stat64, sp), \ + X(sys_statfs64, sxp), \ + X(sys_statfs, sp), \ +/* TODO: X(sys_stat, sp), */ \ + X(sys_swapoff, s), \ + X(sys_swapon, sd), \ + X(sys_symlinkat, sds), \ + X(sys_symlink, ss), \ + X(sys_syncfs, d), \ + X(sys_tee, ddxd), \ + X(sys_tgkill, ddd), \ + X(sys_timerfd_create, dd), \ + X(sys_timerfd_gettime, dp), \ + X(sys_timerfd_settime, ddpp), \ + X(sys_truncate64, sx), \ + X(sys_truncate, sx), \ + X(sys_umount, pd), \ + X(sys_unlinkat, dsd), \ + X(sys_unlink, s), \ + X(sys_unshare, x), \ + X(sys_uselib, s), \ + X(sys_utimensat, dspd), \ + X(sys_utime, pp), \ + X(sys_utimes, pp), \ + X(sys_vfork, ), \ + X(sys_vmsplice, dpxd), \ + X(sys_wait4, dddp), \ + X(sys_waitid, ddpdp) +/* TODO: X(sys_waitpid, ddd) */ #endif /* _SYSCALL_LIST_H */ -- 2.7.4