1 Star 1 Fork 0

kin9-0rz/goapk

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
elf.go 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
kin9-0rz 提交于 2021-02-02 18:01 +08:00 . fix: 🐛 support the case that DNS query failure
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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kin9-0rz/goapk.git
git@gitee.com:kin9-0rz/goapk.git
kin9-0rz
goapk
goapk
v1.1.6

搜索帮助