Skip to content

Commit

Permalink
Merge pull request #4 from Velocidex/simple
Browse files Browse the repository at this point in the history
Remove unneeded dependencies to reduce binary size.
  • Loading branch information
scudette committed May 20, 2019
2 parents d3d2d63 + 4107c51 commit a86323d
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 66 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
*~
vendor/
vendor/
cmd/peinfo
34 changes: 3 additions & 31 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
all:
go build -o cmd/peinfo cmd/*.go
56 changes: 22 additions & 34 deletions cmd/peinfo.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,43 @@ package main

import (
"encoding/json"
"flag"
"fmt"
"os"
"runtime/pprof"

kingpin "gopkg.in/alecthomas/kingpin.v2"
"www.velocidex.com/golang/binparsergen/reader"
pe "www.velocidex.com/golang/go-pe"

// Required to find utilities.
_ "www.velocidex.com/golang/binparsergen"
)

var (
app = kingpin.New("peinfo",
"A tool for printing information about pe files.")

command_file_arg = app.Arg(
"file", "The pe file to inspect",
).Required().OpenFile(os.O_RDONLY, os.FileMode(0666))

profile_flag = app.Flag(
"profile", "Write profiling information to this file.").String()
)

func doParse() {
reader, err := reader.NewPagedReader(*command_file_arg, 4096, 100)
kingpin.FatalIfError(err, "NewPagedReader")

pe_file, err := pe.NewPEFile(reader)
kingpin.FatalIfError(err, "NewPeProfile")

serialized, _ := json.MarshalIndent(pe_file, "", " ")
fmt.Println(string(serialized))

func Fatalf(err error, format string, args ...interface{}) {
if err != nil {
fmt.Printf(format+"\n", args...)
os.Exit(1)
}
}

func main() {
app.HelpFlag.Short('h')
app.UsageTemplate(kingpin.CompactUsageTemplate)
kingpin.MustParse(app.Parse(os.Args[1:]))
flag.Parse()

if len(flag.Args()) == 0 {
fmt.Println("You must specify one or more exe files.")
os.Exit(1)
}

if *profile_flag != "" {
f2, err := os.Create(*profile_flag)
kingpin.FatalIfError(err, "Profile file.")
for _, filename := range flag.Args() {
fd, err := os.Open(filename)
Fatalf(err, "Can not open file %s: %v", filename, err)

pprof.StartCPUProfile(f2)
defer pprof.StopCPUProfile()
reader, err := reader.NewPagedReader(fd, 4096, 100)
Fatalf(err, "Can not open file %s: %v", filename, err)

}
pe_file, err := pe.NewPEFile(reader)
Fatalf(err, "Can not open file %s: %v", filename, err)

doParse()
serialized, _ := json.MarshalIndent(pe_file, "", " ")
fmt.Println(string(serialized))
}
}
Binary file removed peinfo
Binary file not shown.

0 comments on commit a86323d

Please sign in to comment.