登录
首页 >  Golang >  Go问答

在Go语言中如何实现自身覆盖程序执行

来源:stackoverflow

时间:2024-02-24 12:21:24 372浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《在Go语言中如何实现自身覆盖程序执行》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我尝试编写一个程序,它可以打开自身、读取自身并查找某个地址或字节以替换为其他值。

我的目标是制作一个程序,通过在第一次运行时修改一些字节来了解它是否是第一次运行(而且我真的不喜欢在程序之外创建文件) p>

可执行文件可以读取自身,但当它尝试自我覆盖时,它会抛出错误(其他进程使用的文件......如预期)

有没有办法让程序覆盖自身?如果不是,也许我可以修改只包含数据的程序的一部分? 还有其他我不知道的简单解决方案吗?

(我使用 Linux 和 Windows 作为操作系统。)


解决方案


解决方法可以是(因为它不会覆盖自身,它只是创建另一个文件):

  1. 复制原始可执行文件的所有内容
  2. 修改我需要的内容
  3. 将原始可执行文件重命名为固定名称“旧版本”
  4. 将修改后的字节写入“原始名称”(修改后的可执行文件)
  5. 启动刚刚创建的新可执行文件
  6. 要么让原始可执行文件自行删除,要么从刚刚创建的修改后的可执行文件中删除

我认为即使不是以最干净的方式完成工作(程序必须从头开始,但我想这是不可避免的)...

如果有人仍然知道更好的方法,更欢迎您写下您的想法。

据我了解,您的目标是查明该程序以前是否运行过。不要遵循您提出的为什么不创建文件的想法,可以是任何文件,而是在运行时检查该文件是否存在。如果它在那里,那么它之前已经运行过,否则没有。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在Go语言中如何实现自身覆盖程序执行》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>