in toutoumomoma.go [64:99]
func NewFile(r io.ReaderAt) (*File, error) {
var magic [4]byte
_, err := r.ReadAt(magic[:], 0)
if err != nil {
if err == io.EOF {
err = ErrUnknownFormat
}
return nil, err
}
switch {
case bytes.Equal(magic[:], []byte("\x7FELF")):
exe, err := openELF(r)
if err != nil {
return nil, err
}
return &File{exe}, nil
case bytes.Equal(magic[:3], []byte("\xfe\xed\xfa")),
bytes.Equal(magic[1:], []byte("\xfa\xed\xfe")):
exe, err := openMachO(r)
if err != nil {
return nil, err
}
return &File{exe}, nil
case bytes.Equal(magic[:2], []byte("MZ")):
exe, err := openPE(r)
if err != nil {
return nil, err
}
return &File{exe}, nil
default:
return nil, ErrUnknownFormat
}
}