strace_types

package
v0.0.0-...-95e5f6d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2019 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OR = iota
	AND
	XOR
	NOT
	LSHIFT
	RSHIFT
	ONESCOMP
	TIMES
	LAND
	LOR
	LEQUAL
)

Variables

View Source
var (
	Strace_ExpressionType = "Expression Type"
	Strace_CallType       = "Call Type"
	Strace_IntType        = "Int Type"
	Strace_FieldType      = "Field Type"
	Strace_StructType     = "Struct Type"
	Strace_ArrayType      = "Array Type"
	Strace_PointerType    = "Pointer Type"
	Strace_BufferType     = "Buffer Type"
	Strace_FlagType       = "Flag Type"
	Strace_Ipv4Type       = "Ipv4 Type"
)
View Source
var (
	EnabledSyscalls = map[string]bool{}

	Unsupported = map[string]bool{
		"brk": true,

		"":       true,
		"execve": true,
		"access": true,

		"gettimeofday": true,
		"kill":         true,

		"arch_prctl": true,

		"getcwd":        true,
		"setdomainname": true,
		"reboot":        true,
		"getppid":       true,
		"umask":         true,
		"adjtimex":      true,
		"nanosleep":     true,
		"wait4":         true,
		"wait":          true,
		"futex":         true,

		"rt_sigprocmask":  true,
		"rt_sigaction":    true,
		"rt_sigtimedwait": true,
		"rt_sigreturn":    true,
		"rt_sigqueueinfo": true,
		"rt_sigsuspend":   true,
		"tgkill":          true,
		"sysfs":           true,

		"clone":                  true,
		"newfstatat":             true,
		"getsid":                 true,
		"getcpu":                 true,
		"sched_get_priority_min": true,
		"sched_get_priority_max": true,
	}

	Accept_labels = map[string]string{
		"fd":            "",
		"sock":          "",
		"sock_alg":      "$alg",
		"sock_in":       "$inet",
		"sock_in6":      "$inet6",
		"sock_netrom":   "$netrom",
		"sock_nfc_llcp": "$nfc_llcp",
		"sock_sctp":     "$sctp",
		"sock_unix":     "$unix",
		"sock_netlink":  "$inet6",
	}

	Bind_labels = map[string]string{
		"fd":             "",
		"sock":           "",
		"sock_alg":       "$alg",
		"sock_bt_hci":    "$bt_hci",
		"sock_bt_l2cap":  "$bt_l2cap",
		"sock_bt_rfcomm": "$bt_rfcomm",
		"sock_bt_sco":    "$bt_sco",
		"sock_in":        "$inet",
		"sock_in6":       "$inet6",
		"sock_netlink":   "$netlink",
		"sock_netrom":    "$netrom",
		"sock_nfc_llcp":  "$nfc_llcp",
		"sock_sctp":      "$sctp",
		"sock_unix":      "$unix",
		"AF_INET":        "$inet",
		"AF_INET6":       "$inet6",
		"sock_packet":    "$packet",
	}

	Connect_labels = map[string]string{
		"fd":             "",
		"sock":           "",
		"sock_bt_l2cap":  "$bt_l2cap",
		"sock_bt_rfcomm": "$bt_rfcomm",
		"sock_bt_sco":    "$bt_sco",
		"sock_in":        "$inet",
		"sock_in6":       "$inet6",
		"sock_netlink":   "$netlink",
		"sock_netrom":    "$netrom",
		"sock_nfc_llcp":  "$nfc_llcp",
		"sock_nfc_raw":   "$nfc_raw",
		"sock_sctp":      "$sctp",
		"sock_unix":      "$unix",
		"AF_INET":        "$inet",
		"AF_INET6":       "$inet6",
	}

	Bpf_labels = map[string]string{
		"BPF_PROG_LOAD":        "$PROG_LOAD",
		"BPF_MAP_CREATE":       "$MAP_CREATE",
		"BPF_MAP_UPDATE_ELEM":  "$MAP_UPDATE_ELEM",
		"BPF_MAP_LOOKUP_ELEM":  "$MAP_LOOKUP_ELEM",
		"BPF_MAP_DELETE_ELEM":  "$MAP_DELETE_ELEM",
		"BPF_MAP_GET_NEXT_KEY": "$MAP_GET_NEXT_KEY",
	}

	Setsockopt_labels = map[Pair]string{}/* 157 elements not displayed */

	Getsockopt_labels = map[Pair]string{}/* 155 elements not displayed */

	Getsockname_labels = map[string]string{
		"fd":           "",
		"sock":         "",
		"sock_in":      "$inet",
		"sock_in6":     "$inet6",
		"sock_netlink": "$netlink",
		"sock_netrom":  "$netrom",
		"sock_sctp":    "$sctp",
		"sock_unix":    "$unix",
	}

	SocketLevel_map = map[string]string{
		"SOL_SOCKET": "SOL_SOCKET",
		"SOL_IPV6":   "IPPROTO_IPV6",
		"SOL_ICMPV6": "SOL_ICMPV6",
		"SOL_TCP":    "IPPROTO_TCP",
		"SOL_RAW":    "IPPROTO_ICMP",
		"SOL_PACKET": "SOL_PACKET",
		"SOL_IP":     "IPPROTO_IP",
		"SOL_SCTP":   "SOL_SCTP",
	}

	Sendto_labels = map[string]string{
		"fd":           "",
		"sock":         "",
		"sock_in":      "$inet",
		"sock_in6":     "$inet6",
		"sock_sctp":    "$sctp",
		"sock_unix":    "$unix",
		"sock_netlink": "$inet6",
	}

	Sendmsg_labels = map[string]string{
		"fd":            "",
		"sock":          "",
		"sock_in6":      "",
		"sock_in":       "",
		"sock_sctp":     "$sctp",
		"sock_unix":     "$unix",
		"sock_algconn":  "$alg",
		"sock_kcm":      "$kcm",
		"sock_netlink":  "$netlink",
		"sock_netrom":   "$netrom",
		"sock_nfc_llcp": "$nfc_llcp",
	}

	Recvfrom_labels = map[string]string{
		"fd":           "",
		"sock":         "",
		"sock_in":      "$inet",
		"sock_in6":     "$inet6",
		"sock_sctp":    "$sctp",
		"sock_unix":    "$unix",
		"sock_netlink": "$inet6",
		"sock_packet":  "$packet",
	}

	Ioctl_map = map[string]string{
		"FIONBIO":            "$int_in",
		"FIOASYNC":           "$int_in",
		"FS_IOC_GETFLAGS":    "$int_out",
		"FS_IOC_SETFLAGS":    "$int_in",
		"SIOCGIFINDEX":       "$sock_SIOCGIFINDEX",
		"SIOCGIFNAME":        "$sock_ifreq",
		"SIOCGIFCONF":        "$sock_SIOCGIFCONF",
		"SIOCSIFLINK":        "$sock_ifreq",
		"SIOCGIFFLAGS":       "$sock_ifreq",
		"SIOCSIFFLAGS":       "$sock_ifreq",
		"SIOCGIFADDR":        "$sock_ifreq",
		"SIOCSIFADDR":        "$sock_ifreq",
		"SIOCGIFDSTADDR":     "$sock_ifreq",
		"SIOCSIFDSTADDR":     "$sock_ifreq",
		"SIOCGIFBRDADDR":     "$sock_ifreq",
		"SIOCSIFBRDADDR":     "$sock_ifreq",
		"SIOCGIFNETMASK":     "$sock_ifreq",
		"SIOCSIFNETMASK":     "$sock_ifreq",
		"SIOCGIFMETRIC":      "$sock_ifreq",
		"SIOCSIFMETRIC":      "$sock_ifreq",
		"SIOCGIFMEM":         "$sock_ifreq",
		"SIOCSIFMEM":         "$sock_ifreq",
		"SIOCGIFMTU":         "$sock_ifreq",
		"SIOCSIFMTU":         "$sock_ifreq",
		"SIOCSIFNAME":        "$sock_ifreq",
		"SIOCSIFHWADDR":      "$sock_ifreq",
		"SIOCGIFENCAP":       "$sock_ifreq",
		"SIOCSIFENCAP":       "$sock_ifreq",
		"SIOCGIFSLAVE":       "$sock_ifreq",
		"SIOCSIFSLAVE":       "$sock_ifreq",
		"SIOCADDMULTI":       "$sock_ifreq",
		"SIOCDELMULTI":       "$sock_ifreq",
		"SIOCSIFPFLAGS":      "$sock_ifreq",
		"SIOCGIFPFLAGS":      "$sock_ifreq",
		"SIOCDIFADDR":        "$sock_ifreq",
		"SIOCSIFHWBROADCAST": "$sock_ifreq",
		"SIOCGIFCOUNT":       "$sock_ifreq",
		"SIOCGIFTXQLEN":      "$sock_ifreq",
		"SIOCSIFTXQLEN":      "$sock_ifreq",
		"SIOCETHTOOL":        "$sock_ifreq",
		"SIOCGMIIPHY":        "$sock_ifreq",
		"SIOCGMIIREG":        "$sock_ifreq",
		"SIOCSMIIREG":        "$sock_ifreq",
		"SIOCWANDEV":         "$sock_ifreq",
	}

	Socket_labels_pair = map[Pair]string{
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_DGRAM"}:   "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_STREAM"}:  "$inet",
		Pair{"AF_INET", "SOCK_RAW"}:     "$inet_icmp_raw",
		Pair{"AF_PACKET", "SOCK_RAW"}:   "$packet",
		Pair{"AF_PACKET", "SOCK_DGRAM"}: "$packet",
		Pair{"AF_INET", "SOL_SCTP"}:     "$inet_sctp",
	}
	Socket_labels = map[string]string{
		"AF_INET":    "$inet",
		"AF_INET6":   "$inet6",
		"AF_KCM":     "$kcm",
		"AF_UNIX":    "$unix",
		"AF_NETLINK": "$netlink",
		"AF_PACKET":  "$packet",
	}

	Fcntl_labels = map[string]string{
		"F_DUPFD":         "$dupfd",
		"F_DUPFD_CLOEXEC": "$dupfd",
		"F_GETFD":         "$getflags",
		"F_GETFL":         "$getflags",
		"F_GETSIG":        "$getflags",
		"F_GETLEASE":      "$getflags",
		"F_GETPIPE_SZ":    "$getflags",
		"F_GET_SEALS":     "$getflags",
		"F_SETFD":         "$setflags",
		"F_SETFL":         "$setstatus",
		"F_SETLK":         "$lock",
		"F_SETLKW":        "$lock",
		"F_GETLK":         "$lock",
		"F_GETOWN":        "$getown",
		"F_SETOWN":        "$setown",
		"F_GETOWN_EX":     "$getownex",
		"F_SETOWN_EX":     "$setownex",
		"F_SETSIG":        "$setsig",
		"F_SETLEASE":      "$setlease",
		"DN_MULTISHOT":    "$notify",
		"DN_ACCESS":       "$notify",
		"DN_MODIFY":       "$notify",
		"DN_CREATE":       "$notify",
		"DN_DELETE":       "$notify",
		"DN_RENAME":       "$notify",
		"DN_ATTRIB":       "$notify",
		"F_SETPIPE_SZ":    "$setpipe",
		"F_ADD_SEALS":     "$addseals",
	}

	Keyctl_labels = map[string]string{
		"KEYCTL_GET_KEYRING_ID":       "$get_keyring_id",
		"KEYCTL_JOIN_SESSION_KEYRING": "$join",
		"KEYCTL_UPDATE":               "$update",
		"KEYCTL_REVOKE":               "$revoke",
		"KEYCTL_DESCRIBE":             "$describe",
		"KEYCTL_CLEAR":                "$clear",
		"KEYCTL_LINK":                 "$link",
		"KEYCTL_UNLINK":               "$unlink",
		"KEYCTL_SEARCH":               "$search",
		"KEYCTL_READ":                 "$read",
		"KEYCTL_CHOWN":                "$chown",
		"KEYCTL_SETPERM":              "$setperm",
		"KEYCTL_INSTANTIATE":          "$instantiate",
		"KEYCTL_NEGATE":               "$negate",
		"KEYCTL_SET_REQKEY_KEYRING":   "$set_reqkey_keyring",
		"KEYCTL_SET_TIMEOUT":          "$set_timeout",
		"KEYCTL_ASSUME_AUTHORITY":     "$assume_authority",
		"KEYCTL_GET_SECURITY":         "$get_security",
		"KEYCTL_SESSION_TO_PARENT":    "$session_to_parent",
		"KEYCTL_REJECT":               "$reject",
		"KEYCTL_INSTANTIATE_IOV":      "$instantiate_iov",
		"KEYCTL_INVALIDATE":           "$invalidate",
		"KEYCTL_GET_PERSISTENT":       "$get_persistent",
	}

	Prctl_labels = map[string]string{
		"PR_GET_DUMPABLE":             "$void",
		"PR_GET_KEEPCAPS":             "$void",
		"PR_GET_NO_NEW_PRIVS":         "$void",
		"PR_GET_SECCOMP":              "$void",
		"PR_GET_SECUREBITS":           "$void",
		"PR_GET_TIMERSLACK":           "$void",
		"PR_GET_TIMING":               "$void",
		"PR_TASK_PERF_EVENTS_DISABLE": "$void",
		"PR_TASK_PERF_EVENTS_ENABLE":  "$void",
		"PR_MCE_KILL_GE":              "$void",
		"PR_CAPBSET_READ":             "$intptr",
		"PR_CAPBSET_DROP":             "$intptr",
		"PR_SET_CHILD_SUBREAPER":      "$intptr",
		"PR_SET_DUMPABLE":             "$intptr",
		"PR_SET_FPEMU":                "$intptr",
		"PR_SET_KEEPCAPS":             "$intptr",
		"PR_SET_NO_NEW_PRIVS":         "$intptr",
		"PR_SET_PDEATHSIG":            "$intptr",
		"PR_SET_SECUREBITS":           "$intptr",
		"PR_SET_TIMERSLACK":           "$intptr",
		"PR_SET_TIMING":               "$intptr",
		"PR_SET_TSC":                  "$intptr",
		"PR_SET_UNALIGN":              "$intptr",
		"PR_MCE_KILL":                 "$intptr",
		"PR_GET_CHILD_SUBREAPER":      "$getreaper",
		"PR_GET_ENDIAN":               "$getreaper",
		"PR_GET_FPEMU":                "$getreaper",
		"PR_GET_FPEXC":                "$getreaper",
		"PR_GET_PDEATHSIG":            "$getreaper",
		"PR_GET_TID_ADDRESS":          "$getreaper",
		"PR_GET_TSC":                  "$getreaper",
		"PR_GET_UNALIGN":              "$getreaper",
		"PR_SET_ENDIAN":               "$setendian",
		"PR_SET_FPEXC":                "$setfpexc",
		"PR_SET_NAME":                 "$setname",
		"PR_GET_NAME":                 "$getname",
		"PR_SET_PTRACER":              "$setptracer",
	}

	Special_Consts = map[string]uint64{}/* 189 elements not displayed */

)

Functions

func ConstArg

func ConstArg(t prog.Type, v uint64) prog.Arg

func DataArg

func DataArg(t prog.Type, data []byte) prog.Arg

func GenBuff

func GenBuff(bufVal []byte, size uint64) []byte

func GetSyzType

func GetSyzType(typ prog.Type) string

func GroupArg

func GroupArg(t prog.Type, inner []prog.Arg) prog.Arg

func PointerArg

func PointerArg(t prog.Type, address uint64, vmaSize uint64, res prog.Arg) prog.Arg

func ResultArg

func ResultArg(t prog.Type, r *prog.ResultArg, v uint64) prog.Arg

func ReturnArg

func ReturnArg(t prog.Type) *prog.ResultArg

func UnionArg

func UnionArg(t prog.Type, opt prog.Arg) prog.Arg

Types

type ArrayType

type ArrayType struct {
	Elems []Type
	Len   int
}

func NewArrayType

func NewArrayType(elems []Type) (typ *ArrayType)

func (*ArrayType) Eval

func (a *ArrayType) Eval(target *prog.Target) uint64

func (*ArrayType) Name

func (a *ArrayType) Name() string

func (*ArrayType) String

func (a *ArrayType) String() string

type Binop

type Binop struct {
	Operand1 *Expression
	Op       Operation
	Operand2 *Expression
}

func NewBinop

func NewBinop(operand1 Type, op Operation, operand2 Type) (b *Binop)

func (*Binop) Eval

func (b *Binop) Eval(target *prog.Target) uint64

func (*Binop) Name

func (b *Binop) Name() string

func (*Binop) String

func (b *Binop) String() string

type BufferType

type BufferType struct {
	Val string
}

func NewBufferType

func NewBufferType(val string) (typ *BufferType)

func (*BufferType) Eval

func (b *BufferType) Eval(target *prog.Target) uint64

func (*BufferType) Name

func (b *BufferType) Name() string

func (*BufferType) String

func (b *BufferType) String() string

type Call

type Call struct {
	CallName string
	Args     []Type
}

func NewCallType

func NewCallType(name string, args []Type) (typ *Call)

func (*Call) Eval

func (c *Call) Eval(target *prog.Target) uint64

func (*Call) Name

func (c *Call) Name() string

func (*Call) String

func (c *Call) String() string

type DynamicType

type DynamicType struct {
	BeforeCall *Expression
	AfterCall  *Expression
}

func NewDynamicType

func NewDynamicType(before, after Type) *DynamicType

func (*DynamicType) Eval

func (d *DynamicType) Eval(target *prog.Target) uint64

func (*DynamicType) Name

func (d *DynamicType) Name() string

func (*DynamicType) String

func (d *DynamicType) String() string

type Expression

type Expression struct {
	BinOp     *Binop
	Unop      *Unop
	FlagType  *FlagType
	FlagsType Flags
	IntType   *IntType
	MacroType *Macro
	SetType   *Set
	IntsType  Ints
}

func NewExpression

func NewExpression(typ Type) (exp *Expression)

func (*Expression) Eval

func (e *Expression) Eval(target *prog.Target) uint64

func (*Expression) Name

func (r *Expression) Name() string

func (*Expression) String

func (r *Expression) String() string

type Field

type Field struct {
	Key string
	Val Type
}

func NewField

func NewField(key string, val Type) (f *Field)

func (*Field) Eval

func (f *Field) Eval(target *prog.Target) uint64

func (*Field) Name

func (f *Field) Name() string

func (*Field) String

func (f *Field) String() string

type FlagType

type FlagType struct {
	Val string
}

func NewFlagType

func NewFlagType(val string) (typ *FlagType)

func (*FlagType) Eval

func (f *FlagType) Eval(target *prog.Target) uint64

func (*FlagType) Name

func (f *FlagType) Name() string

func (*FlagType) String

func (f *FlagType) String() string

type Flags

type Flags []*FlagType

func (Flags) Eval

func (f Flags) Eval(target *prog.Target) uint64

func (Flags) Name

func (f Flags) Name() string

func (Flags) String

func (f Flags) String() string

type IntType

type IntType struct {
	Val int64
}

func NewIntType

func NewIntType(val int64) (typ *IntType)

func (*IntType) Eval

func (i *IntType) Eval(target *prog.Target) uint64

func (*IntType) Name

func (i *IntType) Name() string

func (*IntType) String

func (i *IntType) String() string

type Ints

type Ints []*IntType

func NewIntsType

func NewIntsType(vals []int64) Ints

func (Ints) Eval

func (i Ints) Eval(target *prog.Target) uint64

func (Ints) Name

func (i Ints) Name() string

func (Ints) String

func (i Ints) String() string

type IpType

type IpType struct {
	Str string
}

func NewIpType

func NewIpType(val string) (typ *IpType)

func (*IpType) Eval

func (i *IpType) Eval(target *prog.Target) uint64

func (*IpType) Name

func (i *IpType) Name() string

func (*IpType) String

func (i *IpType) String() string

type Macro

type Macro struct {
	MacroName string
	Args      []Type
}

func NewMacroType

func NewMacroType(name string, args []Type) (typ *Macro)

func (*Macro) Eval

func (m *Macro) Eval(target *prog.Target) uint64

func (*Macro) Name

func (m *Macro) Name() string

func (*Macro) String

func (m *Macro) String() string

type Operation

type Operation int

type Pair

type Pair struct {
	A string
	B string
}

type Parenthetical

type Parenthetical struct {
	// contains filtered or unexported fields
}

func NewParenthetical

func NewParenthetical() *Parenthetical

type PointerType

type PointerType struct {
	Address uint64
	Res     Type
}

func NewPointerType

func NewPointerType(addr uint64, res Type) (typ *PointerType)

func NullPointer

func NullPointer() (typ *PointerType)

func (*PointerType) Eval

func (p *PointerType) Eval(target *prog.Target) uint64

func (*PointerType) IsNull

func (typ *PointerType) IsNull() bool

func (*PointerType) Name

func (p *PointerType) Name() string

func (*PointerType) String

func (p *PointerType) String() string

type Set

type Set struct {
	Exprs []*Expression
}

func NewSet

func NewSet(exprs []*Expression) *Set

func (*Set) Eval

func (b *Set) Eval(target *prog.Target) uint64

func (*Set) Name

func (b *Set) Name() string

func (*Set) String

func (b *Set) String() string

type SocketDesc

type SocketDesc struct {
	Domain string
	Type   string
	Proto  string
}

type StructType

type StructType struct {
	Fields []Type
}

func NewStructType

func NewStructType(types []Type) (typ *StructType)

func (*StructType) Eval

func (s *StructType) Eval(target *prog.Target) uint64

func (*StructType) Name

func (s *StructType) Name() string

func (*StructType) String

func (s *StructType) String() string

type Syscall

type Syscall struct {
	CallName string
	Args     []Type
	Pid      int64
	Ret      int64
	Cover    []uint64
	Paused   bool
	Resumed  bool
}

func NewSyscall

func NewSyscall(pid int64, name string,
	args []Type,
	ret int64,
	paused bool,
	resumed bool) (sys *Syscall)

func (*Syscall) String

func (s *Syscall) String() string

type Trace

type Trace struct {
	Calls []*Syscall
}

func NewTrace

func NewTrace() (trace *Trace)

func (*Trace) Add

func (trace *Trace) Add(call *Syscall) (ret *Syscall)

type TraceTree

type TraceTree struct {
	TraceMap map[int64]*Trace
	Ptree    map[int64][]int64
	RootPid  int64
	Filename string
}

func NewTraceTree

func NewTraceTree() (tree *TraceTree)

func (*TraceTree) Add

func (tree *TraceTree) Add(call *Syscall) *Syscall

func (*TraceTree) Contains

func (tree *TraceTree) Contains(pid int64) bool

func (*TraceTree) String

func (tree *TraceTree) String() string

type Type

type Type interface {
	Name() string
	String() string
	Eval(*prog.Target) uint64
}

type Unop

type Unop struct {
	Operand *Expression
	Op      Operation
}

func NewUnop

func NewUnop(operand Type, op Operation) (u *Unop)

func (*Unop) Eval

func (u *Unop) Eval(target *prog.Target) uint64

func (*Unop) Name

func (u *Unop) Name() string

func (*Unop) String

func (u *Unop) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL