如何使用ilMerge将dll合并到exe文件中?

4

可能是重复问题:
将.dll与.exe合并

好的,所以……我有ilmerge的所有文件,包括.exe(CabalMain.exe)和dll(crckd.dll),都在一个路径下。C:\Program Files (x86)\Microsoft\ILMerge

我按住shift键>右键单击文件夹并打开命令提示符。 由于我想要合并这两个文件,我输入:

    C:\Program Files (x86)\Microsoft\ILMerge>C:\Program Files (x86)\Microsoft\ILMerg
e\ilmerge C:\Program Files (x86)\Microsoft\ILMerge\Cabalmain.exe C:\Program File
s (x86)\Microsoft\ILMerge\crckd.dll /out:C:\Program Files (x86)\Microsoft\ILMerg
e

我相信这是正确的合并过程。

我收到了:

C:\Program Files (x86)\Microsoft\ILMerge>C:\Program Files (x86)\Microsoft\ILMerg
e\ilmerge C:\Program Files (x86)\Microsoft\ILMerge\Cabalmain.exe C:\Program File
s (x86)\Microsoft\ILMerge\crckd.dll /out:C:\Program Files (x86)\Microsoft\ILMerg
e

希望能提供简单的说明。


我之前就看到过这个问题(以及对它的回答或评论)。发生了什么事? - rene
是的,这是今天发布的一种流行的注入方式。我只需要知道,或者更确切地说,我想知道如何将.dll注入到.exe中,以及我的策略是否正确。 - user2016207
1个回答

4

由于您现在已经复制了ilmerge程序文件夹中的所有内容(这是不明智的,也被建议避免在重复问题中),因此正确的命令(从ilmerge文件夹中)应该是:

ilmerge cabalmain.exe crckd.dll /out:%userprofile%\cabalmainmerged.exe

如果没有显示错误,您可以键入start %userprofile%,然后在打开的资源管理器窗口中找到cabalmainmerged.exe。
“无法加载程序集”表示您尝试合并的exe或dll文件未复制到正确的文件夹中。如果其中一个exe或dll依赖于其他程序集,则所有程序集都必须在同一文件夹中。
更明智的做法是有一个名为c:\merge的文件夹,并将所有相关文件复制到该文件夹中。然后启动命令提示符并输入:

c:

cd\merge

然后
"C:\Program Files (x86)\Microsoft\ILMerge\ilmerge" "yourexe.exe" "your1stdll.dll" /out:mergedexe.exe

Rene,发生了这件事。 在合并过程中出现了异常: ILMerge.Merge: 无法从t\Microsoft\ILMerge\cabalmain.exe'加载程序集。跳过 at ILMerging.ILMerge.Merge() at ILMerging.ILMerge.Main(String[] args) - user2016207
你相当确定 cabalmain.exe 和 ilmerge 在同一个文件夹中吗? - rene
是的,正如你所看到的,它们都是Q_Q。 - user2016207
看起来你运气不太好。cabalmain.exe可能依赖于另一个你没有的dll文件。 - rene

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