「.exe resource extract cygwin」でググると、以下のページを見つけた。
曰く、icoutils に収録されてる wrestool がいいですよと。
意外なことに 7z は .exe をアーカイブ扱いしてリソースを extract 出来ますよと。マジか。
これはどちらも Cygwin にも収録されている。
- StackExchange / superuser / 2019-04-03: Extract icons from Windows executable
曰く、icoutils に収録されてる wrestool がいいですよと。
意外なことに 7z は .exe をアーカイブ扱いしてリソースを extract 出来ますよと。マジか。
これはどちらも Cygwin にも収録されている。
リソースの一覧
$ wrestool /cygdrive/c/WINDOWS/System32/cmd.exe -l --type='MUI' --name=1 --language=1033 [offset=0x65420 size=216] --type=3 --name=1 --language=1033 [type=icon offset=0x5d778 size=1640] --type=3 --name=2 --language=1033 [type=icon offset=0x5dde0 size=744] --type=3 --name=3 --language=1033 [type=icon offset=0x5e0c8 size=296] --type=3 --name=4 --language=1033 [type=icon offset=0x5e1f0 size=3752] --type=3 --name=5 --language=1033 [type=icon offset=0x5f098 size=2216] --type=3 --name=6 --language=1033 [type=icon offset=0x5f940 size=1384] --type=3 --name=7 --language=1033 [type=icon offset=0x5fea8 size=5790] --type=3 --name=8 --language=1033 [type=icon offset=0x61548 size=9640] --type=3 --name=9 --language=1033 [type=icon offset=0x63af0 size=4264] --type=3 --name=10 --language=1033 [type=icon offset=0x64b98 size=1128] --type=14 --name='IDI_APPICON' --language=1033 [type=group_icon offset=0x65000 size=146] --type=16 --name=1 --language=1033 [type=version offset=0x65098 size=904] --type=24 --name=1 --language=1033 [offset=0x5d350 size=1064]グループ アイコン(= type 14) の取り出し
$ wrestool /cygdrive/c/WINDOWS/System32/cmd.exe -x -t14 -o.
$ find . -type f -exec ls -l --time-style="+%F %T" {} + -rw-r--r-- 1 kou なし 31166 2022-04-07 18:24:36 ./cmd.exe_14_IDI_APPICON.ico.ico → .png 変換
$ convert -verbose cmd.exe_14_IDI_APPICON.ico cmd.exe_14_IDI_APPICON_%02d.png PNG:cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON.ico PNG 256x256 256x256+0+0 8-bit sRGB 5790B 0.000u 0:00.004 cmd.exe_14_IDI_APPICON.ico[0] ICO 48x48 48x48+0+0 4-bit sRGB 0.015u 0:00.013 cmd.exe_14_IDI_APPICON.ico[1] ICO 32x32 32x32+0+0 4-bit sRGB 0.015u 0:00.013 cmd.exe_14_IDI_APPICON.ico[2] ICO 16x16 16x16+0+0 4-bit sRGB 0.015u 0:00.012 cmd.exe_14_IDI_APPICON.ico[3] ICO 48x48 48x48+0+0 8-bit sRGB 0.015u 0:00.012 cmd.exe_14_IDI_APPICON.ico[4] ICO 32x32 32x32+0+0 8-bit sRGB 0.015u 0:00.012 cmd.exe_14_IDI_APPICON.ico[5] ICO 16x16 16x16+0+0 8-bit sRGB 0.015u 0:00.012 cmd.exe_14_IDI_APPICON.ico[0] PNG 256x256 256x256+0+0 8-bit sRGB 5790B 0.015u 0:00.004 cmd.exe_14_IDI_APPICON.ico[1] ICO 48x48 48x48+0+0 8-bit sRGB 0.015u 0:00.004 cmd.exe_14_IDI_APPICON.ico[2] ICO 32x32 32x32+0+0 8-bit sRGB 0.015u 0:00.003 cmd.exe_14_IDI_APPICON.ico[3] ICO 16x16 16x16+0+0 8-bit sRGB 31166B 0.000u 0:00.003 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[0] ICO 48x48 48x48+0+0 4-bit sRGB 0.000u 0:00.006 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[1] ICO 32x32 32x32+0+0 4-bit sRGB 0.000u 0:00.008 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[2] ICO 16x16 16x16+0+0 4-bit sRGB 0.000u 0:00.010 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[3] ICO 48x48 48x48+0+0 8-bit sRGB 0.000u 0:00.012 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[4] ICO 32x32 32x32+0+0 8-bit sRGB 0.016u 0:00.014 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[5] ICO 16x16 16x16+0+0 8-bit sRGB 0.016u 0:00.015 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[6] PNG 256x256 256x256+0+0 8-bit sRGB 5790B 0.016u 0:00.027 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[7] ICO 48x48 48x48+0+0 8-bit sRGB 0.032u 0:00.029 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[8] ICO 32x32 32x32+0+0 8-bit sRGB 0.032u 0:00.032 cmd.exe_14_IDI_APPICON.ico=>cmd.exe_14_IDI_APPICON_%02d.png[9] ICO 16x16 16x16+0+0 8-bit sRGB 31166B 0.032u 0:00.033
$ find . -type f -exec ls -l --time-style="+%F %T" {} + -rw-r--r-- 1 kou なし 31166 2022-04-07 18:47:03 ./cmd.exe_14_IDI_APPICON.ico -rw-r--r-- 1 kou なし 606 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_00.png -rw-r--r-- 1 kou なし 462 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_01.png -rw-r--r-- 1 kou なし 338 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_02.png -rw-r--r-- 1 kou なし 583 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_03.png -rw-r--r-- 1 kou なし 545 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_04.png -rw-r--r-- 1 kou なし 357 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_05.png -rw-r--r-- 1 kou なし 5914 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_06.png -rw-r--r-- 1 kou なし 879 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_07.png -rw-r--r-- 1 kou なし 796 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_08.png -rw-r--r-- 1 kou なし 357 2022-04-07 18:47:47 ./cmd.exe_14_IDI_APPICON_09.png
リソースの一覧
$ 7z l /cygdrive/c/WINDOWS/System32/cmd.exe 7-Zip [64] 15.14 : Copyright (c) 1999-2015 Igor Pavlov : 2015-12-31 p7zip Version 15.14.1 (locale=ja_JP.UTF-8@cjknarrow,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (506E3),ASM,AES-NI) Scanning the drive for archives: 1 file, 289792 bytes (283 KiB) Listing archive: /cygdrive/c/WINDOWS/System32/cmd.exe -- Path = /cygdrive/c/WINDOWS/System32/cmd.exe Type = PE Physical Size = 289792 CPU = x64 64-bit = + Characteristics = Executable LargeAddress Created = 2090-01-16 18:26:43 Headers Size = 1024 Checksum = 316591 Name = Cmd.Exe Image Size = 421888 Section Alignment = 4096 File Alignment = 512 Code Size = 200704 Initialized Data Size = 201728 Uninitialized Data Size = 0 Linker Version = 14.20 OS Version = 10.0 Image Version = 10.0 Subsystem Version = 10.0 Subsystem = Windows CUI DLL Characteristics = Relocated NX-Compatible TerminalServerAware 0x4020 Stack Reserve = 1048576 Stack Commit = 1032192 Heap Reserve = 1048576 Heap Commit = 4096 Image Base = 5368709120 Comment = FileVersion: 10.0.19041.746 FileVersion: 10.0.19041.746 (WinBuild.160101.0800) ProductVersion: 10.0.19041.746 CompanyName: Microsoft Corporation FileDescription: Windows Command Processor InternalName: cmd LegalCopyright: © Microsoft Corporation. All rights reserved. OriginalFilename: Cmd.Exe ProductName: Microsoft® Windows® Operating System Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2090-01-16 18:26:43 ..... 200441 200704 .text 2090-01-16 18:26:43 ..... 42300 42496 .rdata 2090-01-16 18:26:43 ..... 512 512 .data 2090-01-16 18:26:43 ..... 9012 9216 .pdata 2090-01-16 18:26:43 ..... 144 512 .didat ..... 1626 1626 .rsrc/version.txt ..... 216 216 .rsrc/MUI/1 ..... 1662 1640 .rsrc/ICON/1.ico ..... 766 744 .rsrc/ICON/2.ico ..... 318 296 .rsrc/ICON/3.ico ..... 3774 3752 .rsrc/ICON/4.ico ..... 2238 2216 .rsrc/ICON/5.ico ..... 1406 1384 .rsrc/ICON/6.ico ..... 5790 5790 .rsrc/ICON/7 ..... 9662 9640 .rsrc/ICON/8.ico ..... 4286 4264 .rsrc/ICON/9.ico ..... 1150 1128 .rsrc/ICON/10.ico ..... 146 146 .rsrc/GROUP_ICON/IDI_APPICON ..... 1064 1064 .rsrc/MANIFEST/1 2090-01-16 18:26:43 ..... 780 1024 .reloc ------------------- ----- ------------ ------------ ------------------------ 2090-01-16 18:26:43 287293 288370 20 filesアイコンの取り出し
$ 7z x /cygdrive/c/WINDOWS/System32/cmd.exe .rsrc/ICON 7-Zip [64] 15.14 : Copyright (c) 1999-2015 Igor Pavlov : 2015-12-31 p7zip Version 15.14.1 (locale=ja_JP.UTF-8@cjknarrow,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz (506E3),ASM,AES-NI) Scanning the drive for archives: 1 file, 289792 bytes (283 KiB) Extracting archive: /cygdrive/c/WINDOWS/System32/cmd.exe -- Path = /cygdrive/c/WINDOWS/System32/cmd.exe Type = PE Physical Size = 289792 CPU = x64 64-bit = + Characteristics = Executable LargeAddress Created = 2090-01-16 18:26:43 Headers Size = 1024 Checksum = 316591 Name = Cmd.Exe Image Size = 421888 Section Alignment = 4096 File Alignment = 512 Code Size = 200704 Initialized Data Size = 201728 Uninitialized Data Size = 0 Linker Version = 14.20 OS Version = 10.0 Image Version = 10.0 Subsystem Version = 10.0 Subsystem = Windows CUI DLL Characteristics = Relocated NX-Compatible TerminalServerAware 0x4020 Stack Reserve = 1048576 Stack Commit = 1032192 Heap Reserve = 1048576 Heap Commit = 4096 Image Base = 5368709120 Comment = FileVersion: 10.0.19041.746 FileVersion: 10.0.19041.746 (WinBuild.160101.0800) ProductVersion: 10.0.19041.746 CompanyName: Microsoft Corporation FileDescription: Windows Command Processor InternalName: cmd LegalCopyright: © Microsoft Corporation. All rights reserved. OriginalFilename: Cmd.Exe ProductName: Microsoft® Windows® Operating System Everything is Ok Files: 10 Size: 31052 Compressed: 289792
$ find . -type f -exec ls -l --time-style="+%F %T" {} + -rw-r--r-- 1 kou なし 1662 2021-08-23 15:06:55 ./.rsrc/ICON/1.ico -rw-r--r-- 1 kou なし 1150 2021-08-23 15:06:55 ./.rsrc/ICON/10.ico -rw-r--r-- 1 kou なし 766 2021-08-23 15:06:55 ./.rsrc/ICON/2.ico -rw-r--r-- 1 kou なし 318 2021-08-23 15:06:55 ./.rsrc/ICON/3.ico -rw-r--r-- 1 kou なし 3774 2021-08-23 15:06:55 ./.rsrc/ICON/4.ico -rw-r--r-- 1 kou なし 2238 2021-08-23 15:06:55 ./.rsrc/ICON/5.ico -rw-r--r-- 1 kou なし 1406 2021-08-23 15:06:55 ./.rsrc/ICON/6.ico -rw-r--r-- 1 kou なし 5790 2021-08-23 15:06:55 ./.rsrc/ICON/7 -rw-r--r-- 1 kou なし 9662 2021-08-23 15:06:55 ./.rsrc/ICON/8.ico -rw-r--r-- 1 kou なし 4286 2021-08-23 15:06:55 ./.rsrc/ICON/9.ico.ico → .png 変換
$ find . -type f | while read i; do convert -verbose "$i" "${i%.*[a-z]}.png"; done ./.rsrc/ICON/1.ico ICO 48x48 48x48+0+0 4-bit sRGB 1662B 0.000u 0:00.001 ./.rsrc/ICON/1.ico=>./.rsrc/ICON/1.png ICO 48x48 48x48+0+0 4-bit sRGB 1662B 0.000u 0:00.002 ./.rsrc/ICON/10.ico ICO 16x16 16x16+0+0 8-bit sRGB 1150B 0.000u 0:00.001 ./.rsrc/ICON/10.ico=>./.rsrc/ICON/10.png ICO 16x16 16x16+0+0 8-bit sRGB 1150B 0.000u 0:00.002 ./.rsrc/ICON/2.ico ICO 32x32 32x32+0+0 4-bit sRGB 766B 0.000u 0:00.001 ./.rsrc/ICON/2.ico=>./.rsrc/ICON/2.png ICO 32x32 32x32+0+0 4-bit sRGB 766B 0.000u 0:00.002 ./.rsrc/ICON/3.ico ICO 16x16 16x16+0+0 4-bit sRGB 318B 0.000u 0:00.001 ./.rsrc/ICON/3.ico=>./.rsrc/ICON/3.png ICO 16x16 16x16+0+0 4-bit sRGB 318B 0.000u 0:00.002 ./.rsrc/ICON/4.ico ICO 48x48 48x48+0+0 8-bit sRGB 3774B 0.015u 0:00.001 ./.rsrc/ICON/4.ico=>./.rsrc/ICON/4.png ICO 48x48 48x48+0+0 8-bit sRGB 3774B 0.000u 0:00.002 ./.rsrc/ICON/5.ico ICO 32x32 32x32+0+0 8-bit sRGB 2238B 0.000u 0:00.002 ./.rsrc/ICON/5.ico=>./.rsrc/ICON/5.png ICO 32x32 32x32+0+0 8-bit sRGB 2238B 0.016u 0:00.002 ./.rsrc/ICON/6.ico ICO 16x16 16x16+0+0 8-bit sRGB 1406B 0.000u 0:00.001 ./.rsrc/ICON/6.ico=>./.rsrc/ICON/6.png ICO 16x16 16x16+0+0 8-bit sRGB 1406B 0.000u 0:00.002 ./.rsrc/ICON/7 PNG 256x256 256x256+0+0 8-bit sRGB 5790B 0.000u 0:00.003 ./.rsrc/ICON/7=>./.rsrc/ICON/7.png PNG 256x256 256x256+0+0 8-bit sRGB 5790B 0.016u 0:00.010 ./.rsrc/ICON/8.ico ICO 48x48 48x48+0+0 8-bit sRGB 9662B 0.000u 0:00.001 ./.rsrc/ICON/8.ico=>./.rsrc/ICON/8.png ICO 48x48 48x48+0+0 8-bit sRGB 9662B 0.000u 0:00.003 ./.rsrc/ICON/9.ico ICO 32x32 32x32+0+0 8-bit sRGB 4286B 0.016u 0:00.001 ./.rsrc/ICON/9.ico=>./.rsrc/ICON/9.png ICO 32x32 32x32+0+0 8-bit sRGB 4286B 0.000u 0:00.003
$ find . -type f -exec ls -l --time-style="+%F %T" {} + -rw-r--r-- 1 kou なし 1662 2021-08-23 15:06:55 ./.rsrc/ICON/1.ico -rw-r--r-- 1 kou なし 606 2022-04-07 18:46:05 ./.rsrc/ICON/1.png -rw-r--r-- 1 kou なし 1150 2021-08-23 15:06:55 ./.rsrc/ICON/10.ico -rw-r--r-- 1 kou なし 357 2022-04-07 18:46:05 ./.rsrc/ICON/10.png -rw-r--r-- 1 kou なし 766 2021-08-23 15:06:55 ./.rsrc/ICON/2.ico -rw-r--r-- 1 kou なし 462 2022-04-07 18:46:05 ./.rsrc/ICON/2.png -rw-r--r-- 1 kou なし 318 2021-08-23 15:06:55 ./.rsrc/ICON/3.ico -rw-r--r-- 1 kou なし 338 2022-04-07 18:46:05 ./.rsrc/ICON/3.png -rw-r--r-- 1 kou なし 3774 2021-08-23 15:06:55 ./.rsrc/ICON/4.ico -rw-r--r-- 1 kou なし 583 2022-04-07 18:46:05 ./.rsrc/ICON/4.png -rw-r--r-- 1 kou なし 2238 2021-08-23 15:06:55 ./.rsrc/ICON/5.ico -rw-r--r-- 1 kou なし 545 2022-04-07 18:46:05 ./.rsrc/ICON/5.png -rw-r--r-- 1 kou なし 1406 2021-08-23 15:06:55 ./.rsrc/ICON/6.ico -rw-r--r-- 1 kou なし 357 2022-04-07 18:46:05 ./.rsrc/ICON/6.png -rw-r--r-- 1 kou なし 5790 2021-08-23 15:06:55 ./.rsrc/ICON/7 -rw-r--r-- 1 kou なし 5914 2022-04-07 18:46:06 ./.rsrc/ICON/7.png -rw-r--r-- 1 kou なし 9662 2021-08-23 15:06:55 ./.rsrc/ICON/8.ico -rw-r--r-- 1 kou なし 879 2022-04-07 18:46:06 ./.rsrc/ICON/8.png -rw-r--r-- 1 kou なし 4286 2021-08-23 15:06:55 ./.rsrc/ICON/9.ico -rw-r--r-- 1 kou なし 796 2022-04-07 18:46:06 ./.rsrc/ICON/9.png
タグ
コメントをかく