2013-07-19 15 views
0

我想在我的程序关闭后,在我的可执行文件中替换或添加一些字节,而不使用辅助写入程序。 我知道,通常这是不可能的,但如果这是必要的?如何使程序能够在运行时写入自己的可执行文件?

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

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

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

+3

您是否打算在安装了AntiVirus程序的PC上运行此应用程序? –

+0

是:O P.S.解锁器以某种方式避免受到惩罚。 – Kosmos

+0

您可以使用FileStream轻松打开一个exe文件,然后使用BinaryWriter进行编辑。但是,即使您可以这样做,您也需要知道exes存储在其中的可移植可执行文件格式,以了解您正在执行的操作。至于在运行时编辑程序,可以通过获取它们的进程,然后调用Windows核心函数来获取进程代码的入口点,但即使你管理它,你也必须知道该进程是如何布置的以及你必须知道机器代码才能进行适当的编辑。 – Pharap

回答

3

最简单的做法通常不是这样做,而是假装你做了。

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

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

+0

谢谢。这不是问题的答案,但是因为没有其他人可以使用,所以仍然可以使用:+1并被接受 – Kosmos

相关问题