首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >恶意软件 Downloader 与系统 Loader 的设计同源性

恶意软件 Downloader 与系统 Loader 的设计同源性

作者头像
码农UP2U
发布2026-03-16 17:25:32
发布2026-03-16 17:25:32
1100
举报
文章被收录于专栏:码农UP2U码农UP2U

前几天在群里看群友们聊天,其中一个人说,想通过提高项目管理能力来更好的管理生活,而群主说项目管理中的很多思想来源于生活。那这样是不是就形成了一个很好的互补呢?我觉得是的。项目管理也算是一门科学,当然了也要了解人性;生活虽然算不上是科学,但是也要了解人性,再加上一些科学的方式。不过都是说起来容易,做起来难啊!要是有信心,我觉得还是可以的!

很多事情要是往一起联系,感觉很多事情还是能联系到一起的。比如今天这篇文章就是两个看起来不相关的东西,但是还是能联系起来。(文章的题目是用来唬人的)

上面是调侃,下面是正文~!


0x01:恶意下载器:Downloader

有一种恶意软件,它本身不搞破坏,也没有破坏的功能,就是它不窃取你的数据,不控制的你的电脑之类的,但是它就是恶意软件。那它到底干了啥呢,被叫做恶意软件。这种恶意软件就是下载器,或者叫 Downloader。

Downloader 虽然不具备直接的破坏功能,但是它也是一种被专业设计出来的恶意软件,它的核心目的本身就不是要造成破坏,而是负责从远程服务器下载并执行更具危害的恶意程序。(很多下载站的下载器,虽然不给你下载恶意程序,但是它给你的电脑装一堆让你的电脑卡的要命的软件,也让人很烦躁!)

我们这里不讨论它的恶意功能,只是说这种设计很有意思。Downloader 本身体积很小,方便传播,这是它的优点;靠它的优点,它先侵入系统以后去下载更多的真正具有威胁的程序回来,并去运行它们。这样就相当于把恶意功能和加载器分离了。更符合 “专业的人干专业的事” 这样说法。软件设计上有一个名词叫 “责任分离”,是不是这样?

0x02:可执行程序加载器:Loader

说完 Download 以后来说说一个叫 Loader 的东西。我们在使用计算机的时候,通过 双击 或者 命令行 的方式运行程序的时候,操作系统都会通过一个 Loader 把程序文件装载到内存中,然后让它运行,完成从 程序 到 进程的一个过程。当然了,中间的步骤也是很多的,比如创建进程、线程的内核对象,映射文件、解析导入表、地址重定位等一系列过程。

我们的 pe、elf 等可执行文件都是这样被加载起来的。

加载器是操作系统的一部分,这部分对我们使用的用户来说是透明的,用户不用关心的,程序员也不用关心它。

不过说到这里,是不是也有前面 Downloader 的那种感觉了,程序员可以写不同的程序,然后都依靠相同的 Loader 就可以帮我们把我们的程序加载起来。也是一种 “责任分离”,也完成了 “抽象”,也完成了 “抽象”。

0x03:其他的 Loader

类似这样的设计还是挺多的,比如早期操作系统加载的时候 MBR 只有 512 字节,能做的事情很有限,所以它会把后面的部分(真正的内核吧)加载进内存,然后再跳转到加载入内存的部分进行后续的工作。其实现在的设计也是类似的。内核的 Loader 是引导操作系统的终点,但是也是操作系统开始运行的起点吧。

0x04:总结

为什么从 Downloader 开始说起呢,因为这个比较常见吧,因为现在的下载站下载回来的经常都是下载器。这些下载器再帮我们下载真正的软件。包括一些游戏官网也是这样,游戏官网的下载器可以帮我们更快的下载游戏。

然后通过 Downloader 引出进程的 Loader 和内核 Loader,就可以发现它们的设计思路殊途同归啊,抽象、解耦、分治、模块化……

设计这种思路是通用的,比如多核的 CPU,在主频没办法提高的时候,就变成了多核,这不就相当于单机性能到达极限的时候,去做个集群么!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 源代码010 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档