Skip to content

Commit c25c599

Browse files
committed
WIP: pe: Add decoder
1 parent 0e27492 commit c25c599

File tree

5 files changed

+520
-0
lines changed

5 files changed

+520
-0
lines changed

format/all/all.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040
_ "github.com/wader/fq/format/ogg"
4141
_ "github.com/wader/fq/format/opus"
4242
_ "github.com/wader/fq/format/pcap"
43+
_ "github.com/wader/fq/format/pe"
4344
_ "github.com/wader/fq/format/png"
4445
_ "github.com/wader/fq/format/postgres"
4546
_ "github.com/wader/fq/format/prores"

format/format.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ var (
145145
Opus_Packet = &decode.Group{Name: "opus_packet"}
146146
PCAP = &decode.Group{Name: "pcap"}
147147
PCAPNG = &decode.Group{Name: "pcapng"}
148+
PE = &decode.Group{Name: "pe"}
149+
PE_COFF = &decode.Group{Name: "pe_coff"}
150+
PE_MSDOS_Stub = &decode.Group{Name: "pe_msdos_stub"}
148151
Pg_BTree = &decode.Group{Name: "pg_btree"}
149152
Pg_Control = &decode.Group{Name: "pg_control"}
150153
Pg_Heap = &decode.Group{Name: "pg_heap"}

format/pe/pe.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package pe
2+
3+
// https://osandamalith.com/2020/07/19/exploring-the-ms-dos-stub/
4+
5+
import (
6+
"github.com/wader/fq/format"
7+
"github.com/wader/fq/pkg/decode"
8+
"github.com/wader/fq/pkg/interp"
9+
)
10+
11+
// TODO: probe?
12+
// TODO: not pe_ prefix for format names?
13+
14+
var peMSDosStubGroup decode.Group
15+
var peCOFFGroup decode.Group
16+
17+
func init() {
18+
interp.RegisterFormat(
19+
format.PE,
20+
&decode.Format{
21+
Description: "Portable Executable",
22+
Groups: []*decode.Group{format.Probe},
23+
Dependencies: []decode.Dependency{
24+
{Groups: []*decode.Group{format.PE_MSDOS_Stub}, Out: &peMSDosStubGroup},
25+
{Groups: []*decode.Group{format.PE_COFF}, Out: &peCOFFGroup},
26+
},
27+
DecodeFn: peDecode,
28+
})
29+
}
30+
31+
func peDecode(d *decode.D) any {
32+
33+
d.FieldFormat("ms_dos_stub", &peMSDosStubGroup, nil)
34+
d.FieldFormat("coff", &peCOFFGroup, nil)
35+
36+
return nil
37+
}

0 commit comments

Comments
 (0)