#windows #go #portable-executable
#Windows #Вперед #portable-исполняемый файл
Вопрос:
Я наткнулся на задачу прочитать список DLL-файлов, связанных с произвольным PE-исполняемым файлом в Windows. Хотя debug/pe
это выглядело многообещающе, но было сложно обнаружить:
// ImportedLibraries returns the names of all libraries
// referred to by the binary f that are expected to be
// linked with the binary at dynamic link time.
func (f *File) ImportedLibraries() ([]string, error) {
// TODO
// cgo -dynimport don't use this for windows PE, so just return.
return nil, nil
}
Итак, есть ли что-нибудь, что я могу использовать для извлечения списка DLL из EXE-файла?
Комментарии:
1. Если вы не возражаете против использования стороннего приложения, dumpbin может это сделать. Эта библиотека тоже может работать — github.com/Velocidex/go-pe/blob/master/imports.go
Ответ №1:
Кажется, это делает это:
package main
import "github.com/Binject/debug/pe"
func main() {
f, e := pe.Open(`C:Windowsnotepad.exe`)
if e != nil {
panic(e)
}
defer f.Close()
a, e := f.ImportedLibraries()
if e != nil {
panic(e)
}
for _, s := range a {
println(s)
}
}