android-arm64-strace

by
4 views be2a3213...

Description

Strace by Frida: prints system calls (SVC) and parses args/flags/errors. More at https://github.com/FrenchYeti/interruptor

How to Use

Download the script and run it with Frida CLI:

Download Script

Then run with Frida:

frida -U -f YOUR_PACKAGE_NAME -l android-arm64-strace.js

Replace YOUR_PACKAGE_NAME with the target app's package name.

Source Code

JavaScript
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
var Interruptor = require('../dist/android-arm64-strace.min.js').target.LinuxArm64();

Interruptor.newAgentTracer({
    followThread: true
}).startOnLoad(/\.so/,{
    threshold: 1
});






},{"../dist/android-arm64-strace.min.js":2}],2:[function(require,module,exports){
(()=>{"use strict";var t={876:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.I=e.E=e.MSG=e.IPC=e.RUSAGE=e.CLONE=e.PKEY=e.FALLOC=e.LOCK=e.SECCOMP=e.RWF=e.TIMER=e.SCHED_=e.SEEK_=e.IOPRIO_CLASS=e.IOPRIO_WHO=e.MEMBARRIER_CMD=e.MEMBARRIER_FLAG=e.MOUNT=e.S=e.SIG_FLAG=e.FUTEX=e.PERSO=e.AT_=e.MFD=e.ITIMER=e.PROT_=e.MNT_=e.CLOCK=e.MAP_=e.MCL_=e.MS_=e.S_=e.PR_=e.MLOCK=e.MADV_=e.PTRACE_=e.PF_=e.SOCK_=e.AF_=e.SYNC_FILE=e.SPLICE=e.EPOLL_EV=e.EPOLL_CTL=e.RES=e.INOTIFY_MASK=e.INOTIFY_FLAGS=e.O_=e.FMODE=e.K=void 0,e.X=e.ERR=void 0,e.K={P_ALL:[0],P_PID:[1],P_PGID:[2],P_PIDFD:[3]},e.FMODE={F_OK:[0],X_OK:[1],W_OK:[2],R_OK:[4]},e.O_={O_ACCMODE:3,O_RDONLY:0,O_WRONLY:1,O_RDWR:2,O_CREAT:64,O_EXCL:128,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_NONBLOCK:2048,O_DSYNC:4096,O_ASYNC:8192,O_DIRECT:16384,O_LARGEFILE:32768,O_DIRECTORY:65536,O_NOFOLLOW:131072,O_NOATIME:262144,O_CLOEXEC:524288,O_PATH:2097152,O_TMPFILE:4210688},e.INOTIFY_FLAGS={IN_NONBLOCK:[e.O_.O_NONBLOCK],IN_CLOEXEC:[e.O_.O_CLOEXEC]},e.INOTIFY_MASK={IN_ACCESS:[1],IN_MODIFY:[2],IN_ATTRIB:[4],IN_CLOSE_WRITE:[8],IN_CLOSE_NOWRITE:[16],IN_CLOSE:[24],IN_OPEN:[32],IN_MOVED_FROM:[64],IN_MOVED_TO:[128],IN_MOVE:[192],IN_CREATE:[256],IN_DELETE:[512],IN_DELETE_SELF:[1024],IN_MOVE_SELF:[2048],IN_ALL_EVENTS:[4095],IN_UNMOUNT:[8192],IN_Q_OVERFLOW:[16384],IN_IGNORED:[32768],IN_ONLYDIR:[16777216],IN_DONT_FOLLOW:[33554432],IN_EXCL_UNLINK:[67108864],IN_MASK_CREATE:[268435456],IN_MASK_ADD:[536870912],IN_ISDIR:[1073741824],IN_ONESHOT:[2147483648]},e.RES={RLIMIT_CPU:[0],RLIMIT_FSIZE:[1],RLIMIT_DATA:[2],RLIMIT_STACK:[3],RLIMIT_CORE:[4],RLIMIT_RSS:[5],RLIMIT_NPROC:[6],RLIMIT_NOFILE:[7],RLIMIT_MEMLOCK:[8],RLIMIT_AS:[9],RLIMIT_LOCKS:[10],RLIMIT_SIGPENDING:[11],RLIMIT_MSGQUEUE:[12],RLIMIT_NICE:[13],RLIMIT_RTPRIO:[14],RLIMIT_RTTIME:[15],RLIM_NLIMITS:[16],RLIM_INFINITY:[0]},e.EPOLL_CTL={EPOLL_CTL_ADD:[1],EPOLL_CTL_DEL:[2],EPOLL_CTL_MOD:[3]},e.EPOLL_EV={EPOLLIN:[1],EPOLLPRI:[2],EPOLLOUT:[4],EPOLLERR:[8],EPOLLHUP:[16],EPOLLNVAL:[32],EPOLLRDNORM:[64],EPOLLRDBAND:[128],EPOLLWRNORM:[256],EPOLLWRBAND:[512],EPOLLMSG:[1024],EPOLLRDHUP:[8192],EPOLLEXCLUSIVE:[1<<28],EPOLLWAKEUP:[1<<29],EPOLLONESHOT:[1<<30],EPOLLET:[1<<31]},e.SPLICE={SPLICE_F_MOVE:[1],SPLICE_F_NONBLOCK:[2],SPLICE_F_MORE:[4],SPLICE_F_GIFT:[8]},e.SYNC_FILE={SYNC_FILE_RANGE_WAIT_BEFORE:[1],SYNC_FILE_RANGE_WRITE:[2],SYNC_FILE_RANGE_WAIT_AFTER:[4]},e.AF_={AF_UNSPEC:[0],AF_UNIX:[1],AF_LOCAL:[1],AF_INET:[2],AF_AX25:[3],AF_IPX:[4],AF_APPLETALK:[5],AF_NETROM:[6],AF_BRIDGE:[7],AF_ATMPVC:[8],AF_X25:[9],AF_INET6:[10],AF_ROSE:[11],AF_DECnet:[12],AF_NETBEUI:[13],AF_SECURITY:[14],AF_KEY:[15],AF_NETLINK:[16],AF_ROUTE:[16],AF_PACKET:[17],AF_ASH:[18],AF_ECONET:[19],AF_ATMSVC:[20],AF_RDS:[21],AF_SNA:[22],AF_IRDA:[23],AF_PPPOX:[24],AF_WANPIPE:[25],AF_LLC:[26],AF_CAN:[29],AF_TIPC:[30],AF_BLUETOOTH:[31],AF_IUCV:[32],AF_RXRPC:[33],AF_ISDN:[34],AF_PHONET:[35],AF_IEEE802154:[36],AF_CAIF:[37],AF_ALG:[38],AF_NFC:[39],AF_VSOCK:[40],AF_KCM:[41],AF_QIPCRTR:[42],AF_MAX:[43]},e.SOCK_={SOCK_STREAM:[1],SOCK_DGRAM:[2],SOCK_RAW:[3],SOCK_RDM:[4],SOCK_SEQPACKET:[5],SOCK_DCCP:[6],SOCK_PACKET:[10],SOCK_CLOEXEC:[e.O_.O_CLOEXEC],SOCK_NONBLOCK:[e.O_.O_NONBLOCK]},e.PF_={PF_UNSPEC:[e.AF_.AF_UNSPEC[0]],PF_UNIX:[e.AF_.AF_UNIX[0]],PF_LOCAL:[e.AF_.AF_LOCAL[0]],PF_INET:[e.AF_.AF_INET[0]],PF_AX25:[e.AF_.AF_AX25[0]],PF_IPX:[e.AF_.AF_IPX[0]],PF_APPLETALK:[e.AF_.AF_APPLETALK[0]],PF_NETROM:[e.AF_.AF_NETROM[0]],PF_BRIDGE:[e.AF_.AF_BRIDGE[0]],PF_ATMPVC:[e.AF_.AF_ATMPVC[0]],PF_X25:[e.AF_.AF_X25[0]],PF_INET6:[e.AF_.AF_INET6[0]],PF_ROSE:[e.AF_.AF_ROSE[0]],PF_DECnet:[e.AF_.AF_DECnet[0]],PF_NETBEUI:[e.AF_.AF_NETBEUI[0]],PF_SECURITY:[e.AF_.AF_SECURITY[0]],PF_KEY:[e.AF_.AF_KEY[0]],PF_NETLINK:[e.AF_.AF_NETLINK[0]],PF_ROUTE:[e.AF_.AF_ROUTE[0]],PF_PACKET:[e.AF_.AF_PACKET[0]],PF_ASH:[e.AF_.AF_ASH[0]],PF_ECONET:[e.AF_.AF_ECONET[0]],PF_ATMSVC:[e.AF_.AF_ATMSVC[0]],PF_RDS:[e.AF_.AF_RDS[0]],PF_SNA:[e.AF_.AF_SNA[0]],PF_IRDA:[e.AF_.AF_IRDA[0]],PF_PPPOX:[e.AF_.AF_PPPOX[0]],PF_WANPIPE:[e.AF_.AF_WANPIPE[0]],PF_LLC:[e.AF_.AF_LLC[0]],PF_CAN:[e.AF_.AF_CAN[0]],PF_TIPC:[e.AF_.AF_TIPC[0]],PF_BLUETOOTH:[e.AF_.AF_BLUETOOTH[0]],PF_IUCV:[e.AF_.AF_IUCV[0]],PF_RXRPC:[e.AF_.AF_RXRPC[0]],PF_ISDN:[e.AF_.AF_ISDN[0]],PF_PHONET:[e.AF_.AF_PHONET[0]],PF_IEEE802154:[e.AF_.AF_IEEE802154[0]],PF_CAIF:[e.AF_.AF_CAIF[0]],PF_ALG:[e.AF_.AF_ALG[0]],PF_NFC:[e.AF_.AF_NFC[0]],PF_VSOCK:[e.AF_.AF_VSOCK[0]],PF_KCM:[e.AF_.AF_KCM[0]],PF_QIPCRTR:[e.AF_.AF_QIPCRTR[0]],PF_MAX:[e.AF_.AF_MAX[0]]},e.PTRACE_={PTRACE_TRACEME:[0],PTRACE_PEEKTEXT:[1],PTRACE_PEEKDATA:[2],PTRACE_PEEKUSR:[3],PTRACE_POKETEXT:[4],PTRACE_POKEDATA:[5],PTRACE_POKEUSR:[6],PTRACE_CONT:[7],PTRACE_KILL:[8],PTRACE_SINGLESTEP:[9],PTRACE_ATTACH:[16],PTRACE_DETACH:[17],PTRACE_SYSCALL:[24],PTRACE_SETOPTIONS:[16896],PTRACE_GETEVENTMSG:[16897],PTRACE_GETSIGINFO:[16898],PTRACE_SETSIGINFO:[16899],PTRACE_GETREGSET:[16900],PTRACE_SETREGSET:[16901],PTRACE_SEIZE:[16902],PTRACE_INTERRUPT:[16903],PTRACE_LISTEN:[16904],PTRACE_PEEKSIGINFO:[16905]},e.MADV_={MADV_NORMAL:[0],MADV_RANDOM:[1],MADV_SEQUENTIAL:[2],MADV_WILLNEED:[3],MADV_DONTNEED:[4],MADV_FREE:[8],MADV_REMOVE:[9],MADV_DONTFORK:[10],MADV_DOFORK:[11],MADV_HWPOISON:[100],MADV_SOFT_OFFLINE:[101],MADV_MERGEABLE:[12],MADV_UNMERGEABLE:[13],MADV_HUGEPAGE:[14],MADV_NOHUGEPAGE:[15],MADV_DONTDUMP:[16],MADV_DODUMP:[17],MADV_WIPEONFORK:[18],MADV_KEEPONFORK:[19],MADV_COLD:[20],MADV_PAGEOUT:[21]},e.MLOCK={MLOCK_ONFAULT:[1]},e.PR_={OPT:{PR_CAP_AMBIENT:[47],PR_CAPBSET_READ:[23],PR_CAPBSET_DROP:[24],PR_SET_CHILD_SUBREAPER:[36],PR_GET_CHILD_SUBREAPER:[37],PR_SET_PDEATHSIG:[1],PR_GET_PDEATHSIG:[2],PR_GET_DUMPABLE:[3],PR_SET_DUMPABLE:[4],PR_GET_UNALIGN:[5],PR_SET_UNALIGN:[6],PR_GET_KEEPCAPS:[7],PR_SET_KEEPCAPS:[8],PR_GET_FPEMU:[9],PR_SET_FPEMU:[10],PR_GET_FPEXC:[11],PR_SET_FPEXC:[12],PR_GET_TIMING:[13],PR_SET_TIMING:[14],PR_SET_NAME:[15],PR_GET_NAME:[16],PR_GET_ENDIAN:[19],PR_SET_ENDIAN:[20],PR_GET_SECCOMP:[21],PR_SET_SECCOMP:[22],PR_GET_TSC:[25],PR_SET_TSC:[26],PR_GET_SECUREBITS:[27],PR_SET_SECUREBITS:[28],PR_SET_TIMERSLACK:[29],PR_GET_TIMERSLACK:[30],PR_SET_PTRACER:[1499557217],PR_SET_PTRACER_ANY:[0x10000000000000000],PR_SET_NO_NEW_PRIVS:[38],PR_GET_NO_NEW_PRIVS:[39],PR_GET_TID_ADDRESS:[40],PR_SET_THP_DISABLE:[41],PR_GET_THP_DISABLE:[42],PR_SET_IO_FLUSHER:[57],PR_GET_IO_FLUSHER:[58],PR_SET_SYSCALL_USER_DISPATCH:[59],PR_SET_VMA:[1398164801],PR_SET_VMA_ANON_NAME:[0],PR_SET_TAGGED_ADDR_CTRL:[55],PR_GET_TAGGED_ADDR_CTRL:[56],PR_SET_MM:[35],PR_SET_FP_MODE:[45],PR_GET_FP_MODE:[46],PR_GET_SPECULATION_CTRL:[52],PR_SET_SPECULATION_CTRL:[53]},DUMPABLE:{SUID_DUMP_DISABLE:0,SUID_DUMP_USER:1},CAP:{PR_CAP_AMBIENT_IS_SET:[1],PR_CAP_AMBIENT_RAISE:[2],PR_CAP_AMBIENT_LOWER:[3],PR_CAP_AMBIENT_CLEAR_ALL:[4]},UNALIGN:{PR_UNALIGN_NOPRINT:[1],PR_UNALIGN_SIGBUS:[2]},FPEMU:{PR_FPEMU_NOPRINT:[1],PR_FPEMU_SIGFPE:[2]},FP:{PR_FP_EXC_SW_ENABLE:[128],PR_FP_EXC_DIV:[65536],PR_FP_EXC_OVF:[131072],PR_FP_EXC_UND:[262144],PR_FP_EXC_RES:[524288],PR_FP_EXC_INV:[1048576],PR_FP_EXC_DISABLED:[0],PR_FP_EXC_NONRECOV:[1],PR_FP_EXC_ASYNC:[2],PR_FP_EXC_PRECISE:[3],PR_FP_MODE_FR:[1],PR_FP_MODE_FRE:[2]},TIMING:{PR_TIMING_STATISTICAL:[0],PR_TIMING_TIMESTAMP:[1]},ENDIAN:{PR_ENDIAN_BIG:[0],PR_ENDIAN_LITTLE:[1],PR_ENDIAN_PPC_LITTLE:[2]},TSC:{PR_TSC_ENABLE:[1],PR_TSC_SIGSEGV:[2]},TASK:{PR_TASK_PERF_EVENTS_DISABLE:[31],PR_TASK_PERF_EVENTS_ENABLE:[32]},MCE:{PR_MCE_KILL:[33],PR_MCE_KILL_CLEAR:[0],PR_MCE_KILL_SET:[1],PR_MCE_KILL_LATE:[0],PR_MCE_KILL_EARLY:[1],PR_MCE_KILL_DEFAULT:[2],PR_MCE_KILL_GET:[34]},MM:{PR_SET_MM_START_CODE:[1],PR_SET_MM_END_CODE:[2],PR_SET_MM_START_DATA:[3],PR_SET_MM_END_DATA:[4],PR_SET_MM_START_STACK:[5],PR_SET_MM_START_BRK:[6],PR_SET_MM_BRK:[7],PR_SET_MM_ARG_START:[8],PR_SET_MM_ARG_END:[9],PR_SET_MM_ENV_START:[10],PR_SET_MM_ENV_END:[11],PR_SET_MM_AUXV:[12],PR_SET_MM_EXE_FILE:[13],PR_SET_MM_MAP:[14],PR_SET_MM_MAP_SIZE:[15]},MPX:{PR_MPX_ENABLE_MANAGEMENT:[43],PR_MPX_DISABLE_MANAGEMENT:[44]},SVE:{PR_SVE_SET_VL:[50],PR_SVE_SET_VL_ONEXEC:[1<<18],PR_SVE_GET_VL:[51],PR_SVE_VL_LEN_MASK:[65535],PR_SVE_VL_INHERIT:[1<<17]},SPEC:{PR_SPEC_STORE_BYPASS:[0],PR_SPEC_INDIRECT_BRANCH:[1],PR_SPEC_NOT_AFFECTED:[0],PR_SPEC_PRCTL:[1],PR_SPEC_ENABLE:[2],PR_SPEC_DISABLE:[4],PR_SPEC_FORCE_DISABLE:[8],PR_SPEC_DISABLE_NOEXEC:[16]},PAC:{PR_PAC_RESET_KEYS:[54],PR_PAC_APIAKEY:[1],PR_PAC_APIBKEY:[2],PR_PAC_APDAKEY:[4],PR_PAC_APDBKEY:[8],PR_PAC_APGAKEY:[16]},TAGGED:{PR_TAGGED_ADDR_ENABLE:[1]},MTE:{PR_MTE_TCF_SHIFT:[1],PR_MTE_TAG_SHIFT:[3],PR_MTE_TCF_NONE:[0],PR_MTE_TCF_SYNC:[2],PR_MTE_TCF_ASYNC:[4],PR_MTE_TCF_MASK:[6],PR_MTE_TAG_MASK:[524280]},SYS:{PR_SYS_DISPATCH_OFF:[0],PR_SYS_DISPATCH_ON:[1]},SYSCALL:{SYSCALL_DISPATCH_FILTER_ALLOW:[0],SYSCALL_DISPATCH_FILTER_BLOCK:[1]}},e.S_={S_IFMT:[61440],S_IFSOCK:[49152],S_IFLNK:[40960],S_IFREG:[32768],S_IFBLK:[24576],S_IFDIR:[16384],S_IFCHR:[8192],S_IFIFO:[4096],S_ISUID:[2048],S_ISGID:[1024],S_ISVTX:[512],S_IRWXU:[448],S_IRUSR:[256],S_IWUSR:[128],S_IXUSR:[64],S_IRWXG:[56],S_IRGRP:[32],S_IWGRP:[16],S_IXGRP:[8],S_IRWXO:[7],S_IROTH:[4],S_IWOTH:[2],S_IXOTH:[1]},e.MS_={MS_ASYNC:1,MS_INVALIDATE:2,MS_SYNC:4},e.MCL_={MCL_CURRENT:1,MCL_FUTURE:2,MCL_ONFAULT:4},e.MAP_={MAP_SHARED:[1],MAP_PRIVATE:[2],MAP_SHARED_VALIDATE:[3],MAP_FIXED:[16],MAP_ANONYMOUS:[32],MAP_GROWSDOWN:[256],MAP_DENYWRITE:[2048],MAP_EXECUTABLE:[4096],MAP_LOCKED:[8192],MAP_NORESERVE:[16384]},e.CLOCK={CLOCK_REALTIME:[0],CLOCK_MONOTONIC:[1],CLOCK_PROCESS_CPUTIME_ID:[2],CLOCK_THREAD_CPUTIME_ID:[3],CLOCK_MONOTONIC_RAW:[4],CLOCK_REALTIME_COARSE:[5],CLOCK_MONOTONIC_COARSE:[6],CLOCK_BOOTTIME:[7],CLOCK_REALTIME_ALARM:[8],CLOCK_BOOTTIME_ALARM:[9],CLOCK_SGI_CYCLE:[10],CLOCK_TAI:[11]},e.MNT_={MNT_FORCE:1,MNT_DETACH:2,MNT_EXPIRE:4,UMOUNT_NOFOLLOW:8},e.PROT_={PROT_READ:1,PROT_WRITE:2,PROT_EXEC:4,PROT_SEM:8,PROT_GROWSDOWN:16777216,PROT_GROWSUP:33554432},e.ITIMER={ITIMER_REAL:[0],ITIMER_VIRTUAL:[1],TIMER_PROF:[2]},e.MFD={MFD_CLOEXEC:1,MFD_ALLOW_SEALING:2,MFD_HUGETLB:4},e.AT_={AT_FDCWD:-100,AT_SYMLINK_NOFOLLOW:[256],AT_EACCESS:[512],AT_REMOVEDIR:[512],AT_SYMLINK_FOLLOW:[1024],AT_NO_AUTOMOUNT:[2048],AT_EMPTY_PATH:[4096],AT_STATX_SYNC_TYPE:[24576],AT_STATX_SYNC_AS_STAT:[0],AT_STATX_FORCE_SYNC:[8192],AT_STATX_DONT_SYNC:[16384],AT_RECURSIVE:[32768]},e.PERSO={UNAME26:[131072],ADDR_NO_RANDOMIZE:[262144],FDPIC_FUNCPTRS:[524288],MMAP_PAGE_ZERO:[1048576],ADDR_COMPAT_LAYOUT:[2097152],READ_IMPLIES_EXEC:[4194304],ADDR_LIMIT_32BIT:[8388608],SHORT_INODE:[16777216],WHOLE_SECONDS:[33554432],STICKY_TIMEOUTS:[67108864],ADDR_LIMIT_3GB:[134217728]};const E={F_DUPFD:[0],F_GETFD:[1],F_SETFD:[2],F_GETFL:[3],F_SETFL:[4],F_SETOWN:[8],F_GETOWN:[9],F_SETSIG:[10],F_GETSIG:[11],F_GETLK:[12],F_SETLK:[13],F_SETLKW:[14],F_SETOWN_EX:[15],F_GETOWN_EX:[16],F_GETOWNER_UIDS:[17]};function _(t,e){let E="";for(const _ in e)(t&e[_])==e[_]&&(E+=(E.length>0?" | ":"")+_);return E}function n(t,e){let E="";for(const _ in e)(t&e[_][0])==e[_][0]&&(E+=(E.length>0?" | ":"")+_);return E}e.FUTEX={FUTEX_WAIT:[0],FUTEX_WAKE:[1],FUTEX_FD:[2],FUTEX_REQUEUE:[3],FUTEX_CMP_REQUEUE:[4],FUTEX_WAKE_OP:[5],FUTEX_LOCK_PI:[6],FUTEX_UNLOCK_PI:[7],FUTEX_TRYLOCK_PI:[8],FUTEX_WAIT_BITSET:[9],FUTEX_WAKE_BITSET:[10],FUTEX_WAIT_REQUEUE_PI:[11],FUTEX_CMP_REQUEUE_PI:[12],FUTEX_LOCK_PI2:[13],FUTEX_PRIVATE_FLAG:[128],FUTEX_CLOCK_REALTIME:[256]},e.FUTEX.FUTEX_CMD_MASK=[~(e.FUTEX.FUTEX_PRIVATE_FLAG[0]|e.FUTEX.FUTEX_CLOCK_REALTIME[0])],e.FUTEX.FUTEX_WAIT_PRIVATE=[e.FUTEX.FUTEX_WAIT[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_WAKE_PRIVATE=[e.FUTEX.FUTEX_WAKE[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_REQUEUE_PRIVATE=[e.FUTEX.FUTEX_REQUEUE[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_CMP_REQUEUE_PRIVATE=[e.FUTEX.FUTEX_CMP_REQUEUE[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_WAKE_OP_PRIVATE=[e.FUTEX.FUTEX_WAKE_OP[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_LOCK_PI_PRIVATE=[e.FUTEX.FUTEX_LOCK_PI[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_LOCK_PI2_PRIVATE=[e.FUTEX.FUTEX_LOCK_PI2[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_UNLOCK_PI_PRIVATE=[e.FUTEX.FUTEX_UNLOCK_PI[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_TRYLOCK_PI_PRIVATE=[e.FUTEX.FUTEX_TRYLOCK_PI[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_WAIT_BITSET_PRIVATE=[e.FUTEX.FUTEX_WAIT_BITSET[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_WAKE_BITSET_PRIVATE=[e.FUTEX.FUTEX_WAKE_BITSET[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_WAIT_REQUEUE_PI_PRIVATE=[e.FUTEX.FUTEX_WAIT_REQUEUE_PI[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.FUTEX.FUTEX_CMP_REQUEUE_PI_PRIVATE=[e.FUTEX.FUTEX_CMP_REQUEUE_PI[0]|e.FUTEX.FUTEX_PRIVATE_FLAG[0]],e.SIG_FLAG={SIG_BLOCK:[0],SIG_UNBLOCK:[1],SIG_SETMASK:[2]},e.S={SIGHUP:[1],SIGINT:[2],SIGQUIT:[3],SIGILL:[4],SIGTRAP:[5],SIGABRT:[6],SIGIOT:[6],SIGBUS:[7],SIGFPE:[8],SIGKILL:[9],SIGUSR1:[10],SIGSEGV:[11],SIGUSR2:[12],SIGPIPE:[13],SIGALRM:[14],SIGTERM:[15],SIGSTKFLT:[16],SIGCHLD:[17],SIGCONT:[18],SIGSTOP:[19],SIGTSTP:[20],SIGTTIN:[21],SIGTTOU:[22],SIGURG:[23],SIGXCPU:[24],SIGXFSZ:[25],SIGVTALRM:[26],SIGPROF:[27],SIGWINCH:[28],SIGIO:[29],SIGPWR:[30],SIGSYS:[31],SIGUNUSED:[31],SIGRTMIN:[32],SIGRTMAX:[64],MINSIGSTKSZ:[2048],SIGSTKSZ:[8192]},e.MOUNT={MS_RDONLY:[1],MS_NOSUID:[2],MS_NODEV:[4],MS_NOEXEC:[8],MS_SYNCHRONOUS:[16],MS_REMOUNT:[32],MS_MANDLOCK:[64],MS_DIRSYNC:[128],MS_NOSYMFOLLOW:[256],MS_NOATIME:[1024],MS_NODIRATIME:[2048],MS_BIND:[4096],MS_MOVE:[8192],MS_REC:[16384],MS_SILENT:[32768],MS_POSIXACL:[65536],MS_UNBINDABLE:[1<<17],MS_PRIVATE:[1<<18],MS_SLAVE:[1<<19],MS_SHARED:[1<<20],MS_RELATIME:[1<<21],MS_KERNMOUNT:[1<<22],MS_I_VERSION:[1<<23],MS_STRICTATIME:[1<<24],MS_LAZYTIME:[1<<25]},e.MEMBARRIER_FLAG={MEMBARRIER_CMD_FLAG_CPU:[1]},e.MEMBARRIER_CMD={MEMBARRIER_CMD_QUERY:[0],MEMBARRIER_CMD_GLOBAL:[1],MEMBARRIER_CMD_GLOBAL_EXPEDITED:[2],MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED:[4],MEMBARRIER_CMD_PRIVATE_EXPEDITED:[8],MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED:[16],MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE:[32],MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE:[64],MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ:[128],MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ:[256],MEMBARRIER_CMD_SHARED:[1]},e.IOPRIO_WHO={NULL:[0],IOPRIO_WHO_PROCESS:[1],IOPRIO_WHO_PGRP:[2],IOPRIO_WHO_USER:[3]},e.IOPRIO_CLASS={IOPRIO_CLASS_NONE:[0],IOPRIO_CLASS_RT:[1],IOPRIO_CLASS_BE:[2],IOPRIO_CLASS_IDLE:[3]},e.SEEK_={SEEK_SET:[0],SEEK_CUR:[1],SEEK_END:[2],SEEK_DATA:[3],SEEK_HOLE:[4]},e.SCHED_={SCHED_NORMAL:[0],SCHED_FIFO:[1],SCHED_RR:[2],SCHED_BATCH:[3],SCHED_IDLE:[5],SCHED_DEADLINE:[6],SCHED_RESET_ON_FORK:[1073741824],SCHED_FLAG_RESET_ON_FORK:[1],SCHED_FLAG_RECLAIM:[2],SCHED_FLAG_DL_OVERRUN:[4],SCHED_FLAG_KEEP_POLICY:[8],SCHED_FLAG_KEEP_PARAMS:[16],SCHED_FLAG_UTIL_CLAMP_MIN:[32],SCHED_FLAG_UTIL_CLAMP_MAX:[64]},e.TIMER={TFD_TIMER_ABSTIME:[1],TFD_TIMER_CANCEL_ON_SET:[2]},e.RWF={RWF_HIPRI:[1],RWF_DSYNC:[2],RWF_SYNC:[4],RWF_NOWAIT:[8],RWF_APPEND:[16]},e.SECCOMP={SECCOMP_SET_MODE_STRICT:[0],SECCOMP_SET_MODE_FILTER:[1],SECCOMP_GET_ACTION_AVAIL:[2],SECCOMP_GET_NOTIF_SIZES:[3]},e.LOCK={LOCK_SH:[1],LOCK_EX:[2],LOCK_NB:[4],LOCK_UN:[8],LOCK_MAND:[32],LOCK_READ:[64],LOCK_WRITE:[128],LOCK_RW:[192]},e.FALLOC={FALLOC_FL_KEEP_SIZE:[1],FALLOC_FL_PUNCH_HOLE:[2],FALLOC_FL_NO_HIDE_STALE:[4],FALLOC_FL_COLLAPSE_RANGE:[8],FALLOC_FL_ZERO_RANGE:[16],FALLOC_FL_INSERT_RANGE:[32],FALLOC_FL_UNSHARE_RANGE:[64]},e.PKEY={PKEY_DISABLE_ACCESS:[1],PKEY_DISABLE_WRITE:[2]},e.CLONE={CLONE_NEWTIME:[128],CLONE_VM:[256],CLONE_FS:[512],CLONE_FILES:[1024],CLONE_SIGHAND:[2048],CLONE_PIDFD:[4096],CLONE_PTRACE:[8192],CLONE_VFORK:[16384],CLONE_PARENT:[32768],CLONE_THREAD:[65536],CLONE_NEWNS:[131072],CLONE_SYSVSEM:[262144],CLONE_SETTLS:[524288],CLONE_PARENT_SETTID:[1048576],CLONE_CHILD_CLEARTID:[2097152],CLONE_DETACHED:[4194304],CLONE_UNTRACED:[8388608],CLONE_CHILD_SETTID:[16777216],CLONE_NEWCGROUP:[33554432],CLONE_NEWUTS:[67108864],CLONE_NEWIPC:[134217728],CLONE_NEWUSER:[268435456],CLONE_NEWPID:[536870912],CLONE_NEWNET:[1073741824],CLONE_IO:[2147483648]},e.RUSAGE={RUSAGE_SELF:[0],RUSAGE_CHILDREN:[-1]},e.IPC={IPC_RMID:[0],IPC_SET:[1],IPC_STAT:[2],IPC_INFO:[3],IPC_CREAT:[512],IPC_EXCL:[1024],IPC_NOWAIT:[2048]},e.MSG={MSG_STAT:[11],MSG_INFO:[12],MSG_STAT_ANY:[13],MSG_NOERROR:[4096],MSG_EXCEPT:[8192],MSG_COPY:[16384]},e.E={EPERM:[1,"Not super-user"],ENOENT:[2,"No such file or directory"],ESRCH:[3,"No such process"],EINTR:[4,"Interrupted system call"],EIO:[5,"I/O error"],ENXIO:[6,"No such device or address"],E2BIG:[7,"Arg list too long"],ENOEXEC:[8,"Exec format error"],EBADF:[9,"Bad file number"],ECHILD:[10,"No children"],EAGAIN:[11,"No more processes"],ENOMEM:[12,"Not enough core"],EACCES:[13,"Permission denied"],EFAULT:[14,"Bad address"],ENOTBLK:[15,"Block device required"],EBUSY:[16,"Mount device busy"],EEXIST:[17,"File exists"],EXDEV:[18,"Cross-device link"],ENODEV:[19,"No such device"],ENOTDIR:[20,"Not a directory"],EISDIR:[21,"Is a directory"],EINVAL:[22,"Invalid argument"],ENFILE:[23,"Too many open files in system"],EMFILE:[24,"Too many open files"],ENOTTY:[25,"Not a typewriter"],ETXTBSY:[26,"Text file busy"],EFBIG:[27,"File too large"],ENOSPC:[28,"No space left on device"],ESPIPE:[29,"Illegal seek"],EROFS:[30,"Read only file system"],EMLINK:[31,"Too many links"],EPIPE:[32,"Broken pipe"],EDOM:[33,"Math arg out of domain of func"],ERANGE:[34,"Math result not representable"],ENOMSG:[35,"No message of desired type"],EIDRM:[36,"Identifier removed"],ECHRNG:[37,"Channel number out of range"],EL2NSYNC:[38,"Level 2 not synchronized"],EL3HLT:[39,"Level 3 halted"],EL3RST:[40,"Level 3 reset"],ELNRNG:[41,"Link number out of range"],EUNATCH:[42,"Protocol driver not attached"],ENOCSI:[43,"No CSI structure available"],EL2HLT:[44,"Level 2 halted"],EDEADLK:[45,"Deadlock condition"],ENOLCK:[46,"No record locks available"],EBADE:[50,"Invalid exchange"],EBADR:[51,"Invalid request descriptor"],EXFULL:[52,"Exchange full"],ENOANO:[53,"No anode"],EBADRQC:[54,"Invalid request code"],EBADSLT:[55,"Invalid slot"],EDEADLOCK:[56,"File locking deadlock error"],EBFONT:[57,"Bad font file fmt"],ENOSTR:[60,"Device not a stream"],ENODATA:[61,"No data (for no delay io)"],ETIME:[62,"Timer expired"],ENOSR:[63,"Out of streams resources"],ENONET:[64,"Machine is not on the network"],ENOPKG:[65,"Package not installed"],EREMOTE:[66,"The object is remote"],ENOLINK:[67,"The link has been severed"],EADV:[68,"Advertise error"],ESRMNT:[69,"Srmount error"],ECOMM:[70,"Communication error on send"],EPROTO:[71,"Protocol error"],EMULTIHOP:[74,"Multihop attempted"],ELBIN:[75,"Inode is remote (not really error)"],EDOTDOT:[76,"Cross mount point (not really error)"],EBADMSG:[77,"Trying to read unreadable message"],EFTYPE:[79,"Inappropriate file type or format"],ENOTUNIQ:[80,"Given log. name not unique"],EBADFD:[81,"f.d. invalid for this operation"],EREMCHG:[82,"Remote address changed"],ELIBACC:[83,"Can't access a needed shared lib"],ELIBBAD:[84,"Accessing a corrupted shared lib"],ELIBSCN:[85,".lib section in a.out corrupted"],ELIBMAX:[86,"Attempting to link in too many libs"],ELIBEXEC:[87,"Attempting to exec a shared library"],ENOSYS:[88,"Function not implemented"],ENMFILE:[89,"No more files"],ENOTEMPTY:[90,"Directory not empty"],ENAMETOOLONG:[91,"File or path name too long"],ELOOP:[92,"Too many symbolic links"],EOPNOTSUPP:[95,"Operation not supported on transport endpoint"],EPFNOSUPPORT:[96,"Protocol family not supported"],ECONNRESET:[104,"Connection reset by peer"],ENOBUFS:[105,"No buffer space available"],EAFNOSUPPORT:[106,"Address family not supported by protocol family"],EPROTOTYPE:[107,"Protocol wrong type for socket"],ENOTSOCK:[108,"Socket operation on non-socket"],ENOPROTOOPT:[109,"Protocol not available"],ESHUTDOWN:[110,"Can't send after socket shutdown"],ECONNREFUSED:[111,"Connection refused"],EADDRINUSE:[112,"Address already in use"],ECONNABORTED:[113,"Connection aborted"],ENETUNREACH:[114,"Network is unreachable"],ENETDOWN:[115,"Network interface is not configured"],ETIMEDOUT:[116,"Connection timed out"],EHOSTDOWN:[117,"Host is down"],EHOSTUNREACH:[118,"Host is unreachable"],EINPROGRESS:[119,"Connection already in progress"],EALREADY:[120,"Socket already connected"],EDESTADDRREQ:[121,"Destination address required"],EMSGSIZE:[122,"Message too long"],EPROTONOSUPPORT:[123,"Unknown protocol"],ESOCKTNOSUPPORT:[124,"Socket type not supported"],EADDRNOTAVAIL:[125,"Address not available"],ENETRESET:[126,""],EISCONN:[127,"Socket is already connected"],ENOTCONN:[128,"Socket is not connected"],ETOOMANYREFS:[129,""],EPROCLIM:[130,""],EUSERS:[131,""],EDQUOT:[132,""],ESTALE:[133,""],ENOTSUP:[134,"Not supported"],ENOMEDIUM:[135,"No medium (in tape drive)"],ENOSHARE:[136,"No such host or network path"],ECASECLASH:[137,"Filename exists with different case"],EILSEQ:[138,""],EOVERFLOW:[139,"Value too large for defined data type"]},e.I={KILL_FROM:function(t){const e=t.x0.toInt32();return e>0?e+" (target process)":e<0?e+" (all authorized processes)":e+" (all processes from process group of calling process)"}},e.ERR={};for(const t in e.E)e.E[t].push(t),e.ERR[t]=e.E[t][0];function T(t,e){for(const E in e)if(t==e[E][0])return E;return t}e.X={RANGE:function(t){try{const e=Process.getModuleByAddress(t);return`${t} (${null!=e?e.name:"null"})`}catch(e){return`${t}`}},LINKAT:function(t){return t==e.AT_.AT_SYMLINK_FOLLOW?"AT_SYMLINK_FOLLOW":0},MLOCK:function(t){return t==e.MLOCK.MLOCK_ONFAULT?"MLOCK_ONFAULT":0},PKEY_ACL:function(t){return T(t,e.PKEY)},RUSAGE:function(t){return T(t,e.RES)},RES:function(t){return T(t,e.RES)},RWF:function(t){return T(t,e.RWF)},SECCOMP:function(t){return T(t,e.SECCOMP)},SECCOMP_FLAGS:function(t,e){return t},MEMBARRIER_CMD:function(t){return T(t,e.MEMBARRIER_CMD)},MEMBARRIER_FLAG:function(t){return T(t,e.MEMBARRIER_FLAG)},ACCESS_FLAGS:function(t){return n(t,{AT_SYMLINK_NOFOLLOW:[256],AT_NO_AUTOMOUNT:[2048],AT_EMPTY_PATH:[4096]})},EPOLL_EV:function(t){return n(t,e.EPOLL_EV)},SPLICE:function(t){return n(t,e.SPLICE)},ITIMER:function(t){return n(t,e.ITIMER)},SYNC_FILE:function(t){return n(t,e.SYNC_FILE)},EPOLL_CTL:function(t){return n(t,e.EPOLL_CTL)},EPOLL_FLAG:function(t){return n(t,{EPOLL_CLOEXEC:[e.O_.O_CLOEXEC]})},PRCTL_OPT:function(t){return T(t,e.PR_.OPT)},CLONE:function(t){return n(t,e.CLONE)},CLK:function(t){return T(t,e.CLOCK)},SCHED:function(t){return T(t,e.SCHED_)},SEEK:function(t){return T(t,e.SEEK_)},INOTIFY_FLAGS:function(t){return T(t,e.INOTIFY_FLAGS)},INOTIFY_MASK:function(t){return T(t,e.INOTIFY_MASK)},FUTEX_OPE:function(t){return T(t,e.FUTEX)},PTRACE:function(t){return T(t,e.PTRACE_)},NODMODE:function(t,E){return n(t,{S_IFREG:e.S_.S_IFREG,S_IFCHR:e.S_.S_IFCHR,S_IFBLK:e.S_.S_IFBLK,S_IFIFO:e.S_.S_IFIFO,S_IFSOCK:e.S_.S_IFSOCK})},FLOCK:function(t){return T(t,e.LOCK)},FALLOC:function(t){return T(t,e.FALLOC)},IOPRIO_WHICH:function(t,E){return T(t,e.IOPRIO_WHO)},PERSO:function(t){return T(t,e.PERSO)},TYPEID:function(t){return T(t,e.K)},XATTR:function(t){return["default","XATTR_CREATE","XATTR_REPLACE"][t]},UNLINK:function(t){return T(t,{AT_REMOVEDIR:e.AT_.AT_REMOVEDIR})},PIPE_FLAG:t=>n(t,{O_NONBLOCK:e.O_.O_NONBLOCK,O_CLOEXEC:e.O_.O_CLOEXEC}),SOCKF:t=>n(t,{SOCK_NONBLOCK:e.O_.O_NONBLOCK,SOCK_CLOEXEC:e.O_.O_CLOEXEC}),SFD:t=>n(t,{SFD_NONBLOCK:e.O_.O_NONBLOCK,SFD_CLOEXEC:e.O_.O_CLOEXEC}),TFD:t=>n(t,{TFD_NONBLOCK:e.O_.O_NONBLOCK,TFD_CLOEXEC:e.O_.O_CLOEXEC}),TIMER:t=>n(t,e.TIMER),FNCTL:function(t){return T(t,E)},FCNTL_RET:function(t,_){return _===E.F_GETFL?e.X.O_MODE(t):t},FCNTL_ARGS:function(t,_){return _===E.F_SETFL?e.X.O_MODE(t):t},MSGF:function(t){return n(t,{IPC_NOWAIT:[e.IPC.IPC_NOWAIT],MSG_EXCEPT:[e.MSG.MSG_EXCEPT],MSG_NOERROR:[e.MSG.MSG_NOERROR]})},MSGCTL:function(t){return T(t,{IPC_STAT:[e.IPC.IPC_NOWAIT],IPC_SET:[e.IPC.IPC_SET],IPC_RMID:[e.IPC.IPC_RMID],IPC_INFO:[e.IPC.IPC_INFO],MSG_INFO:[e.MSG.MSG_INFO],MSG_STAT:[e.MSG.MSG_STAT],MSG_STAT_ANY:[e.MSG.MSG_STAT_ANY]})},DEL_KEXT:function(t){return n(t,{O_NONBLOCK:e.O_.O_NONBLOCK,O_TRUNC:e.O_.O_TRUNC})},SIG_FLAGS:function(t){return T(t,e.SIG_FLAG)},SIG:function(t){return T(t,e.S)},PF:function(t){return T(t,e.PF_)},SOCK:function(t){return n(t,e.SOCK_)},MOUNT_FLAG:function(t){return n(t,e.MOUNT)},MADV:function(t){return T(t,e.MADV_)},MCL:function(t){return T(t,e.MCL_)},MAP:function(t){return n(t,e.MAP_)},MS:function(t){return T(t,e.MS_)},ERR:function(t){for(const E in e.E)if(t==e.E[E][0])return E+" /* "+e.E[E][1]+" */";return null},ATTR:function(t){return t},UMASK:function(t){return n(t,e.S_)},O_FLAG:function(t){return _(t,e.O_)},O_MODE:function(t){return _(t,e.O_)},F_MODE:function(t){return n(t,e.FMODE)},UMOUNT:function(t){return n(t,e.MNT_)},MFD:function(t){return n(t,e.MFD)},MPROT:function(t){return 0==t?"PROT_NONE":_(t,e.PROT_)}}},611:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LinuxArm64InterruptorAgent=e.KAPI=e.IDSTRUCTS=e.DSTRUCTS=void 0;const _=E(204),n=E(451),T=E(95),s=E(876),r=E(122),o=E(981),I=s.AT_,i=s.E,l=s.MAP_,O=s.X,A=r.TypedData.from;e.DSTRUCTS=o.TYPES,e.IDSTRUCTS={};const N={DFD:A({t:T.T.INT32,n:"dfd",l:T.L.DFD}),OLD_DFD:A({t:T.T.INT32,n:"old_dfd",l:T.L.DFD}),NEW_DFD:A({t:T.T.INT32,n:"new_dfd",l:T.L.DFD}),FD:A({t:T.T.UINT32,n:"fd",l:T.L.FD}),FD_SET:A({t:T.T.POINTER64,n:"fd_set*",l:T.L.BUFFER,f:"FD"}),SOCKFD:A({t:T.T.UINT32,n:"sockfd",l:T.L.SOCKFD}),EPFD:A({t:T.T.UINT32,n:"epfd",l:T.L.EPFD}),AIO:A({t:T.T.ULONG,n:"aio_context_t ctx_id"}),LFD:A({t:T.T.ULONG,n:"fd",l:T.L.FD}),CONST_PATH:A({t:T.T.STRING,n:"path",l:T.L.PATH,c:!0}),CONST_NAME:A({t:T.T.STRING,n:"name",c:!0}),STR:A({t:T.T.STRING,n:"char*"}),OLD_NAME:A({t:T.T.CHAR_BUFFER,n:"old_name",c:!0}),NEW_NAME:A({t:T.T.CHAR_BUFFER,n:"new_name",c:!0}),CONST_FNAME:A({t:T.T.STRING,n:"filename",c:!0}),SIZE:A({t:T.T.UINT32,n:"size",l:T.L.SIZE}),LEN:A({t:T.T.ULONG,n:"length",l:T.L.SIZE}),OFFSET:A({t:T.T.UINT32,n:"offset",l:T.L.SIZE}),LOFFSET:A({t:T.T.ULONG,n:"offset",l:T.L.SIZE}),SIGNED_LEN:A({t:T.T.LONG,n:"length",l:T.L.SIZE}),XATTR:A({t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.XATTR}),XATTR_LIST:A({t:T.T.CHAR_BUFFER,n:"list",l:T.L.XATTR_LIST,r:2}),PID:A({t:T.T.INT32,n:"pid",l:T.L.PID}),SCHED_POLICY:A({t:T.T.UINT32,n:"policy",l:T.L.FLAG,f:O.SCHED}),UID:A({t:T.T.UINT32,n:"user",l:T.L.UID}),GID:A({t:T.T.UINT32,n:"group",l:T.L.GID}),SIG:A({t:T.T.INT32,n:"sig",l:T.L.FLAG,f:O.SIG}),TID:A({t:T.T.INT32,n:"thread"}),CALLER_TID:A({t:T.T.INT32,n:"caller_tid"}),PTR:A({t:T.T.POINTER64,n:"value"}),START_ADDR:A({t:T.T.POINTER64,n:"start_addr",l:T.L.VADDR,f:O.RANGE}),ADDR:A({t:T.T.POINTER64,n:"addr",l:T.L.VADDR,f:O.RANGE}),CONST_PTR:A({t:T.T.POINTER64,n:"value",c:!0}),MPROT:A({t:T.T.INT32,n:"prot",l:T.L.FLAG,f:O.MPROT}),FMODE:A({t:T.T.INT32,n:"mode",l:T.L.FLAG,f:O.F_MODE}),CLKID:A({t:T.T.INT32,n:"clockid",l:T.L.FLAG,f:O.CLK}),WD:A({t:T.T.INT32,n:"wd",l:T.L.WD}),EPEV:A({t:T.T.POINTER64,n:"struct epoll_event *event",l:T.L.FLAG,f:O.EPOLL_EV}),OUTPUT_CHAR_BUFFER:A({t:T.T.POINTER64,n:"buf",l:T.L.OUTPUT_BUFFER}),OUTPUT_BUFFER_LEN:A({t:T.T.INT32,n:"size",l:T.L.SIZE}),IOPRIO_WHICH:A({t:T.T.INT32,n:"which",l:T.L.FLAG,r:"x1",f:O.IOPRIO_WHICH}),IOVEC:A({t:T.T.POINTER64,n:"*iovec",l:T.L.DSTRUCT,f:"iovec",c:!0}),ACCESS_FLAGS:A({t:T.T.INT32,n:"flag",l:T.L.FLAG,f:O.ACCESS_FLAGS}),PKEY:A({t:T.T.INT32,n:"pkey",l:T.L.PKEY}),RWF:A({t:T.T.INT32,n:"rwf",l:T.L.FLAG,f:O.RWF}),SIGMASK:A({t:T.T.POINTER64,n:"sigmask",l:T.L.BUFFER}),TIMER:A({t:T.T.INT32,n:"which",l:T.L.FLAG,f:O.TIMER}),TIMER_PTR:A({t:T.T.POINTER64,n:"timer_id*",l:T.L.TIMER}),PERSO:A({t:T.T.UINT32,n:"personna",l:T.L.FLAG,f:O.PERSO}),RES:A({t:T.T.UINT32,n:"resource",l:T.L.FLAG,f:O.RES}),OFLAGS:A({t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.O_MODE}),OMODE:A({t:T.T.UINT32,n:"mode",l:T.L.FLAG,f:O.UMASK}),MQD:A({t:T.T.INT32,n:"mod_t mqdes",l:T.L.MQDES}),MQID:A({t:T.T.INT32,n:"msqid"}),SEMID:A({t:T.T.INT32,n:"semid"})};N.SIGMASK.update({f:N.SIG,len:16});const S={INFO:{t:T.T.INT32,e:[i.EAGAIN,i.EINVAL,i.EPERM]},ACCESS:{t:T.T.INT32,e:[i.EACCES,i.EFAULT,i.EINVAL,i.ELOOP,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOTDIR,i.EOVERFLOW,i.EIO,i.ETXTBSY,i.EROFS]},STAT:{t:T.T.INT32,e:[i.EACCES,i.EBADF,i.EFAULT,i.EINVAL,i.ELOOP,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOTDIR,i.EOVERFLOW]},LINK:{t:T.T.INT32,e:[i.EACCES,i.EEXIST,i.EFAULT,i.EIO,i.ELOOP,i.EMLINK,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOSPC,i.ENOTDIR,i.EPERM,i.EROFS,i.EXDEV]},OPEN:{t:T.T.INT32,e:[i.EACCES,i.EEXIST,i.EFAULT,i.ENODEV,i.ENOENT,i.ENOMEM,i.ENOSPC,i.ENOTDIR,i.ENXIO,i.EPERM,i.EROFS,i.ETXTBSY,i.EFBIG,i.EINTR,i.EISDIR,i.ELOOP,i.ENAMETOOLONG,i.EMFILE,i.ENFILE,i.ENOMEM]}};S.VADDR={t:T.T.INT32,n:"addr",l:T.L.VADDR,e:[i.EACCES,i.EAGAIN,i.EBADF,i.EINVAL,i.ENFILE,i.ENODEV,i.ENOMEM,i.ETXTBSY]},S.SET_XATTR={t:T.T.INT32,e:S.STAT.e.concat([i.EDQUOT,i.EEXIST,i.ENODATA,i.ENOSPC,i.ENOTSUP,i.EPERM,i.ERANGE])},S.GET_XATTR={t:T.T.INT32,e:S.STAT.e.concat([i.E2BIG,i.ENODATA,i.ENOTSUP,i.ERANGE])},S.LS_XATTR={t:T.T.INT32,e:S.STAT.e.concat([i.E2BIG,i.ENOTSUP,i.ERANGE])},S.RM_XATTR={t:T.T.INT32,e:S.STAT.e.concat([i.ENOTSUP,i.ERANGE])},S.OPENAT={t:T.T.INT32,n:"FD",l:T.L.FD,r:1,e:S.OPEN.e.concat([i.EBADF,i.ENOTDIR])},S.LINKAT={t:T.T.INT32,e:S.LINK.e.concat([i.EBADF,i.ENOTDIR])},S.IO={t:T.T.INT32,e:S.INFO.e.concat([i.EBADF,i.EFAULT,i.ENOSYS])};const L=[[0,"io_setup",0,[{t:T.T.UINT32,n:"nr_reqs"},{t:T.T.POINTER64,n:"aio_context_t *ctx"}]],[1,"io_destroy",1,[N.AIO],S.IO],[2,"io_submit",2,[N.AIO,{t:T.T.LONG,n:"nr"},{t:T.T.POINTER64,n:"struct iocb **iocbpp"}],S.IO],[3,"io_cancel",3,[N.AIO,{t:T.T.POINTER64,n:"struct iocb *iocb"},{t:T.T.POINTER64,n:"struct io_event *result"}],S.IO],[4,"io_getevents",4,[N.AIO,{t:T.T.LONG,n:"long min_nr"},{t:T.T.LONG,n:"nr"},{t:T.T.POINTER64,n:"struct io_event *events"},{t:T.T.POINTER64,n:"struct __kernel_timespec *timeout"}],S.IO],[5,"setxattr",5,[N.CONST_PATH,N.CONST_NAME,N.PTR,N.SIZE,N.XATTR],S.SET_XATTR],[6,"lsetxattr",6,[N.CONST_PATH,N.CONST_NAME,N.PTR,N.SIZE,N.XATTR],S.SET_XATTR],[7,"fsetxattr",7,[N.FD,N.CONST_NAME,N.CONST_PTR,N.SIZE,N.XATTR],S.SET_XATTR],[8,"getxattr",8,[N.CONST_PATH,N.CONST_NAME,N.PTR,N.SIZE],S.GET_XATTR],[9,"lgetxattr",9,[N.CONST_PATH,N.CONST_NAME,N.PTR,N.SIZE],S.GET_XATTR],[10,"fgetxattr",10,[N.FD,N.CONST_NAME,N.PTR,N.SIZE],S.GET_XATTR],[11,"listxattr",11,[N.CONST_PATH,N.XATTR_LIST,N.SIZE],S.LS_XATTR],[12,"llistxattr",12,[N.CONST_PATH,N.XATTR_LIST,N.SIZE],S.LS_XATTR],[13,"flistxattr",13,[N.FD,N.XATTR_LIST,N.SIZE],S.LS_XATTR],[14,"removexattr",14,[N.CONST_PATH,N.CONST_NAME],S.RM_XATTR],[15,"lremovexattr",15,[N.CONST_PATH,N.CONST_NAME],S.RM_XATTR],[16,"fremovexattr",16,[N.FD,N.CONST_PATH,N.CONST_NAME],S.RM_XATTR],[17,"getcwd",17,[{t:T.T.CHAR_BUFFER,n:"path_buff",l:T.L.PATH},N.SIZE],{t:T.T.CHAR_BUFFER,n:"path_buff",l:T.L.PATH,e:[i.EACCES,i.EFAULT,i.EINVAL,i.ENOENT,i.ERANGE]}],[18,"lookup_dcookie",18,[{t:T.T.ULONG,n:"cookie64"},{t:T.T.CHAR_BUFFER,n:"buffer",l:T.L.XATTR_LIST,r:2},N.SIZE]],[19,"eventfd2",19,[{t:T.T.UINT32,n:"count"},{t:T.T.INT32,n:"flags"}]],[20,"epoll_create1",20,[{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.EPOLL_FLAG}]],[21,"epoll_ctl",21,[N.EPFD,{t:T.T.UINT32,n:"op",l:T.L.FLAG,f:O.EPOLL_CTL},N.FD,N.EPEV]],[22,"epoll_pwait",22,[N.EPFD,N.EPEV,{t:T.T.INT32,n:"maxevents"},{t:T.T.INT32,n:"timeout"},{t:T.T.POINTER64,n:"const sigset_t *sigmask",c:!0}]],[23,"dup",23,[N.FD],{t:T.T.UINT32,n:"fd",l:T.L.FD,e:[i.EBADF,i.EBUSY,i.EINTR,i.EINVAL,i.EMFILE]}],[24,"dup3",24,[{t:T.T.UINT32,n:"old_fd",l:T.L.FD},{t:T.T.UINT32,n:"old_fd",l:T.L.FD},{t:T.T.INT32,n:"flags",l:T.L.FLAG}],{t:T.T.UINT32,n:"fd",l:T.L.FD,e:[i.EBADF,i.EBUSY,i.EINTR,i.EINVAL,i.EMFILE]}],[25,"fcntl",25,[N.FD,{t:T.T.UINT32,n:"cmd",l:T.L.FLAG,f:O.FNCTL},{t:T.T.ULONG,n:"args",l:T.L.FLAG,r:"x1",f:O.FCNTL_ARGS}],{t:T.T.INT32,n:"ret",r:"x1",l:T.L.FLAG,f:O.FCNTL_RET}],[26,"inotify_init1",26,[{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.INOTIFY_FLAGS}],{t:T.T.INT32,e:[i.EMFILE,i.EINVAL,i.ENFILE,i.ENOMEM]}],[27,"inotify_add_watch",27,[N.FD,N.CONST_PATH,{t:T.T.UINT32,n:"mask",l:T.L.FLAG,f:O.INOTIFY_MASK}],N.WD.asReturn([i.EACCES,i.EBADF,i.EEXIST,i.EFAULT,i.EINVAL,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOSPC,i.ENOTDIR])],[28,"inotify_rm_watch",28,[N.FD,N.WD],{t:T.T.INT32,e:[i.EBADF,i.EINVAL]}],[29,"ioctl",29,[N.FD,{t:T.T.UINT32,n:"cmd"},{t:T.T.ULONG,n:"arg"}]],[30,"ioprio_set",30,[N.IOPRIO_WHICH,{t:T.T.INT32,n:"who"},{t:T.T.INT32,n:"ioprio"}]],[31,"ioprio_get",31,[N.IOPRIO_WHICH,{t:T.T.INT32,n:"who"}]],[32,"flock",32,[N.FD,{t:T.T.UINT32,n:"ope",l:T.L.FLAG,f:O.FLOCK}]],[33,"mknodat",33,[N.DFD,N.CONST_NAME,{t:T.T.INT32,n:"umode",l:T.L.FLAG,f:O.NODMODE,r:"x3"},{t:T.T.INT32,n:"dev",l:T.L.DEV}]],[34,"mkdirat",34,[N.DFD,N.CONST_FNAME,N.XATTR.copy("umode")]],[35,"unlinkat",35,[N.DFD,N.CONST_FNAME,{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.UNLINK}]],[36,"symlinkat",36,[N.CONST_NAME.copy("oldname"),N.NEW_DFD,N.CONST_NAME.copy("newname")]],[37,"linkat",37,[N.OLD_DFD,{t:T.T.POINTER64,n:"value"},N.NEW_DFD,{t:T.T.POINTER64,n:"value"},{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.LINKAT}],S.LINKAT],[38,"renameat",38,[N.OLD_DFD,N.CONST_NAME.copy("oldname"),N.NEW_DFD,N.CONST_NAME.copy("newname")]],[39,"umount2",39,[N.CONST_PATH,{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.UMOUNT,c:!0}]],[40,"mount",40,[N.STR.copy("dev_name"),N.STR.copy("dir_name"),N.STR.copy("type"),{t:T.T.ULONG,n:"flags",l:T.L.FLAG,f:O.MOUNT_FLAG},{t:T.T.POINTER64,n:"*dat"}]],[41,"pivot_root",41,[N.CONST_NAME.copy("new_root"),N.CONST_NAME.copy("put_old")]],[42,"nfsservctl",42,["REMOVED int cmd","struct nfsctl_arg *argp","union nfsctl_res *resp"]],[43,"statfs",43,[N.CONST_PATH,"struct statfs *buf"]],[44,"fstatfs",44,[N.FD,"struct statfs *buf"]],[45,"truncate",45,[N.CONST_PATH,N.SIGNED_LEN]],[46,"ftruncate",46,[N.FD,N.LEN],S.OPEN],[47,"fallocate",47,[N.FD,{t:T.T.INT32,n:"mode",l:T.L.FLAG,f:O.FALLOC},N.LOFFSET,N.LEN]],[48,"faccessat",48,[N.DFD,N.CONST_FNAME,N.FMODE],S.ACCESS],[49,"chdir",49,[{t:T.T.CHAR_BUFFER,n:"path",l:T.L.PATH,c:!0}]],[50,"fchdir",50,[N.FD],{t:T.T.INT32,e:[i.EACCES,i.EFAULT,i.EIO,i.ELOOP,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOTDIR,i.EPERM,i.EBADF]}],[51,"chroot",51,[{t:T.T.CHAR_BUFFER,n:"path",l:T.L.PATH,c:!0}],{t:T.T.INT32,e:[i.EACCES,i.EFAULT,i.EIO,i.ELOOP,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOTDIR,i.EPERM]}],[52,"fchmod",52,[N.FD,{t:T.T.USHORT,n:"mode",l:T.L.ATTRMODE,f:O.ATTR}],{t:T.T.INT32,e:[i.EACCES,i.EFAULT,i.EIO,i.ELOOP,i.ENAMETOOLONG,i.ENOENT,i.ENOMEM,i.ENOTDIR,i.EPERM,i.EBADF,i.EROFS]}],[53,"fchmodat",53,[N.DFD,N.CONST_PATH,N.FMODE]],[54,"fchownat",54,[N.DFD,N.CONST_PATH,N.UID,N.GID,N.ACCESS_FLAGS]],[55,"fchown",55,[N.FD,N.UID,N.GID]],[56,"openat",56,[N.DFD,N.CONST_FNAME,N.OFLAGS,N.OMODE],S.OPENAT],[57,"close",57,[N.FD]],[58,"vhangup",58,[]],[59,"pipe2",59,[{t:T.T.POINTER64,n:"pipefd",l:T.L.PIPEFD},{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.PIPE_FLAG}]],[60,"quotactl",60,["unsigned int cmd",N.CONST_NAME.copy("special"),"qid_t id","void *addr"]],[61,"getdents64",61,[{t:T.T.UINT32,n:"fd",l:T.L.FD},"struct linux_dirent64 *dirent",N.SIZE]],[62,"lseek",62,[N.FD,N.OFFSET,{t:T.T.UINT32,n:"whence",l:T.L.FLAG,f:O.SEEK}]],[63,"read",63,[N.FD,N.OUTPUT_CHAR_BUFFER,{t:T.T.UINT32,n:"count",l:T.L.SIZE}],{t:T.T.UINT32,r:1,n:"sz",l:T.L.SIZE}],[64,"write",64,[N.FD,{t:T.T.CHAR_BUFFER,n:"buf",c:!0},N.SIZE]],[65,"readv",65,[N.FD,N.IOVEC,N.LEN]],[66,"writev",66,[N.FD,N.IOVEC,N.LEN]],[67,"pread64",67,[N.FD,N.OUTPUT_CHAR_BUFFER,N.SIZE,N.OFFSET]],[68,"pwrite64",68,[N.FD,"const char *buf",N.SIZE,N.OFFSET]],[69,"preadv",69,[N.FD,N.IOVEC,N.SIZE.copy("iovcnt"),N.LOFFSET]],[70,"pwritev",70,[N.FD,N.IOVEC,N.SIZE.copy("iovcnt"),N.LOFFSET]],[71,"sendfile",71,[N.FD.copy("out_fd"),N.FD.copy("in_fd"),N.OFFSET,N.SIZE]],[72,"pselect6",72,[{t:T.T.INT32,n:"nfds"},N.FD_SET.copy("readfds"),N.FD_SET.copy("writefds"),N.FD_SET.copy("exceptfds"),"struct __kernel_timespec *","const sigset_t *sigmask"]],[73,"ppoll",73,["struct pollfd *",N.SIZE.copy("nfds"),"struct __kernel_timespec *","const sigset_t sigmask*"]],[74,"signalfd4",74,[N.FD,"sigset_t *user_mask",N.SIZE.copy("sizemask"),{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.SFD}]],[75,"vmsplice",75,[N.FD,N.IOVEC,N.LEN.copy("nr_segs"),{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.SPLICE}]],[76,"splice",76,[{t:T.T.UINT32,n:"fd_in",l:T.L.FD},N.LOFFSET.copy("*off_in"),{t:T.T.UINT32,n:"fd_out",l:T.L.FD},N.LOFFSET.copy("*off_out"),N.SIZE,"unsigned int flags["]],[77,"tee",77,[{t:T.T.UINT32,n:"fd_in",l:T.L.FD},{t:T.T.UINT32,n:"fd_out",l:T.L.FD},"size_t len","unsigned int flags"]],[78,"readlinkat",78,[N.DFD,{t:T.T.STRING,n:"path",l:T.L.PATH,c:!0},N.OUTPUT_CHAR_BUFFER,N.SIZE]],[79,"newfstatat",79,[N.DFD,{t:T.T.STRING,n:"filename",c:!0},{t:T.T.POINTER64,n:"struct stat *statbuf"},N.ACCESS_FLAGS],S.ACCESS],[80,"fstat",80,[{t:T.T.UINT32,n:"fd",l:T.L.FD},{t:T.T.POINTER64,n:"*statbuf",l:T.L.DSTRUCT,f:"__old_kernel_stat"}]],[81,"sync",81,[]],[82,"fsync",82,[N.FD]],[83,"fdatasync",83,[N.FD]],[84,"sync_file_range",84,[N.FD,N.LOFFSET,N.LEN.copy("nbytes"),{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.SYNC_FILE}]],[85,"timerfd_create",85,[N.CLKID,{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.TFD}],N.FD.asReturn([])],[86,"timerfd_settime",86,[N.FD,{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.TIMER},"const struct __kernel_itimerspec *new","struct __kernel_itimerspec *old"]],[87,"timerfd_gettime",87,[N.FD,"struct __kernel_itimerspec *curr_val"]],[88,"utimensat",88,[N.DFD,{t:T.T.STRING,n:"filename",c:!0},"struct __kernel_timespec *utimes","int flags"]],[89,"acct",89,[{t:T.T.STRING,n:"name",c:!0}]],[90,"capget",90,["cap_user_header_t header","cap_user_data_t dataptr"]],[91,"capset",91,["cap_user_header_t header","const cap_user_data_t data"]],[92,"personality",92,[N.PERSO],N.PERSO.asReturn()],[93,"exit",93,[{t:T.T.INT32,n:"status"}]],[94,"exit_group",94,[{t:T.T.INT32,n:"status"}]],[95,"waitid",95,[{t:T.T.INT32,n:"type_id",l:T.L.FLAG,f:O.TYPEID},{t:T.T.UINT32,n:"id"},"struct siginfo *infop","int options","struct rusage *r"]],[96,"set_tid_address",96,[{t:T.T.POINTER32,n:"*tidptr"}],N.CALLER_TID],[97,"unshare",97,[{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.CLONE}]],[98,"futex",98,[{t:T.T.UINT32,n:"word",l:T.L.FUTEX},{t:T.T.INT32,n:"op",l:T.L.FLAG,f:O.FUTEX_OPE},"u32 val","struct __kernel_timespec *utime","u32 *uaddr2","u32 val3["]],[99,"set_robust_list",99,["struct robust_list_head *head",N.LEN]],[100,"get_robust_list",100,[N.PID,"struct robust_list_head * *head_ptr","size_t *len_ptr"]],[101,"nanosleep",101,["struct __kernel_timespec *rqtp","struct __kernel_timespec *rmtp"]],[102,"getitimer",102,[N.TIMER,"struct itimerval *value"]],[103,"setitimer",103,[N.TIMER,"struct itimerval *value","struct itimerval *ovalue"]],[104,"kexec_load",104,[{t:T.T.ULONG,n:"entry"},"unsigned long nr_segments","struct kexec_segment *segments","unsigned long flags"]],[105,"init_module",105,["void *umod","unsigned long len",N.CONST_NAME.copy("uargs")]],[106,"delete_module",106,[N.CONST_NAME.copy("name_user"),{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.DEL_KEXT}]],[107,"timer_create",107,[N.CLKID,"struct sigevent *timer_event_spec",N.TIMER_PTR.copy("created_timer_id")],{t:T.T.INT32,e:[i.EAGAIN,i.EINVAL,i.ENOMEM]}],[108,"timer_gettime",108,[N.TIMER,"struct __kernel_itimerspec *setting"]],[109,"timer_getoverrun",109,[N.TIMER]],[110,"timer_settime",110,[N.TIMER,"int flags","const struct __kernel_itimerspec *new_setting","struct __kernel_itimerspec *old_setting"]],[111,"timer_delete",111,[N.TIMER]],[112,"clock_settime",112,[N.CLKID,"const struct __kernel_timespec *tp"]],[113,"clock_gettime",113,[N.CLKID,"struct __kernel_timespec *tp"]],[114,"clock_getres",114,[N.CLKID,"struct __kernel_timespec *tp"]],[115,"clock_nanosleep",115,[N.CLKID,"int flags","const struct __kernel_timespec *rqtp","struct __kernel_timespec *rmtp"]],[116,"syslog",116,["int type",N.OUTPUT_CHAR_BUFFER,N.OUTPUT_BUFFER_LEN]],[117,"ptrace",117,[{t:T.T.LONG,n:"request",l:T.L.FLAG,f:O.PTRACE},{t:T.T.LONG,n:"pid",l:T.L.PID},N.ADDR,"unsigned long data"]],[118,"sched_setparam",118,[N.PID,"struct sched_param *param"]],[119,"sched_setscheduler",119,[N.PID,N.SCHED_POLICY,"struct sched_param *param"]],[120,"sched_getscheduler",120,[N.PID]],[121,"sched_getparam",121,[N.PID,"struct sched_param *param"]],[122,"sched_setaffinity",122,[N.PID,N.SIZE.copy("cpusetsize"),"unsigned long *user_mask_ptr"]],[123,"sched_getaffinity",123,[N.PID,N.SIZE.copy("cpusetsize"),"unsigned long *user_mask_ptr"]],[124,"sched_yield",124,[]],[125,"sched_get_priority_max",125,[N.SCHED_POLICY]],[126,"sched_get_priority_min",126,[N.SCHED_POLICY]],[127,"sched_rr_get_interval",127,[N.PID,"struct __kernel_timespec *interval"]],[128,"restart_syscall",128,[]],[129,"kill",129,[N.PID,N.SIG]],[130,"tkill",130,[N.PID,N.SIG]],[131,"tgkill",131,[{t:T.T.INT32,n:"thread_grp",l:T.L.PID},N.PID,N.SIG]],[132,"sigaltstack",132,["const struct sigaltstack *uss","struct sigaltstack *uoss"]],[133,"rt_sigsuspend",133,["sigset_t *unewset",N.SIZE.copy("sigsetsize")]],[134,"rt_sigaction",134,[N.SIG,"const struct sigaction *","struct sigaction *",N.SIZE]],[135,"rt_sigprocmask",135,[{t:T.T.INT32,n:"how",l:T.L.FLAG,f:O.SIG_FLAGS},"sigset_t *set","sigset_t *oset","size_t sigsetsize"]],[136,"rt_sigpending",136,["sigset_t *set",N.SIZE.copy("sigsetsize")]],[137,"rt_sigtimedwait",137,["const sigset_t *uthese","siginfo_t *uinfo","const struct __kernel_timespec *uts","size_t sigsetsize"]],[138,"rt_sigqueueinfo",138,[N.PID,N.SIG,"siginfo_t *uinfo"]],[139,"rt_sigreturn",139,[]],[140,"setpriority",140,[N.IOPRIO_WHICH,{t:T.T.INT32,n:"who"},{t:T.T.INT32,n:"ioprio"}]],[141,"getpriority",141,[N.IOPRIO_WHICH,{t:T.T.INT32,n:"who"}]],[142,"reboot",142,["int magic1","int magic2","unsigned int cmd","void *arg"]],[143,"setregid",143,[N.GID.copy("rgid"),N.GID.copy("egid")]],[144,"setgid",144,[N.GID],S.INFO],[145,"setreuid",145,[{t:T.T.UINT32,n:"real_user",l:T.L.UID},{t:T.T.UINT32,n:"effective_user",l:T.L.UID}],S.INFO],[146,"setuid",146,[N.UID],S.INFO],[147,"setresuid",147,[{t:T.T.UINT32,n:"real_user",l:T.L.UID},{t:T.T.UINT32,n:"effective_user",l:T.L.UID},{t:T.T.UINT32,n:"suid",l:T.L.UID}],S.INFO],[148,"getresuid",148,[{t:T.T.POINTER64,n:"real_user",l:T.L.UID},{t:T.T.POINTER64,n:"effective_user",l:T.L.UID},{t:T.T.POINTER64,n:"suid",l:T.L.UID}]],[149,"setresgid",149,[{t:T.T.UINT32,n:"real_grp",l:T.L.GID},{t:T.T.UINT32,n:"effective_grp",l:T.L.GID},{t:T.T.UINT32,n:"sgid",l:T.L.GID}],S.INFO],[150,"getresgid",150,[{t:T.T.POINTER64,n:"real_grp",l:T.L.UID},{t:T.T.POINTER64,n:"effective_grp",l:T.L.UID},{t:T.T.POINTER64,n:"sgid",l:T.L.UID}],S.INFO],[151,"setfsuid",151,[N.UID],S.INFO],[152,"setfsgid",152,[N.GID],S.INFO],[153,"times",153,["struct tms *tbuf"]],[154,"setpgid",154,[N.PID,{t:T.T.INT32,n:"pgid",l:T.L.PID}],S.INFO],[155,"getpgid",155,[N.PID]],[156,"getsid",156,[N.PID]],[157,"setsid",157,[],,S.INFO],[158,"getgroups",158,[N.SIZE,{t:T.T.POINTER64,n:"grouplist",l:T.L.GID}]],[159,"setgroups",159,[N.SIZE,{t:T.T.POINTER64,n:"grouplist",l:T.L.GID}],S.INFO],[160,"uname",160,[{t:T.T.POINTER64,n:" *utsname"}]],[161,"sethostname",161,[{t:T.T.CHAR_BUFFER,n:"name"},{t:T.T.UINT32,n:"length"}]],[162,"setdomainname",162,[{t:T.T.CHAR_BUFFER,n:"name"},{t:T.T.UINT32,n:"length"}]],[163,"getrlimit",163,[N.RES,"struct rlimit *rlim"]],[164,"setrlimit",164,[N.RES,"struct rlimit *rlim"]],[165,"getrusage",165,[{t:T.T.INT32,n:"who",l:T.L.ATTRMODE,f:O.RUSAGE},"struct rusage *ru"]],[166,"umask",166,[{t:T.T.UINT32,n:"mask",l:T.L.ATTRMODE,f:O.ATTR}]],[167,"prctl",167,[{t:T.T.INT32,n:"opt",l:T.L.FLAG,f:O.PRCTL_OPT},"unsigned long arg2","unsigned long arg3","unsigned long arg4","unsigned long arg5"]],[168,"getcpu",168,["unsigned *cpu","unsigned *node","struct getcpu_cache *cache"]],[169,"gettimeofday",169,["struct timeval *tv","struct timezone *tz"]],[170,"settimeofday",170,["struct timeval *tv","struct timezone *tz"]],[171,"adjtimex",171,["struct __kernel_timex *txc_p"]],[172,"getpid",172,[],N.PID],[173,"getppid",173,[],N.PID],[174,"getuid",174,[],N.UID],[175,"geteuid",175,[],N.UID],[176,"getgid",176,[],N.GID],[177,"getegid",177,[],N.GID],[178,"gettid",178,[]],[179,"sysinfo",179,["struct sysinfo *info"]],[180,"mq_open",180,[N.CONST_NAME,N.OFLAGS,N.OMODE,"struct mq_attr *attr"]],[181,"mq_unlink",181,[N.CONST_NAME]],[182,"mq_timedsend",182,[N.MQD,N.CONST_NAME.copy("*msg_ptr"),N.SIZE.copy("msg_len"),"unsigned int msg_prio","const struct __kernel_timespec *abs_timeout"]],[183,"mq_timedreceive",183,[N.MQD,N.OUTPUT_CHAR_BUFFER.copy("*msg_ptr"),N.SIZE.copy("msg_len"),"unsigned int *msg_prio","const struct __kernel_timespec *abs_timeout"]],[184,"mq_notify",184,[N.MQD,"const struct sigevent *notification"]],[185,"mq_getsetattr",185,[N.MQD,"const struct mq_attr *mqstat","struct mq_attr *omqstat"]],[186,"msgget",186,["key_t key",{t:T.T.INT32,n:"msgflg",l:T.L.FLAG,f:O.MSGF}]],[187,"msgctl",187,[N.MQID,{t:T.T.INT32,n:"cmd",l:T.L.FLAG,f:O.MSGCTL},"struct msqid_ds *buf"]],[188,"msgrcv",188,[N.MQID,"struct msgbuf *msgp",N.SIZE.copy("msgsz"),"long msgtyp",{t:T.T.INT32,n:"msgflg",l:T.L.FLAG,f:O.MSGF}]],[189,"msgsnd",189,[N.MQID,"struct msgbuf *msgp",N.SIZE.copy("msgsz"),{t:T.T.INT32,n:"msgflg",l:T.L.FLAG,f:O.MSGF}]],[190,"semget",190,["key_t key",N.SIZE.copy("nsems"),"int semflg"]],[191,"semctl",191,[N.SEMID,"int semnum","int cmd","unsigned long arg"]],[192,"semtimedop",192,[N.SEMID,"struct sembuf *sops","unsigned nsops","const struct __kernel_timespec *timeout"]],[193,"semop",193,[N.SEMID,"struct sembuf *sops","unsigned nsops"]],[194,"shmget",194,["key_t key","size_t size","int flag"]],[195,"shmctl",195,["int shmid","int cmd","struct shmid_ds *buf"]],[196,"shmat",196,["int shmid","void *shmaddr","int shmflg"]],[197,"shmdt",197,["void *shmaddr"]],[198,"socket",198,[{t:T.T.INT32,n:"domain",l:T.L.FLAG,f:O.PF},{t:T.T.INT32,n:"type",l:T.L.FLAG,f:O.SOCK},"int"],N.SOCKFD.asReturn([])],[199,"socketpair",199,["int","int","int","int *"]],[200,"bind",200,[N.SOCKFD,"struct sockaddr *","int"]],[201,"listen",201,[N.SOCKFD,N.LEN]],[202,"accept",202,[N.SOCKFD,"struct sockaddr *","int *"]],[203,"connect",203,[N.FD,"struct sockaddr *","int"]],[204,"getsockname",204,[N.SOCKFD,"struct sockaddr *","int *"]],[205,"getpeername",205,[N.SOCKFD,"struct sockaddr *","int *"]],[206,"sendto",206,[N.SOCKFD,"void *",N.SIZE,"unsigned","struct sockaddr *","int"]],[207,"recvfrom",207,[N.SOCKFD,"void *",N.SIZE,"unsigned","struct sockaddr *","int *"]],[208,"setsockopt",208,[N.SOCKFD,"int level","int optname","void *optval","int optlen"]],[209,"getsockopt",209,[N.SOCKFD,"int level","int optname","void *optval","int *optlen"]],[210,"shutdown",210,[N.SOCKFD,"int"]],[211,"sendmsg",211,[N.SOCKFD,"struct user_msghdr *msg","unsigned flags"]],[212,"recvmsg",212,[N.SOCKFD,"struct user_msghdr *msg","unsigned flags"]],[213,"readahead",213,[N.SOCKFD,"loff_t offset","size_t count"]],[214,"brk",214,[N.ADDR.copy("*end_data_seg")]],[215,"munmap",215,[N.ADDR,N.SIZE],{t:T.T.INT32,e:[i.EINVAL]}],[216,"mremap",216,[N.ADDR,"unsigned long old_len","unsigned long new_len","unsigned long flags",N.ADDR]],[217,"add_key",217,[N.CONST_NAME.copy("*type"),N.CONST_NAME.copy("*description"),"const void *_payload",N.SIZE.copy("plen"),"key_serial_t destringid"]],[218,"request_key",218,[N.CONST_NAME.copy("*type"),N.CONST_NAME.copy("*description"),N.CONST_NAME.copy("*callout_info"),"key_serial_t destringid"]],[219,"keyctl",219,["int cmd","unsigned long arg2","unsigned long arg3","unsigned long arg4","unsigned long arg5"]],[220,"clone",220,["unsigned long","unsigned long","int *","int *","unsigned long"]],[221,"execve",221,[{t:T.T.STRING,n:"filename",c:!0},{t:T.T.STRING,n:"*argv",c:!0},{t:T.T.STRING,n:"*envp",c:!0}]],[222,"mmap",222,[N.START_ADDR,N.SIZE,N.MPROT,{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.MAP},{t:T.T.UINT32,n:"fd",l:T.L.MFD},N.OFFSET],S.VADDR],[223,"fadvise64",223,[{t:T.T.UINT32,n:"fd",l:T.L.FD},"loff_t offset",N.SIZE,"int advice"]],[224,"swapon",224,[N.CONST_FNAME,"int swap_flags"]],[225,"swapoff",225,[N.CONST_FNAME]],[226,"mprotect",226,[N.ADDR,N.SIZE,N.MPROT],{t:T.T.INT32,e:[i.EACCES,i.EFAULT,i.EINVAL,i.ENOMEM]}],[227,"msync",227,[N.ADDR,N.SIZE,{t:T.T.ULONG,n:"flags",l:T.L.FLAG,f:O.MS}],{t:T.T.INT32,e:[i.EBUSY,i.EINVAL,i.ENOMEM]}],[228,"mlock",228,[N.ADDR,N.SIZE],{t:T.T.INT32,e:[i.EPERM,i.EINVAL,i.ENOMEM]}],[229,"munlock",229,[N.ADDR,N.SIZE],{t:T.T.INT32,e:[i.EPERM,i.EINVAL,i.ENOMEM]}],[230,"mlockall",230,[{t:T.T.INT32,n:"flags",l:T.L.FLAG,f:O.MCL}],{t:T.T.INT32,e:[i.EPERM,i.EINVAL,i.ENOMEM]}],[231,"munlockall",231,[],{t:T.T.INT32,e:[i.EPERM,i.EINVAL,i.ENOMEM]}],[232,"mincore",232,[N.ADDR,N.SIZE,"unsigned char * vec"]],[233,"madvise",233,[N.ADDR,N.SIZE,{t:T.T.INT32,n:"behavior",l:T.L.FLAG,f:O.MADV}],{t:T.T.INT32,e:[i.EAGAIN,i.EBADF,i.EINVAL,i.EIO,i.ENOMEM]}],[234,"remap_file_pages",234,[N.START_ADDR,N.LEN,"unsigned long prot","unsigned long pgoff","unsigned long flags"]],[235,"mbind",235,[N.ADDR,N.LEN,"unsigned long mode","const unsigned long *nmask","unsigned long maxnode","unsigned flags"]],[236,"get_mempolicy",236,["int *policy","unsigned long *nmask","unsigned long maxnode","unsigned long addr","unsigned long flags"]],[237,"set_mempolicy",237,["int mode","const unsigned long *nmask","unsigned long maxnode"]],[238,"migrate_pages",238,[{t:T.T.INT32,n:"pid",l:T.L.PID},"unsigned long maxnode","const unsigned long *from","const unsigned long *to"]],[239,"move_pages",239,[{t:T.T.INT32,n:"pid",l:T.L.PID},"unsigned long nr_pages","const void * *pages","const int *nodes","int *status","int flags"]],[240,"rt_tgsigqueueinfo",240,[{t:T.T.INT32,n:"tgid",l:T.L.PID},N.PID,N.SIG,"siginfo_t *uinfo"]],[241,"perf_event_open",241,["struct perf_event_attr *attr_uptr",{t:T.T.INT32,n:"pid",l:T.L.PID},"int cpu","int group_fd","unsigned long flags"]],[242,"accept4",242,[N.SOCKFD,"struct sockaddr *",N.SIZE.out(),{t:T.T.INT32,n:"type",l:T.L.FLAG,f:O.SOCKF}]],[243,"recvmmsg",243,[{t:T.T.UINT32,n:"fd",l:T.L.FD},"struct mmsghdr *msg","unsigned int vlen","unsigned flags","struct __kernel_timespec *timeout"]],[244,"not implemented 244",244,[]],[245,"not implemented 245",245,[]],[246,"not implemented 246",246,[]],[247,"not implemented 247",247,[]],[248,"not implemented 248",248,[]],[249,"not implemented 249",249,[]],[250,"not implemented 250",250,[]],[251,"not implemented 251",251,[]],[252,"not implemented 252",252,[]],[253,"not implemented 253",253,[]],[254,"not implemented 254",254,[]],[255,"not implemented 255",255,[]],[256,"not implemented 256",256,[]],[257,"not implemented 257",257,[]],[258,"not implemented 258",258,[]],[259,"not implemented 259",259,[]],[260,"wait4",260,[N.PID,"int *stat_addr","int options","struct rusage *ru"]],[261,"prlimit64",261,[N.PID,N.RES,"const struct rlimit64 *new_rlim","struct rlimit64 *old_rlim"]],[262,"fanotify_init",262,["unsigned int flags","unsigned int event_f_flags"]],[263,"fanotify_mark",263,["int fanotify_fd","unsigned int flags","u64 mask",{t:T.T.UINT32,n:"fd",l:T.L.FD},N.CONST_PATH]],[264,"name_to_handle_at",264,[{t:T.T.INT32,n:"dfd",l:T.L.DFD},{t:T.T.STRING,n:"name",c:!0},"struct file_handle *handle","int *mnt_id","int flag"]],[265,"open_by_handle_at",265,["int mountdirfd","struct file_handle *handle","int flags"]],[266,"clock_adjtime",266,[N.CLKID,"struct __kernel_timex *tx"]],[267,"syncfs",267,[{t:T.T.UINT32,n:"fd",l:T.L.FD}]],[268,"setns",268,[{t:T.T.UINT32,n:"fd",l:T.L.FD},"int nstype"]],[269,"sendmmsg",269,[{t:T.T.UINT32,n:"fd",l:T.L.FD},"struct mmsghdr *msg","unsigned int vlen","unsigned flags"]],[270,"process_vm_readv",270,[{t:T.T.INT32,n:"pid",l:T.L.PID},N.IOVEC.copy("lvec"),N.LEN.copy("liovcnt"),N.IOVEC.copy("rvec"),N.LEN.copy("riovcnt"),"unsigned long flags"]],[271,"process_vm_writev",271,[{t:T.T.INT32,n:"pid",l:T.L.PID},N.IOVEC.copy("lvec"),N.LEN.copy("liovcnt"),N.IOVEC.copy("rvec"),N.LEN.copy("riovcnt"),"unsigned long flags"]],[272,"kcmp",272,[N.PID.copy("pid1"),N.PID.copy("pid2"),"int type","unsigned long idx1","unsigned long idx2"]],[273,"finit_module",273,[{t:T.T.UINT32,n:"fd",l:T.L.FD},N.CONST_NAME.copy("uargs"),"int flags"]],[274,"sched_setattr",274,[N.PID,"struct sched_attr *attr","unsigned int flags"]],[275,"sched_getattr",275,[N.PID,"struct sched_attr *attr","unsigned int size","unsigned int flags"]],[276,"renameat2",276,[N.OLD_DFD,N.OLD_NAME,N.NEW_DFD,N.NEW_NAME,"unsigned int flags"]],[277,"seccomp",277,[{t:T.T.UINT32,n:"ope",l:T.L.FLAG,f:O.SECCOMP},{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.SECCOMP_FLAGS,r:1},"void *uargs"]],[278,"getrandom",278,[{t:T.T.CHAR_BUFFER,n:"buf",l:T.L.OUTPUT_BUFFER},"size_t count","unsigned int flags"]],[279,"memfd_create",279,[{t:T.T.CHAR_BUFFER,n:"filename",l:T.L.PATH},{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.MFD}],{t:T.T.UINT32,n:"mfd",l:T.L.FD,e:[i.EFAULT,i.EINVAL,i.EMFILE,i.ENFILE,i.ENOMEM]}],[280,"bpf",280,["int cmd","union bpf_attr *attr","unsigned int size"]],[281,"execveat",281,[{t:T.T.INT32,n:"dfd",l:T.L.DFD},{t:T.T.STRING,n:"filename",c:!0},N.CONST_NAME.copy("*argv"),N.CONST_NAME.copy("*envp"),"int flags"]],[282,"userfaultfd",282,[N.OFLAGS]],[283,"membarrier",283,[{t:T.T.INT32,n:"cmd",l:T.L.FLAG,f:O.MEMBARRIER_CMD},{t:T.T.INT32,n:"glag",l:T.L.FLAG,f:O.MEMBARRIER_FLAG}]],[284,"mlock2",284,[N.START_ADDR,N.SIZE,{t:T.T.UINT32,n:"flags",l:T.L.FLAG,f:O.MLOCK}]],[285,"copy_file_range",285,[{t:T.T.UINT32,n:"fd_in",l:T.L.FD},N.LOFFSET.copy("*off_in"),{t:T.T.UINT32,n:"fd_out",l:T.L.FD},N.LOFFSET.copy("*off_out"),N.SIZE,"unsigned int RESERVED flags"]],[286,"preadv2",286,[N.LFD,N.IOVEC,N.LEN,N.LOFFSET,N.RWF]],[287,"pwritev2",287,[N.LFD,N.IOVEC,N.LEN,N.LOFFSET,N.RWF]],[288,"pkey_mprotect",288,[N.ADDR,N.SIZE,N.MPROT,N.PKEY]],[289,"pkey_alloc",289,["unsigned long RESERVED flags",{t:T.T.ULONG,n:"access_rights",l:T.L.FLAG,f:O.PKEY_ACL}],N.PKEY],[290,"pkey_free",290,[N.PKEY]],[291,"statx",291,[N.DFD,N.CONST_PATH,N.ACCESS_FLAGS,"unsigned mask","struct statx *buffer"]]],c={},R={};L.map((t=>{R[t[1]]=t,c[t[0]]=t}));let a=null;e.KAPI={CONST:s,SVC:R,SVC_ARG:3,ERR:s.ERR};class F extends _.InterruptorAgent{constructor(t,e){super(t,e),this.loadCtr=0,this.filter_name=[],this.filter_num=[],this.svc_hk={},this.hvc_hk={},this.smc_hk={},this.irq_hk={},this.configure(t)}_setupDelegateFilters(t,e){if(null==e)return;const E=e,_=this[t];["svc","hvc","smc"].map((t=>{E.hasOwnProperty(t)&&(_[t]=E[t])})),_.hasOwnProperty("syscalls")&&null!=_.syscalls&&(_.svc=this.getSyscallList(_.syscalls))}configure(t){if(null!=t){for(let e in t)switch(e){case"svc":for(let e in t.svc)this.onSupervisorCall(e,t.svc[e]);break;case"hvc":for(let e in t.hvc)this.onHypervisorCall(e.parseInt(16),t.hvc[e]);break;case"filter_name":this.filter_name=t.filter_name;break;case"filter_num":this.filter_num=t.filter_num}this.setupBuiltinHook()}}_updateScope(t){switch(this._policy.svc){case _.F.INCLUDE_ANY:a=t=>this._scope.svc.indexOf(t)>-1;break;case _.F.EXCLUDE_ANY:a=t=>-1==this._scope.svc.indexOf(t);break;case _.F.FILTER:a=t=>-1==this._scope.svc.i.indexOf(t)||this._scope.svc.e.indexOf(t)>-1}}getSyscallList(t){const e=[];switch(typeof t){case"string":L.map((E=>{E[1]==t&&e.push(E[0])}));break;case"function":L.map((E=>{t.apply(null,E)&&e.push(E[0])}));break;case"object":Array.isArray(t)?t.map((t=>{switch(typeof t){case"string":L.map((E=>{E[1]==t&&e.push(E[0])}));break;case"number":L.map((E=>{E[0]==t&&e.push(E[0])}));break;case"object":L.map((E=>{null!=t.exec(E[1])&&e.push(E[0])}))}})):t instanceof RegExp?L.map((E=>{null!=t.exec(E[1])&&e.push(E[0])})):L.map((t=>{e.push(t[0])}));break;default:L.map((t=>{e.push(t[0])}))}return e}onSupervisorCall(t,e){const E=R[t];if(null==E)throw n.InterruptorGenericException.UNKNOW_SYSCALL(t);(e.hasOwnProperty("onEnter")||e.hasOwnProperty("onLeave"))&&(this.svc_hk[E[0]]=e)}onHypervisorCall(t,e){(e.hasOwnProperty("onEnter")||e.hasOwnProperty("onLeave"))&&(this.hvc_hk[t]=e)}setupBuiltinHook(){}locatePC(t){let e="",E=-1;const _=Process.findRangeByAddress(t.pc);return this.output.tid&&(E=Process.getCurrentThreadId(),e+=`[1;${this.output._tcolor}m [TID=${E}] `),this.output.module&&(null!=_?null!=_.file?null!=this.output.hidePackage?e+=`[${_.file.path.replace(this.output.hidePackage,"HIDDEN")} +${t.pc.sub(_.base)}]`:e+=`[${_.file.path} +${t.pc.sub(_.base)}]`:e+=`[${_.base} +${t.pc.sub(_.base)}]`:e+=`[<unknow>  lr=${t.lr}]`),this.output.lr&&(e+=`[lr=${t.lr}]`),e}startOnLoad(t,e=null){let E=this,_=null,n=null,T=null,s=null;if(Process.findModuleByName("linker64").enumerateSymbols().forEach((t=>{t.name.indexOf("do_dlopen")>=0?_=t.address:t.name.indexOf("call_constructor")>=0?n=t.address:t.name.indexOf("__dl__ZN11ScopedTrace3EndEv")>=0&&(T=t.address)})),this.emulator&&null!=T){const t=new NativeCallback((()=>1),"int",["int"]);Interceptor.replace(T,t)}Interceptor.attach(_,(function(e){const E=e[0].readUtf8String();null!=E&&null!=t.exec(E)&&(s=E)})),Interceptor.attach(n,{onEnter:function(){if(null==s)return;const t=s;if(console.warn("[LINKER] Loading '"+s+"'"),null==e||!e.hasOwnProperty("condition")||e.condition(s,this))if(console.warn("[INTERRUPTOR][STARTING] Module '"+s+"' is loading, tracer will start"),s=null,E.start(),null!=e&&e.hasOwnProperty("threshold")){if(console.log(E.loadCtr,e.threshold),!(E.loadCtr<e.threshold))return console.error("[INTERRUPTOR][STARTING] Threshold reached"),void(s=null);E.loadCtr++,E.onStart(t,this)}else E.onStart(t,this);else s=null}})}parseStruct(t,e,E,_="\n",n=!1){let s=" {"+_,r=null,o="",I=null,i=0;for(let n=0;n<e.length;n++){switch(r=e[n],r.t){case T.T.SHORT:I=E.add(i).readShort(),i+=2;break;case T.T.USHORT:I=E.add(i).readUShort(),i+=2;break;case T.T.INT32:I=E.add(i).readInt(),i+=4;break;case T.T.UINT32:I=E.add(i).readU32(),i+=4;break;case T.T.LONG:I=E.add(i).readLong(),i+=8;break;case T.T.ULONG:case T.T.POINTER64:I=E.add(i).readULong(),i+=8}o=this.parseValue(t,I,r,n),s+=` \t${r.n} = ${o},${_}`}return s+_+" }"}parseValue(t,e,E,_){let n="",s=null,r=null;if("string"==typeof E)n=e;else switch(s=e,E.f,E.l){case T.L.DFD:r=s.toInt32(),r>=0?n+=`${r}  `:r==I.AT_FDCWD?n+="AT_FDCWD ":n+=s+" ERR?";break;case T.L.MFD:return r=s.toInt32(),void(null!=t.dxc.FD&&r>=0?n+=`${r}  ${t.dxc.FD[s.toInt32()+""]}  `:(r&l.MAP_ANONYMOUS[0])==l.MAP_ANONYMOUS[0]?n+=`${r} IGNORED  `:n+=r+" ");case T.L.FD:r=s.toInt32(),null!=t.dxc.FD&&r>=0?n+=`${r}  ${t.dxc.FD[r+""]}  `:r==I.AT_FDCWD?n+="AT_FDCWD ":n+=s+" ";break;case T.L.SOCKFD:r=s.toInt32(),null!=t.dxc.SOCKFD&&r>=0&&(n+=`${r}  ${t.dxc.SOCKFD[r+""]}  `),n+=s+" ";break;case T.L.WD:r=s.toInt32(),null!=t.dxc.WD&&r>=0&&(n+=`${r}  ${t.dxc.WD[r+""]}  `),n+=s+" ";break;case T.L.VADDR:if(null==E.f){n+=t.dxcOpts[E]=s;break}case T.L.FLAG:if(null!=E.r)if(Array.isArray(E.r)){let e=[];E.r.map((E=>e.push(t[E]))),n+=`${E.f(s,e)}`}else n+=`${E.f(s,[t[E.r]])}`;else n+=`${E.f(s)}`;t.dxcOpts[_]=s;break;case T.L.DSTRUCT:if(null!=this.types&&null!=this.types[E.f]){null==t.dxcOpts._extra&&(t.dxcOpts._extra=[]),E.r=_,E.v=s,t.dxcOpts._extra.push(E),t.dxcOpts[_]=s,n+=`${s} ${!0===E.c?this.parseStruct(t,this.types[E.f].getStruct(),E.v,""):""}`;break}default:switch(E.t){case T.T.STRING:case T.T.CHAR_BUFFER:n+=t.dxcOpts[_]=s.readCString();break;case T.T.UINT32:default:n+=t.dxcOpts[_]=s}}return n}parseRawArgs(t,e,E){return"string"==typeof e?` ${e} = ${t["x"+E]}`:` ${e.n} = ${this.parseValue(t,t["x"+E],e,E)}`}traceSyscall(t,e=null){const E=c[t.x8.toInt32()];if(null==E)return void console.log(" ["+this.locatePC(t.pc)+"]   SVC ("+t.x8+") Syscall=<unknow>");t.dxcRET=E[4];let n="",T="";t.dxcOpts=[],E[3].map(((e,E)=>{T+=` ${this.parseRawArgs(t,e,E)} ,`})),n=`${E[1]} ( ${T.slice(0,-1)} ) `,this.output.flavor==_.InterruptorAgent.FLAVOR_DXC&&(t.log=this.formatLogLine(t,n,"SVC",t.x8))}formatLogLine(t,e,E,_){let n=this.locatePC(t);return n+=this.output.inst?`   ${E} :: ${_} `:"",n+=`   ${e}`,n}getSyscallError(t,e){for(let E=0;E<e.length;E++)if(t===-e[E][0])return t+" "+e[E][2];return t}traceSyscallRet(t,e=null){let E,_=t.dxcRET;if(null!=_)switch(_.l){case T.L.SIZE:_=this.output.dump_buff?"(len="+t.x0+") ":t.x0;break;case T.L.DFD:case T.L.FD:t.x0.toInt32()>=0?(null==t.dxc&&(t.dxc={FD:{}},t.dxcFD=t.dxc.FD={}),null==t.dxc.FD&&(t.dxcFD=t.dxc.FD={}),t.dxc.FD[t.x0.toInt32()+""]=t.dxcOpts[_.r],_="("+(T.L.DFD==_.l?"D":"")+"FD) "+t.x0):_=_.e?"(ERROR) "+this.getSyscallError(t.x0.toInt32(),_.e)+" ":"(ERROR) "+t.x0;break;case T.L.SOCKFD:t.x0.toInt32()>=0?(t.dxc.SOCKFD[t.x0.toInt32()+""]=t.dxcOpts.x1+","+t.dxcOpts.x2,_="(SOCKFD) "+t.x0):_=_.e?"(ERROR) "+this.getSyscallError(t.x0.toInt32(),_.e)+" ":"(ERROR) "+t.x0;case T.L.WD:t.x0.toInt32()>=0?(t.dxc.WD[t.x0.toInt32()+""]=t.dxcOpts[_.r],_="(WD) "+t.x0):_=_.e?"(ERROR) "+this.getSyscallError(t.x0.toInt32(),_.e)+" ":"(ERROR) "+t.x0;break;case T.L.FCNTL_RET:_=O.FCNTL_RET(t.x0,t.x1);break;case T.L.VADDR:null!=_.e&&(E=this.getSyscallError(t.x0,_.e),_=E!=t.x0?t.x0+" SUCCESS":E);break;default:null!=_.e?(E=this.getSyscallError(t.x0.toInt32(),_.e),_=0==E?t.x0.toUInt32().toString(16)+" SUCCESS":E):_=t.x0.toUInt32().toString(16)}else _=t.x0;console.log(t.log+"   > "+_),null!=t.dxcOpts&&t.dxcOpts._extra&&t.dxcOpts._extra.map((e=>{console.log(` ${e.n} = `+this.parseStruct(t,this.types[e.f].getStruct(),null!=e.v?e.v:t.dxcOpts[e.r]))}))}trace(t,e,E){const _=this;return 1==E.onLeave&&(t.putCallout((function(t){const e=t.x8.toInt32();if(null==t.dxc&&(t.dxc={FD:{}}),null!=a&&a(e))return;_.traceSyscallRet(t);const E=_.svc_hk[e];null!=E&&null!=E.onLeave&&E.onLeave(t)})),E.onLeave=null),"svc"===e.mnemonic&&(E.onLeave=1,t.putCallout((function(t){const e=t.x8.toInt32();if(null!=a&&a(e))return;null==t.dxc&&(t.dxc={FD:{}});const E=_.svc_hk[e];null!=E&&null!=E.onEnter&&E.onEnter(t),_.traceSyscall(t,E)}))),1}}e.LinuxArm64InterruptorAgent=F},530:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.LinuxArm64InterruptorFactory=void 0;const _=E(95),n=E(876),T=E(113),s=E(611);function r(t){const e={};for(let E in t)"object"==typeof t[E]&&null!==t[E]?e[E]=r(t[E]):e[E]=t[E];return e}class o extends T.AbstractInterruptorFactory{constructor(t=null){super(t),this.KAPI=s.KAPI,this.T=_.T,this.L=_.L,this.X=n.X}utils(){return{toScanPattern:T.AbstractInterruptorFactory.toScanPattern,toByteArray:T.AbstractInterruptorFactory.toByteArray,printBackTrace:T.AbstractInterruptorFactory.printBackTrace}}static _followThread(t){console.error("Deploying pthread_create hook"),o.HOOKED_PTHREAD_ROUTINE={},Interceptor.attach(Module.findExportByName("libc.so","pthread_create"),{onEnter:function(e){let E=e[2];null==E||o.HOOKED_PTHREAD_ROUTINE.hasOwnProperty(E)||(o.HOOKED_PTHREAD_ROUTINE[E+""]=!0,console.log("["+Process.findModuleByAddress(this.context.pc).name+"] Hooking routine : "+E+" "+JSON.stringify(o.HOOKED_PTHREAD_ROUTINE)),Interceptor.attach(E,{onEnter:function(e){const _=Process.findModuleByAddress(this.context.pc);console.log("------- [TID="+this.threadId+"]["+_.name+"]["+E+"] Thread routine start -------");const n=r(t);n.output._tcolor=T.AbstractInterruptorFactory._pickThreadColor();const I=new s.LinuxArm64InterruptorAgent(n,this._followThread);o.AGENTS.push(I),I.start(this.threadId)},onLeave:function(t){console.log("------- [TID="+this.threadId+"]["+E+"] Thread routine ended -------")}}))}})}newAgentTracer(t){return new s.LinuxArm64InterruptorAgent(t,o._followThread)}newStandaloneTracer(){return null}}e.LinuxArm64InterruptorFactory=o,o.HOOKED_PTHREAD_ROUTINE={},o.AGENTS=[]},981:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TYPES=void 0;const _=E(876),n=E(95),T=E(862);e.TYPES={__old_kernel_stat:new T.TypeDef([{t:n.T.ULONG,n:"st_dev",l:n.L.DEV},{t:n.T.UINT32,n:"__pad0"},{t:n.T.ULONG,n:"st_ino",l:n.L.INODE},{t:n.T.USHORT,n:"st_mode",l:n.L.FLAG,f:_.X.O_MODE},{t:n.T.USHORT,n:"st_nlink"},{t:n.T.USHORT,n:"st_uid",l:n.L.UID},{t:n.T.USHORT,n:"st_gid",l:n.L.GID},{t:n.T.ULONG,n:"st_rdev",l:n.L.DEV},{t:n.T.ULONG,n:"st_size",l:n.L.SIZE},{t:n.T.ULONG,n:"st_blksize",l:n.L.SIZE},{t:n.T.ULONG,n:"st_blocks",l:n.L.SIZE},{t:n.T.ULONG,n:"st_atime (last access)",l:n.L.TIME},{t:n.T.ULONG,n:"st_atime_nsec (last access)"},{t:n.T.ULONG,n:"st_mtime (modified)",l:n.L.TIME},{t:n.T.ULONG,n:"st_mtime_nsec (modified)"},{t:n.T.ULONG,n:"st_ctime (created)",l:n.L.TIME},{t:n.T.ULONG,n:"st_ctime_nsec (created)"}]),iovec:new T.TypeDef([{t:n.T.POINTER64,n:"iov_base"},{t:n.T.UINT32,n:"iov_len"}])}},113:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AbstractInterruptorFactory=void 0;const _=E(862);class n{constructor(t){this.opts=null,this.opts=t}static toScanPattern(t){return t.split("").map((t=>t.charCodeAt(0).toString(16))).join(" ")}static toByteArray(t,e=-1,E=0){let _=t.split("").map((t=>t.charCodeAt(0)));if(e>-1&&e>t.length)do{_.push(E)}while(_.length<e-1);return _}static printBackTrace(t){console.log(Thread.backtrace(t,Backtracer.ACCURATE).map(DebugSymbol.fromAddress).join("\n")+"\n")}static _pickThreadColor(){let t;do{t=Math.floor(20*Math.random())+31}while(n._tcolors.indexOf(t)>-1);return n._tcolors.push(t),t}getOptions(){return this.opts}newTypeDefinition(t){this.typeDefs={};for(let e in t)this.typeDefs[e]=new _.TypeDef(t[e]);return this.typeDefs}}e.AbstractInterruptorFactory=n,n._tcolors=[0]},204:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.InterruptorAgent=e.F=void 0;const _=E(770);let n=0;var T;!function(t){t[t.EXCLUDE_ANY=0]="EXCLUDE_ANY",t[t.INCLUDE_ANY=1]="INCLUDE_ANY",t[t.FILTER=2]="FILTER"}(T=e.F||(e.F={}));class s{constructor(t,e=null){this._tids=[],this.uid=0,this.ranges=new Map,this.modules=[],this.pid=-1,this.tid=-1,this.followFork=!1,this.followThread=!1,this.coverage=null,this.exclude=null,this.include=null,this.moduleFilter=null,this.debug=!1,this.types=null,this._policy={},this._scope={},this.onStart=()=>{},this.output={_tcolor:0,flavor:"dxc",tid:!0,pid:!1,module:!0,dump_buff:!0,hide:null,highlight:{syscalls:[]}},this._do_ft=null,this.uid=n++,this.emulator=!1,this._do_ft=e,this.parseOptions(t)}parseOptions(t){for(let e in t)switch(e){case"types":this.types=t.types;break;case"emulator":this.emulator=t.emulator;break;case"pid":this.pid=t.pid;break;case"tid":this.tid=t.tid;break;case"coverage":this.coverage=_.CoverageAgent.from(t.coverage,this);break;case"followFork":this.followFork="boolean"==typeof t.followFork&&t.followFork;break;case"followThread":this.followThread="boolean"==typeof t.followThread&&t.followThread,this.followThread||(this._do_ft=null);break;case"output":for(const e in t.output)this.output[e]=t.output[e];break;case"include":case"exclude":this._setupFilters(e,t[e]);break;case"moduleFilter":this.moduleFilter=t.moduleFilter;break;case"onStart":this.onStart=t.onStart}}_setupDelegateFilters(t,e){}_buildScope(){if(this._scope={modules:null,syscalls:null},null!=this.include)for(let t in this.include)this._policy[t]=T.EXCLUDE_ANY,this._scope[t]=this.include[t];else for(let t in this._scope)this._policy[t]=T.INCLUDE_ANY;if(null!=this.exclude)for(let t in this.exclude)this._scope.hasOwnProperty(t)&&null!=this._scope[t]&&this._policy[t]==T.EXCLUDE_ANY?(this._policy[t]=T.FILTER,this._scope[t]={i:this._scope[t],e:this.exclude[t]}):(this._policy[t]=T.INCLUDE_ANY,this._scope[t]=this.exclude[t]);this._updateScope(this._scope,this._policy)}_updateScope(t,e){}_setupFilters(t,e){null==this[t]&&(this[t]={});const E=this[t];for(const t in e)for(const t in e)switch(t){case"modules":E.modules=e.modules;break;case"syscalls":E.syscalls=e.syscalls}this._setupDelegateFilters(t,e)}getModuleList(t,e=null,E=[]){if(null==t)return[];const _=null==e?Process.enumerateModules():e,n=E;switch(typeof t){case"string":_.map((e=>{e.name==t&&n.push(e.name)}));break;case"function":_.map((e=>{t.apply(null,e)&&n.push(e.name)}));break;case"object":Array.isArray(t)?t.map((t=>{n.concat(this.getModuleList(t,_,n))})):t instanceof RegExp&&_.map((e=>{null!=t.exec(e.name)&&n.push(e.name)}))}return n}_filterModuleScope(){let t,e;if(this._scope.hasOwnProperty("modules")&&null!=this._scope.modules)if(this._scope.hasOwnProperty("modules")||(this._policy.modules=T.INCLUDE_ANY),this._policy.modules==T.EXCLUDE_ANY)t=this.getModuleList(this._scope.modules),e=new ModuleMap((e=>-1!=t.indexOf(e.name)||(Stalker.exclude(e),!1)));else if(this._policy.modules==T.INCLUDE_ANY)t=this.getModuleList(this._scope.modules),e=new ModuleMap((e=>!(t.indexOf(e.name)>=-1&&(Stalker.exclude(e),1))));else{t=null==this._scope.modules||null==this._scope.modules.i?Process.enumerateModules().map((t=>t.name)):this.getModuleList(this._scope.modules.i);const E=this.getModuleList(this._scope.modules.e);t=t.filter((t=>-1==E.indexOf(t))),e=new ModuleMap((e=>-1!=t.indexOf(e.name)||(Stalker.exclude(e),!1)))}else this._policy.modules=T.INCLUDE_ANY,e=new ModuleMap;this.modules=e.values();for(const t of this.modules){const e=t.enumerateRanges("--x");this.ranges.set(t.base,e)}}isTrackCoverage(){return null!=this.coverage&&this.coverage.enabled}processBbsCoverage(t){t.forEach((t=>{this.coverage.processStalkerEvent(t)}))}trace(t,e,E){return 1}startOnLoad(t,e=null){return new Error("Dynamic loading is not supported")}start(t=-1){this._buildScope(),this.debug&&(this._scope.modules.length>0&&console.log(this._scope),this._scope.syscalls.length>0&&console.log(this._scope));let e=t>-1?t:null;if(null===e&&(e=this.tid>-1?this.tid:Process.getCurrentThreadId()),this._tids.indexOf(e)>-1)return void console.warn("[INTERRUPTOR][STARTING] Thread already tracked");console.warn("[INTERRUPTOR][STARTING] Tracing thread "+e+" ["+this._tids.join(",")+"]"),this._tids.push(e);const E=this;let _={};console.log("[STARTING TRACE] UID="+this.uid+" Thread "+e),this._filterModuleScope();const n={events:{call:!0},transform:function(t){let e,n=0,T=_;for(T.hookAfter=null;null!==(e=t.next());)n=1,n=E.trace(t,e,T),-1!=n&&n>0&&t.keep()}};this.isTrackCoverage()&&(console.log("TRACK COVERAGE"),n.events.compile=!0,n.onReceive=t=>{this.processBbsCoverage(Stalker.parse(t,{annotate:!0,stringify:!1}))},this.coverage.initOutput()),Stalker.follow(e,n),null!==this._do_ft&&this._do_ft(this)}}e.InterruptorAgent=s,s.FLAVOR_DXC="dxc",s.FLAVOR_STRACE="strace"},451:(t,e)=>{var E;Object.defineProperty(e,"__esModule",{value:!0}),e.InterruptorGenericException=e.MonitoredError=e.ErrorCode=void 0,function(t){t[t.GENERIC=1e3]="GENERIC"}(E=e.ErrorCode||(e.ErrorCode={}));class _ extends Error{constructor(t,e,E=null,_=null){super(e),this.cmp=t,this.code=E,this.extra=_}getCode(){return this.code}getExtra(){return this.extra}toString(){return`[${this.cmp}] [#${null!=this.code?this.code:"<null>"} ${this.message}`}toObject(t=!1){return{cmp:this.cmp,code:this.code,msg:this.message,extra:t?this.extra:null}}}e.MonitoredError=_;class n extends _{constructor(t,e=null,E=null){super("GLOBAL",t,e,E)}}e.InterruptorGenericException=n,n.ERR={INVALID_PID:E.GENERIC+101,INVALID_TID:E.GENERIC+102,UKNOW_SYSCALL:E.GENERIC+103},n.INVALID_PID=()=>new n(" PID is invalid ",n.ERR.INVALID_PID),n.INVALID_TID=()=>new n(" Thread ID is invalid ",n.ERR.INVALID_TID),n.UNKNOW_SYSCALL=t=>new n(" Syscall '"+t+"' not exists ",n.ERR.UKNOW_SYSCALL)},862:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TypeDef=void 0;const _=E(122);e.TypeDef=class{constructor(t=[],e=!1){this.t=[],t.map((t=>{this.t.push(e?t:new _.TypedData(t))}))}getStruct(){return this.t}}},122:(t,e,E)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TypedData=e.VAL_TYPE=void 0;const _=E(95);var n;!function(t){t[t.CONSTANT=0]="CONSTANT",t[t.INOUT=1]="INOUT",t[t.OUTPUT=2]="OUTPUT"}(n=e.VAL_TYPE||(e.VAL_TYPE={}));class T{constructor(t=null){if(this.t=_.T.UINT32,this.n=null,this.r=-1,this.c=!1,null!=t)for(let e in t)this[e]=t[e]}static from(t){return new T(t)}static buffer(t,e=-1){return null}out(){return this.copy().update({v:n.OUTPUT})}update(t){for(let e in t)this[e]=t[e];return this}copy(t=null){let e=new T(this);return null!=t&&(e.n=t),e}asReturn(t=[]){let e=new T(this);return e.e=t,e}}e.TypedData=T},95:(t,e)=>{var E,_;Object.defineProperty(e,"__esModule",{value:!0}),e.T=e.L=void 0,(_=e.L||(e.L={}))[_.PATH=0]="PATH",_[_.SIZE=1]="SIZE",_[_.FD=2]="FD",_[_.DFD=3]="DFD",_[_.FLAG=4]="FLAG",_[_.ATTRMODE=5]="ATTRMODE",_[_.O_FLAGS=6]="O_FLAGS",_[_.VADDR=7]="VADDR",_[_.MPROT=8]="MPROT",_[_.OUTPUT_BUFFER=9]="OUTPUT_BUFFER",_[_.PID=10]="PID",_[_.ERR=11]="ERR",_[_.SIG=12]="SIG",_[_.XATTR_LIST=13]="XATTR_LIST",_[_.F_=14]="F_",_[_.MFD=15]="MFD",_[_.UID=16]="UID",_[_.GID=17]="GID",_[_.UTSNAME=18]="UTSNAME",_[_.FCNTL_ARGS=19]="FCNTL_ARGS",_[_.FCNTL_RET=20]="FCNTL_RET",_[_.TIME=21]="TIME",_[_.INODE=22]="INODE",_[_.DEV=23]="DEV",_[_.DSTRUCT=24]="DSTRUCT",_[_.EPFD=25]="EPFD",_[_.WD=26]="WD",_[_.PIPEFD=27]="PIPEFD",_[_.SOCKFD=28]="SOCKFD",_[_.BUFFER=29]="BUFFER",_[_.PKEY=30]="PKEY",_[_.IDSTRUCT=31]="IDSTRUCT",_[_.FUTEX=32]="FUTEX",_[_.TIMER=33]="TIMER",_[_.MQDES=34]="MQDES",(E=e.T||(e.T={}))[E.INT32=0]="INT32",E[E.UINT32=1]="UINT32",E[E.LONG=2]="LONG",E[E.ULONG=3]="ULONG",E[E.SHORT=4]="SHORT",E[E.USHORT=5]="USHORT",E[E.FLOAT=6]="FLOAT",E[E.DOUBLE=7]="DOUBLE",E[E.CHAR=8]="CHAR",E[E.STRING=9]="STRING",E[E.CHAR_BUFFER=10]="CHAR_BUFFER",E[E.POINTER32=11]="POINTER32",E[E.POINTER64=12]="POINTER64",E[E.STRUCT=13]="STRUCT"},770:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CoverageAgent=void 0;class E{constructor(t){this.enabled=!1,this.interruptor=null,this.flavor="dr",this.fname=null,this.events=new Map,this.threads=[],this.onCoverage=()=>{},this.out=null,this.stops={count:1/0},this.interruptor=t}static from(t,e){const _=new E(e);for(let e in t)switch(e){case"fname":_.fname=t.fname;break;case"enabled":_.enabled=t.enabled;break;case"format":_.flavor=t.flavor;break;case"stops":_.stops=t.stops;break;case"onCoverage":_.onCoverage=t.onCoverage}return _}initOutput(){null!=this.fname&&(this.out=new File(this.fname,"wb+"),console.log("[COVERAGE] Create file : "+this.fname))}emit(t){if(this.onCoverage(t),null!=this.out)try{this.out.write(t)}catch(t){}}processStalkerEvent(t){if(t[E.COMPILE_EVENT_TYPE_INDEX].toString()===E.COMPILE_EVENT_TYPE.toString()){const e=t[E.COMPILE_EVENT_START_INDEX],_=t[E.COMPILE_EVENT_END_INDEX];this.events.set(e,_),this.isStopReached()&&this.stop()}}isStopReached(){return this.events.size>=this.stops.count}isStepReached(){return this.stops.step>-1&&this.events.size%this.stops.step==0}static convertString(t){const e=new ArrayBuffer(t.length),E=new Uint8Array(e);for(let e=0;e<t.length;e+=1)E[e]=t.charCodeAt(e);return e}static padStart(t,e,E){const _=e-t.length,n=_%E.length,T=_-n/E.length;return E.repeat(T)+E.substring(0,n)+t}static write16le(t,e){let _;for(_=0;_<E.BYTES_PER_U16;_+=1){const n=e>>E.BITS_PER_BYTE*_&E.BYTE_MASK;t.add(_).writeU8(n)}}static write32le(t,e){let _;for(_=0;_<E.BYTES_PER_U32;_+=1){const n=e>>E.BITS_PER_BYTE*_&E.BYTE_MASK;t.add(_).writeU8(n)}}stop(){const t=Array.from(this.events.entries()).map((([t,e])=>this.convertEvent(t,e))).filter((t=>void 0!==t));this.emitHeader(t.length);for(const e of t)void 0!==e&&this.emitEvent(e);null!=this.out&&(this.out.close(),this.out=null,console.warn("[COVERAGE] Output file "+this.fname+" closed !"))}convertEvent(t,e){for(let E=0;E<this.interruptor.modules.length;E+=1){const _=this.interruptor.modules[E].base,n=this.interruptor.modules[E].size,T=_.add(n);if(t.compare(_)<0)continue;if(e.compare(T)>0)continue;const s=t.sub(_).toInt32(),r=e.sub(t).toInt32();if(!this.isInRange(_,t,e))return;return{length:r,moduleId:E,offset:s}}}emitEvent(t){const e=Memory.alloc(E.EVENT_TOTAL_SIZE);E.write32le(e.add(E.EVENT_START_OFFSET),t.offset),E.write16le(e.add(E.EVENT_SIZE_OFFSET),t.length),E.write16le(e.add(E.EVENT_MODULE_OFFSET),t.moduleId);const _=ArrayBuffer.wrap(e,E.EVENT_TOTAL_SIZE);this.emit(_)}emitHeader(t){this.emit(E.convertString("DRCOV VERSION: 2\n")),this.emit(E.convertString("DRCOV FLAVOR: frida\n")),this.emit(E.convertString(`Module Table: version 2, count ${this.interruptor.modules.length}\n`)),this.emit(E.convertString("Columns: id, base, end, entry, checksum, timestamp, path\n")),this.interruptor.modules.forEach(((t,e)=>{this.emitModule(e,t)})),this.emit(E.convertString(`BB Table: ${t} bbs\n`))}emitModule(t,e){const _=E.padStart(t.toString(),E.COLUMN_WIDTH_MODULE_ID," ");let n=e.base.toString(16);n=E.padStart(n,E.COLUMN_WIDTH_MODULE_BASE,"0");let T=e.base.add(e.size).toString(16);T=E.padStart(T,E.COLUMN_WIDTH_MODULE_END,"0");const s=[_,n,T,"0".repeat(E.COLUMN_WIDTH_MODULE_ENTRY),"0".repeat(E.COLUMN_WIDTH_MODULE_CHECKSUM),"0".repeat(E.COLUMN_WIDTH_MODULE_TIMESTAMP),e.path].join(", ");this.emit(E.convertString(`${s}\n`))}isInRange(t,e,E){const _=this.interruptor.ranges.get(t);if(void 0===_)return!1;for(const t of _){if(E.compare(t.base)<0)continue;const _=t.base.add(t.size);if(!(e.compare(_)>=0))return!0}return!1}}e.CoverageAgent=E,E.BITS_PER_BYTE=8,E.BYTE_MASK=255,E.BYTES_PER_U16=2,E.BYTES_PER_U32=4,E.COLUMN_WIDTH_MODULE_BASE=16,E.COLUMN_WIDTH_MODULE_CHECKSUM=16,E.COLUMN_WIDTH_MODULE_END=16,E.COLUMN_WIDTH_MODULE_ENTRY=16,E.COLUMN_WIDTH_MODULE_ID=3,E.COLUMN_WIDTH_MODULE_TIMESTAMP=8,E.COMPILE_EVENT_END_INDEX=2,E.COMPILE_EVENT_START_INDEX=1,E.COMPILE_EVENT_TYPE="compile",E.COMPILE_EVENT_TYPE_INDEX=0,E.EVENT_MODULE_OFFSET=6,E.EVENT_SIZE_OFFSET=4,E.EVENT_START_OFFSET=0,E.EVENT_TOTAL_SIZE=8}},e={};function E(_){var n=e[_];if(void 0!==n)return n.exports;var T=e[_]={exports:{}};return t[_](T,T.exports,E),T.exports}var _={};(()=>{var t=_;Object.defineProperty(t,"__esModule",{value:!0}),t.target=void 0;const e=E(530);t.target={LinuxArm64:function(t){return new e.LinuxArm64InterruptorFactory(t)}}})();var n=exports;for(var T in _)n[T]=_[T];_.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
},{}]},{},[1])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy5udm0vdmVyc2lvbnMvbm9kZS92MTYuMTEuMS9saWIvbm9kZV9tb2R1bGVzL2ZyaWRhLWNvbXBpbGUvbm9kZV9tb2R1bGVzL2Jyb3dzZXItcGFjay9fcHJlbHVkZS5qcyIsImFuZHJvaWQtYXJtNjQtc3RyYWNlLmpzIiwiLi4vZGlzdC9hbmRyb2lkLWFybTY0LXN0cmFjZS5taW4uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIn0=
Share this script:
Twitter LinkedIn

Comments

Login or Sign up to leave a comment.
Loading comments...