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

时间:2013-07-19 04:27:35

标签: c# c++ portable-executable

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

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

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

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

1 个答案:

答案 0 :(得分:3)

经常做最简单的方法就是不要这样做,只是假装你做了。

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

使用该课程:“更改”可执行文件,重命名(运行时允许),将其复制回原始名称(正式为新文件,未使用),并使用旧名称更改新文件。