对我来说,说“嘿,让我们做操作系统”并不容易,我不会这么说。相反,我想分享尝试了解操作系统如何工作以及我如何自己制作一个小型操作系统(只是为了好玩和练习编程)的旅程。
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
-
恶意软件开发
-
-
-
windows网络安全防火墙与虚拟网卡(更新完成)
-
-
windows文件过滤(更新完成)
-
-
USB过滤(更新完成)
-
-
游戏安全(更新中)
-
-
ios逆向
-
-
windbg
-
-
还有很多免费教程(限学员)
-
-
-
更多详细内容添加作者微信
-
-
我认为第一个火花是一个名为“build-your-own-x”的 GitHub 存储库。该存储库包含一个有趣的项目列表,例如“构建自己的 shell”、“文本编辑器”等。
在浏览这个存储库时,我遇到了一个有趣的项目,引起了我的注意:“编写一个 Tiny x86 Bootloader”
虽然我觉得它很有趣,但当时我不懂汇编语言。我试图理解Joe Bergeron在他的博客中所说的话,但我意识到也许现在还不是时候。所以,我把它放在一边,以后再说。
几个月后,我找到了一个 YouTube 视频,解释了事情是如何工作的,什么是汇编程序、编译器和对象文件。我按照视频课程学习,直到我以某种方式流利地编写汇编程序。这些课程还讨论了 C 编程语言以及如何从 C 程序调用汇编函数,反之亦然。
从那时起,我开始学习C语言编程,并喜欢上了它。我开始了解 C 程序是如何工作的,方法是使用生成程序汇编代码的编译器参数对其进行编译。这样,我就弄清楚了 C 语言中的东西是如何实现的。例如,我想知道函数参数是如何传递给 C 中的函数的,所以我用 C 编写了一个程序,然后生成了该程序的汇编文件。通过查看汇编文件,我能够了解事情是如何完成的。
显然,我没有观看 YouTube 教程中的所有课程,我只抓住了我认为我需要的东西。所以在这一点上,我通过观看和学习各种在线资源来继续学习新事物,但我需要一个平台来实践我所学到的东西。
就在那时,我发现了“exercism”网站,它同时提供汇编和C实践。
起初,我意识到我对 c 和汇编一无所知,直到今天我还有同样的想法。但是在这个网站上练习和解决挑战让我读得更多,笔记更多,调试更多!
在花时间解决练习之后,虽然我解决了 54% 的汇编挑战和 20% 的 c 挑战,但我认为回到引导加载程序文章并再次阅读并测试我是否理解它是个好主意。 (值得一提的是,与此同时,我通过 c 做了一些 leetcode, 是的,这对我有帮助)
我讲了一个长话短说。是的,我确实读过它,虽然我并不容易理解一些概念,而且与我对计算机工作原理的理解存在一些冲突......不知何故,我设法在理解新事物、修改旧知识、测试想法和......
在我实现引导加载程序后,我在 YouTube 上看到了开发操作系统的 nano byte 频道。通过观看他的视频,第二个火花发生了。我关注了他的YouTube频道,从他那里学到了很多东西。
在这段旅程中,我学到了很多东西,对我来说,最好的时刻是从汇编切换到 c,这就像在裸机上运行一个 C 程序,没有任何操作系统,没有 c 运行时,没有 c 库。
总之,尝试了解操作系统如何工作并构建小型操作系统的旅程可能是一种具有挑战性但有益的体验。一路走来,我发现了很多资源,比如:
操作系统:三个简单的部分文章:https://pages.cs.wisc.edu/~remzi/OSTEP/
John R. Levine 的《Linkers and Loaders》一书
osdev网站: https://wiki.osdev.org
感谢您的阅读。请继续关注下一集。
原文始发于微信公众号(安全狗的自我修养):第 0 集:制作微型操作系统的旅程简介
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论