我想在我的可执行文件中替换或添加一些字节,在我的程序关闭后不使用辅助编写器。 我知道,通常这是不可能做到的,但如果需要这样做呢?
我知道一个名为 Unlocker 的程序,它可以删除当前正在使用甚至正在运行的文件。它以某种方式删除阻塞描述符。我认为它会将自己的 DLL 注入(inject)到每个正在运行的进程中。
所以,如果它将自己的 DLL 注入(inject)所有内容并以某种方式删除阻塞描述符,也许我可以对自己的可执行文件做同样的事情?至少,我不需要注入(inject)任何东西来编程,因为它是我开发的。
解决方案也可以在 C/C++ 中,我只是 DLL 从自己的 DLL 导入所需的函数。
最佳答案
经常做某事最简单的方法就是不去做,而是假装你做了。
例如,当声称要删除一个文件时,将其移动到同一磁盘上的另一个目录通常要容易得多。这只是将元数据(目录条目)复制过来的问题。
吸取教训:“更改”您的可执行文件,重命名它(运行时允许),将其复制回其原始名称(正式为新文件,未使用),并使用旧名称更改新文件。
关于c# - 如何使程序能够在运行时写入自己的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738098/