如何使用批处理文件创建EXE可执行文件?

3
我希望能够运行一个Windows批处理文件,并创建一个.exe可执行文件。
我知道你可以使用以下脚本在批处理中创建文件:
@echo off
echo This will be in a text file! >> test.txt
echo And this will be the second line! >> test.txt

我在想,是否有可能复制EXE文件的源代码,并在每行前面添加一个“echo”,在每行末尾添加一个“>> test.exe”?

我试着用Notepad ++打开39KB的.exe文件,但只是一堆黑色的NUL字符。

所以我想知道是否有一种方法可以在批处理文件中嵌入文件?甚至可能是音频文件吗?


请参见:http://stackoverflow.com/questions/27383152/storing-large-file-within-batch-file/27384211#27384211 - Aacini
1个回答

3

以下是使用certutil工具完成的方法。 在这个例子中,我们演示了如何使用内置在Windows中的whoami.exe的硬编码路径。

首先,创建一个脚本,将嵌入的.exe文件保存为.bat后缀:

@echo off
certutil -f -encode  %windir%\system32\whoami.exe whoami.b64
echo @echo off >container.bat
echo certutil -decode "%%~f0" whoami.exe>>container.bat
echo call whoami.exe>>container.bat
echo exit /b %%errorlevel%%>>container.bat
type whoami.b64>>container.bat
del whoami.b64

针对你的exe文件,你需要修改exe文件的路径。然后container.bat应该如下所示:

@echo off 
certutil -decode "%~f0" whoami.exe
call whoami.exe
exit /b %errorlevel%
-----BEGIN CERTIFICATE-----
...
..base64 encoded content...
...
-----END CERTIFICATE----

certutil可以对base64和hex进行编码/解码,其中base64更为方便,因为它可以嵌入到批处理中,并且可以使用封装(BEGIN CERTIFICATEEND CERTIFICATE)将其包含在内。此外,base64编码的字符串比hex编码的字符串更短。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接