go 编写更新程序改名自删疑问

2020-05-11 15:49:46 +08:00
 ropon

需求:


疑问:

2607 次点击
所在节点    Go 编程语言
18 条回复
davidyanxw
2020-05-11 16:01:13 +08:00
你这是要写个病毒?
neoblackcap
2020-05-11 16:10:27 +08:00
下载完了,校验然后就退出原来的程序,启动一个清理程序清理以及改名不就可以了?
hwdef
2020-05-11 16:20:24 +08:00
启动第三个程序,
a b c
a 升级为 b
a 退出 调用 c 删除 a
ropon
2020-05-11 16:28:03 +08:00
@hwdef 一个程序能实现吗
hwdef
2020-05-11 16:30:52 +08:00
或者 a 就不做这些功能,,,,c 一直在监控,,更新删除都由 c 来做。
hwdef
2020-05-11 16:31:18 +08:00
@ropon 一个程序应该不行吧,,,会占用着,,删不掉。。
hwdef
2020-05-11 16:31:58 +08:00
估计要看看底层了。。。让程序运行在内存,,然后删掉自己,,否则会一直锁着吧,,,不懂。。。
wafm
2020-05-11 16:32:26 +08:00
我在写桌面程序的时候是做了一个中转应用执行脚本去操作的
actar
2020-05-11 16:33:31 +08:00
a 更新,下载 a_update
a 启动 a_update,传参,a 退出
a_update 删除 a
a_update 复制 a_update 到 a
a_update 启动 a,传参,a_update 退出
a 删除 a_update
actar
2020-05-11 16:33:57 +08:00
DefoliationM
2020-05-11 16:34:27 +08:00
第一个程序检测到更新的时候,调用第二个程序(更新程序),结束第一个程序进程并进行更新,然后启动更新后的程序,最后结束更新程序。
None123
2020-05-11 16:35:29 +08:00
写病毒还是外挂?
DefoliationM
2020-05-11 16:36:52 +08:00
linux 下即使程序在运行也能删除运行文件,但是程序不会结束,会在目录下留下一个.开头的临时文件,所以在 linux 下可以直接替换,但是需要手动重启一下程序。windows 下就不清楚了。
Vegetable
2020-05-11 16:38:46 +08:00
linux 好像可以吧
- 下载新的
- 把自己删了
- 把新的改名为自己的文件名
- 退出
windows 一个程序可能有点难
actar
2020-05-11 16:44:36 +08:00
windows 下,os.Rename() ,可以直接改名。没法直接删除。os.Remove 报 Access is denied.
lniwn
2020-05-11 16:59:21 +08:00
这种一般都可以释放一个中间脚本来完成的,windows 释放 bat,linux 释放 sh 或者 python
ropon
2020-05-11 17:29:40 +08:00
execve(pathname, argv, envp) 加载一个新程序(路径名为 pathname,参数列表为 argv,环境变量列表为 envp )到当前进程的内存。这将丢弃现存的程序文本段,并为新程序重新创建栈、数据段以及堆。通常将这一动作称为执行一个新程序。
janxin
2020-05-11 17:53:55 +08:00
一般都是有一个专门的更新程序去做,防止出错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/670584

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX