Ada banyak alat, disebutkan oleh banyak jawaban bagus, saya akan memilih satu.
Peretas Sumber Daya
Saya mengunduh versi terbaru ( 5.1.7 ) dari [AngusJ]: Resource Hacker . Semua informasi yang diperlukan dapat ditemukan di halaman itu (opsi baris perintah, skrip, ...). Dalam panduan berikut, saya akan mengoperasikan 2 file yang dapat dieksekusi (tikus lab) yang (untuk alasan yang jelas) saya salin di cwd saya :
- ResourceHacker.exe : Saya pikir akan menarik untuk mengoperasikannya sendiri
- cmake.exe : dapat dieksekusi secara acak tanpa kumpulan Info Versi (bagian dari instalasi v3.6.3 di mesin saya)
Sebelum melangkah lebih jauh, saya ingin menyebutkan bahwa ResourceHacker memiliki keluaran terminal yang lucu , dan fragmen salin / tempel berikut mungkin menghasilkan sedikit kebingungan.
1. Penyiapan
Ini lebih seperti langkah awal, untuk berkenalan dengan lingkungan, untuk menunjukkan tidak ada bisnis funky yang terjadi, ...
e:\Work\Dev\StackOverflow\q000284258> sopr.bat
*** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ***
[prompt]> dir
Volume in drive E is Work
Volume Serial Number is 3655-6FED
Directory of e:\Work\Dev\StackOverflow\q000284258
2019-01-28 20:09 <DIR> .
2019-01-28 20:09 <DIR> ..
2016-11-03 09:17 5,413,376 cmake.exe
2019-01-03 02:06 5,479,424 ResourceHacker.exe
2019-01-28 20:30 496 ResourceHacker.ini
3 File(s) 10,893,296 bytes
2 Dir(s) 103,723,261,952 bytes free
[prompt]> set PATH=%PATH%;c:\Install\x64\CMake\CMake\3.6.3\bin
[prompt]> .\cmake --help >nul 2>&1
[prompt]> echo %errorlevel%
0
[prompt]> .\ResourceHacker.exe -help
[prompt]>
==================================
Resource Hacker Command Line Help:
==================================
-help : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script : displays help for script file instructions.
[prompt]> echo %errorlevel%
0
Seperti yang terlihat, executable baik-baik saja, mereka berjalan dengan baik, dan inilah tampilan Detail mereka (yang kami pedulikan):
2. Sumberdaya
File sumber daya adalah file teks yang berisi sumber daya. Sumber daya (disederhanakan) memiliki:
Untuk lebih jelasnya periksa [MS.Docs]: Tentang File Sumber Daya . Ada banyak alat (disebutkan dalam jawaban yang ada) yang memfasilitasi pengeditan file sumber daya seperti:
- VStudio membuat default saat memulai proyek baru
- Seseorang dapat membuat file seperti itu secara manual
Tapi, karena ini tentang Resource Hacker , dan:
- Ia mampu mengekstrak sumber daya dari executable yang ada
- Ini memiliki sumber daya yang tertanam di dalamnya (seperti yang ditunjukkan pada gambar sebelumnya)
Saya akan menggunakannya untuk langkah ini ( -action extract
)
Selanjutnya, Agar sumber daya dapat disematkan ke .exe ( .dll , ...), sumber daya harus dikompilasi ke dalam bentuk biner, yang cocok dengan format PE . Sekali lagi, ada banyak alat yang dapat mencapai ini, tetapi seperti yang Anda duga, saya akan tetap menggunakan Resource Hacker ( -action compile
).
[prompt]> :: Extract the resources into a file
[prompt]> .\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con
[prompt]>
[28 Jan 2019, 20:58:03]
Current Directory:
e:\Work\Dev\StackOverflow\q000284258
Commandline:
.\ResourceHacker.exe -open .\ResourceHacker.exe -save .\sample.rc -action extract -mask VersionInfo,, -log con
Open : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save : e:\Work\Dev\StackOverflow\q000284258\sample.rc
Success!
[prompt]> :: Modify the resource file and set our own values
[prompt]>
[prompt]> :: Compile the resource file
[prompt]> .\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con
[prompt]>
[28 Jan 2019, 20:59:51]
Current Directory:
e:\Work\Dev\StackOverflow\q000284258
Commandline:
.\ResourceHacker.exe -open .\sample.rc -save .\sample.res -action compile -log con
Open : e:\Work\Dev\StackOverflow\q000284258\sample.rc
Save : e:\Work\Dev\StackOverflow\q000284258\sample.res
Compiling: e:\Work\Dev\StackOverflow\q000284258\sample.rc
Success!
[prompt]> dir /b
cmake.exe
ResourceHacker.exe
ResourceHacker.ini
sample.rc
sample.res
Dalam kasus Anda, menyimpan dan mengedit file sumber daya tidak diperlukan, karena file tersebut sudah ada, saya hanya melakukannya untuk mendemonstrasikan tujuan. Di bawah ini adalah file sumber daya setelah dimodifikasi (dan sebelum dikompilasi).
sample.rc :
1 VERSIONINFO
FILEVERSION 3,1,4,1592
PRODUCTVERSION 2,7,1,8
FILEOS 0x4
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName", "Cristi Fati\0"
VALUE "FileDescription", "20190128 - SO q000284258 demo\0"
VALUE "FileVersion", "3.1.4.1592\0"
VALUE "ProductName", "Colonel Panic\0"
VALUE "InternalName", "100\0"
VALUE "LegalCopyright", "(c) Cristi Fati 1999-2999\0"
VALUE "OriginalFilename", "ResHack\0"
VALUE "ProductVersion", "2.7.1.8\0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04E4
}
}
3. Sematkan
Ini juga akan dilakukan oleh Resource Hacker ( -action addoverwrite
). Sejak .exe s sudah disalin, saya akan mengedit sumber dayanya.
[prompt]> .\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con
[prompt]>
[28 Jan 2019, 21:17:19]
Current Directory:
e:\Work\Dev\StackOverflow\q000284258
Commandline:
.\ResourceHacker.exe -open .\cmake.exe -save .\cmake.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con
Open : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Save : e:\Work\Dev\StackOverflow\q000284258\cmake.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res
Added: VERSIONINFO,1,1033
Success!
[prompt]> copy ResourceHacker.exe ResourceHackerTemp.exe
1 file(s) copied.
[prompt]> .\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con
[prompt]>
[28 Jan 2019, 21:19:29]
Current Directory:
e:\Work\Dev\StackOverflow\q000284258
Commandline:
.\ResourceHackerTemp.exe -open .\ResourceHacker.exe -save .\ResourceHacker.exe -res .\sample.res -action addoverwrite -mask VersionInfo,, -log con
Open : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Save : e:\Work\Dev\StackOverflow\q000284258\ResourceHacker.exe
Resource: e:\Work\Dev\StackOverflow\q000284258\sample.res
Modified: VERSIONINFO,1,1033
Success!
[prompt]> del /f /q ResourceHackerTemp.*
[prompt]> dir
Volume in drive E is Work
Volume Serial Number is 3655-6FED
Directory of e:\Work\Dev\StackOverflow\q000284258
2019-01-28 21:20 <DIR> .
2019-01-28 21:20 <DIR> ..
2016-11-03 09:17 5,414,400 cmake.exe
2019-01-03 02:06 5,479,424 ResourceHacker.exe
2019-01-28 21:17 551 ResourceHacker.ini
2019-01-28 20:05 1,156 sample.rc
2019-01-28 20:59 792 sample.res
5 File(s) 10,896,323 bytes
2 Dir(s) 103,723,253,760 bytes free
Seperti yang terlihat, saya harus melakukan sedikit trik ( gainarie ) karena saya tidak bisa (setidaknya saya rasa saya tidak bisa) memodifikasi .exe saat sedang digunakan.
4. Uji
Ini adalah fase opsional, untuk memastikan bahwa:
- Dapat dieksekusi masih berfungsi (mereka tidak kacau dalam prosesnya)
- Sumber daya telah ditambahkan / diperbarui
[prompt]> .\cmake --help >nul 2>&1
[prompt]> echo %errorlevel%
0
[prompt]> .\ResourceHacker.exe -help
[prompt]>
==================================
Resource Hacker Command Line Help:
==================================
-help : displays these abbreviated help instructions.
-help commandline : displays help for single commandline instructions
-help script : displays help for script file instructions.
[prompt]> echo %errorlevel%
0
Dan Detail mereka :
UpdateResource
fungsi penggunaan , jika versi pembaruan tugas di pe yang ada