예제 #1
0
파일: macho.go 프로젝트: ArtemKulyabin/bre
func (s *Section) Perm() binaryx.Perm {
	p := binaryx.Perm(0)
	if s.Section.Flags&SectFlagPureInstructions != 0 {
		p |= binaryx.PermExecute
	}
	// TODO: Add PermWrite and PermRead detection
	return p
}
예제 #2
0
파일: pe.go 프로젝트: ArtemKulyabin/bre
func (s *Section) Perm() binaryx.Perm {
	p := binaryx.Perm(0)
	if s.Section.Characteristics&uint32(SectFlagMemExec) != 0 {
		p |= binaryx.PermExecute
	}
	if s.Section.Characteristics&uint32(SectFlagMemWrite) != 0 {
		p |= binaryx.PermWrite
	}
	if s.Section.Characteristics&uint32(SectFlagMemRead) != 0 {
		p |= binaryx.PermRead
	}
	return p
}
예제 #3
0
파일: elf.go 프로젝트: ArtemKulyabin/bre
func (s *Section) Perm() binaryx.Perm {
	p := binaryx.Perm(0)
	if s.Section.Flags&elf.SHF_EXECINSTR != 0 {
		p |= binaryx.PermExecute
	}
	if s.Section.Flags&elf.SHF_WRITE != 0 {
		p |= binaryx.PermWrite
	}
	if s.Section.Flags&elf.SHF_ALLOC != 0 {
		p |= binaryx.PermRead
	}
	return p
}