6
6
"debug/pe"
7
7
"encoding/binary"
8
8
"errors"
9
- "fmt"
10
9
"image"
11
10
"image/color"
12
11
"image/png"
@@ -552,21 +551,25 @@ type ICONDIRENTRY struct {
552
551
}
553
552
554
553
func defaultICO (w io.Writer , peFile * pe.File ) error {
555
- // 如果没有资源段
556
- var subsystem uint16
557
- switch peFile .OptionalHeader .(type ) {
558
- case * pe.OptionalHeader32 :
559
- subsystem = peFile .OptionalHeader .(* pe.OptionalHeader32 ).Subsystem
560
- case * pe.OptionalHeader64 :
561
- subsystem = peFile .OptionalHeader .(* pe.OptionalHeader64 ).Subsystem
562
- }
563
-
564
554
n := ""
565
- switch subsystem {
566
- case pe .IMAGE_SUBSYSTEM_WINDOWS_CUI , pe .IMAGE_SUBSYSTEM_OS2_CUI , pe .IMAGE_SUBSYSTEM_POSIX_CUI :
567
- n = "assets/CUI.ico"
568
- default : // pe.IMAGE_SUBSYSTEM_WINDOWS_GUI, pe.IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
569
- n = "assets/GUI.ico"
555
+ if peFile .FileHeader .Characteristics & pe .IMAGE_FILE_DLL > 0 {
556
+ n = "assets/DLL.ico"
557
+ } else {
558
+ // 如果没有资源段
559
+ var subsystem uint16
560
+ switch peFile .OptionalHeader .(type ) {
561
+ case * pe.OptionalHeader32 :
562
+ subsystem = peFile .OptionalHeader .(* pe.OptionalHeader32 ).Subsystem
563
+ case * pe.OptionalHeader64 :
564
+ subsystem = peFile .OptionalHeader .(* pe.OptionalHeader64 ).Subsystem
565
+ }
566
+
567
+ switch subsystem {
568
+ case pe .IMAGE_SUBSYSTEM_WINDOWS_CUI , pe .IMAGE_SUBSYSTEM_OS2_CUI , pe .IMAGE_SUBSYSTEM_POSIX_CUI :
569
+ n = "assets/CUI.ico"
570
+ default : // pe.IMAGE_SUBSYSTEM_WINDOWS_GUI, pe.IMAGE_SUBSYSTEM_WINDOWS_CE_GUI
571
+ n = "assets/GUI.ico"
572
+ }
570
573
}
571
574
572
575
d , _ := Asset (n )
@@ -610,7 +613,7 @@ func PE2ICO(w io.Writer, path string, cfg ...Config) error {
610
613
}
611
614
}
612
615
613
- // 如果没有图标,有资源段说明是GUI
616
+ // 如果没有图标
614
617
if len (grpIcons ) <= 0 {
615
618
return defaultICO (w , peFile )
616
619
}
@@ -629,7 +632,7 @@ func PE2ICO(w io.Writer, path string, cfg ...Config) error {
629
632
}
630
633
}
631
634
632
- // 如果没有图标,有资源段说明是GUI
635
+ // 如果没有图标
633
636
if gid .Count <= 0 {
634
637
return defaultICO (w , peFile )
635
638
}
@@ -644,7 +647,6 @@ func PE2ICO(w io.Writer, path string, cfg ...Config) error {
644
647
645
648
offset += len (r .Data )
646
649
data = append (data , r .Data )
647
- fmt .Printf ("%#x\n " , r .Data )
648
650
}
649
651
}
650
652
0 commit comments