Assembly 编辑或创建链接的dll文件

Assembly 编辑或创建链接的dll文件,assembly,dll,exe,reverse-engineering,Assembly,Dll,Exe,Reverse Engineering,我有一个简单的exe文件链接到dll文件,它使用其中的一个函数-GetHour(它只返回当前时间)。 我想更改dll文件并插入我自己的函数,以便每次运行exe时,都会创建一个包含一些文本的新文件。不幸的是,我很难做到这一点。 我无法使用DotPeek打开dll文件,可能是因为它不是.NET(我不完全理解这意味着什么)。 我尝试使用自己的GetHour函数编写一个新的dll文件,但由于以下错误而失败: The application was unable to start correctly (0

我有一个简单的exe文件链接到dll文件,它使用其中的一个函数-
GetHour
(它只返回当前时间)。
我想更改dll文件并插入我自己的函数,以便每次运行exe时,都会创建一个包含一些文本的新文件。不幸的是,我很难做到这一点。
我无法使用DotPeek打开dll文件,可能是因为它不是.NET(我不完全理解这意味着什么)。
我尝试使用自己的
GetHour
函数编写一个新的dll文件,但由于以下错误而失败:

The application was unable to start correctly (0xc000007b)
我真的不知道如何处理这两个问题,如果能得到一些帮助,我将不胜感激。 提前谢谢

NET(我不完全理解这意味着什么)

在windows上,有两种“类型”的DLL。您有“普通”DLL,其中包含本机代码(=机器代码)和.NET DLL,其中包含由C#编译器发出的IL(例如)

DLL文件是,因此它们遵循一种特殊的文件格式,如果您创建的DLL不匹配,则会出现此错误。在hexeditor中编辑PE文件非常困难且容易出错


有些工具(如PE Explorer)可以帮助您完成任务,但它们通常需要对PE文件格式有很好的了解。

加载DLL后是否要更改内存中的DLL?或者只是用它自己的函数实现来创建一个新的DLL?这似乎是一个明显的例子,因为调试问题缺少一个新的DLL。