代码拉取完成,页面将自动刷新
package elf
import (
"bytes"
"debug/elf"
"io"
"io/ioutil"
)
// Parser ELF信息
type Parser struct {
File *elf.File
ImportedLibraries []string
ImportedSymbols []elf.ImportedSymbol
}
// NewParser 初始化
func NewParser() *Parser {
ep := &Parser{}
return ep
}
// Parse 解析reader
func (e *Parser) Parse(r io.Reader) {
b, _ := ioutil.ReadAll(r)
e.File, _ = elf.NewFile(bytes.NewReader(b))
e.ImportedLibraries, _ = e.File.ImportedLibraries()
e.ImportedSymbols, _ = e.File.ImportedSymbols()
}
// ParseFile 解析elf文件
func (e *Parser) ParseFile(path string) {
}
// ReadString 从原始数据中找出字符串
func (e *Parser) ReadString(b []byte) map[uint64][]byte {
var slice [][]byte
if slice = bytes.Split(b, []byte("\x00")); slice == nil {
return nil
}
strings := make(map[uint64][]byte, len(slice))
length := uint64(len(slice))
var offset uint64
for i := uint64(0); i < length; i++ {
if len(slice[i]) < 3 {
continue
}
strings[offset] = slice[i]
// TODO 代码在文件中的位置
offset += (uint64(len(slice)) + 1)
}
return strings
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。