c# - 如何使程序能够在运行时写入自己的可执行文件?

标签 c# c++ portable-executable

我想在我的可执行文件中替换或添加一些字节,在我的程序关闭后不使用辅助编写器。 我知道,通常这是不可能做到的,但如果需要这样做呢?

我知道一个名为 Unlocker 的程序,它可以删除当前正在使用甚至正在运行的文件。它以某种方式删除阻塞描述符。我认为它会将自己的 DLL 注入(inject)到每个正在运行的进程中。

所以,如果它将自己的 DLL 注入(inject)所有内容并以某种方式删除阻塞描述符,也许我可以对自己的可执行文件做同样的事情?至少,我不需要注入(inject)任何东西来编程,因为它是我开发的。

解决方案也可以在 C/C++ 中,我只是 DLL 从自己的 DLL 导入所需的函数。

最佳答案

经常做某事最简单的方法就是不去做,而是假装你做了。

例如,当声称要删除一个文件时,将其移动到同一磁盘上的另一个目录通常要容易得多。这只是将元数据(目录条目)复制过来的问题。

吸取教训:“更改”您的可执行文件,重命名它(运行时允许),将其复制回其原始名称(正式为新文件,未使用),并使用旧名称更改新文件。

关于c# - 如何使程序能够在运行时写入自己的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17738098/

相关文章:

c++ - 在哪里可以找到 Qt 库的开源小部件?

c - PE 文件 .text 部分大小

c# - 在 javascript 客户端访问隐藏变量与服务器变量

c# - GDI+ 离屏缓冲滚动

c# - 反转字符串哈希函数

c++ - 移动一个对象而不影响其他对象(使用opengl)

c++ - 简化模幂 C++

windows - MS 加载程序将 PE 文件的哪些部分映射到内存中?

c++ - 无法分析超过一定大小的 PE 文件

c# - WPF DropShadowEffect 和 Blur 内存泄漏