自从拆解了几部安卓手机后,我对嵌入式系统的兴趣越来越大。
虽然手机本身并不是嵌入式系统,但我知道手机最终会取代计算机;因此,我想学习更多关于它们的知识。
就在那时,我开始学习ARM,并发现它们与嵌入式设备有许多相似之处。
从那以后,我就开始狂奔:我开始学习关于嵌入式设备的一切知识。
什么是嵌入式系统?
嵌入式系统是一种最有效、最经济地实现单一目的的设备。最常见的例子是物联网设备(如摄像头)。这通常需要只运行所需软件的软件;因此,需要嵌入式操作系统(例如嵌入式Linux)。
我首先决定探索的是树莓派,因为我之前已经有过一些经验(主要是针对基于黑客马拉松的项目,而不是逆向工程或二进制漏洞利用)。
而且这个系统的文档非常全面,使得了解它的某些方面(包括软件和硬件)的工作原理变得更容易。最后,找到开发工具也更容易,包括模拟器,这样我就可以在旅途中进行项目开发。
你也不一定非得从树莓派开始……还有其他的设备,比如Beaglebone设备、路由器、摄像头等等。然而,对于本教程来说,我将主要关注树莓派0。
在继续阅读之前,你需要了解的一些基础知识:
- 串行通信:这是通常用于调试输入和输出的信号。一般来说,这需要将电缆连接到引脚上;然而,使用QEMU,我们可以模拟到stdin/stdout。
- 引脚:这是嵌入式系统发送信号的方式(串行、JTAG等)。
- 工具链:这是我们如何编译代码的。我们经常进行交叉编译(因为我们假设在本教程中我们没有任何ARM硬件)。你可能听到的工具链是eabi、gnueabi和gnueabi-hf。对于本教程,我们只考虑eabi,因为它是裸机工具链(例如没有操作系统)。要了解更多关于gnueabi和gnueabi-hf的信息,请点击这里。
https://stackoverflow.com/questions/26692065/difference-between-arm-eabi-arm-gnueabi-and-gnueabi-hf-compilers#:~:text=the%20eabi%20stands%20for%20the,compilation%20of%20code%20for%20linux
要开始,我们需要某种Linux平台。为此,我使用了Ubuntu 20.04,但你可以选择你想要兼容下面列出软件的任何发行版。在你的发行版中,我们需要安装以下软件:
- GDB Multiarch —sudo apt install gcc-multiarch
- qemu (I am using 5.2 in this demo) — https://www.qemu.org/download/#source
- 逆向工程工具(我推荐Ghidra,但这是个人偏好)
- Optional: gcc-arm-none-eabi — sudo apt install arm-none-eabi-gcc
对于这个,我们将使用qemu-system-arm(这也是qemu-system-aarch64的一部分)。
它默认支持许多不同的设备,其他设备则可以通过设置实现。在使用qemu-system-arm时,需要注意一些重要事项。
首先,您需要指定如何读取输出和写入输入(特别是对于串行)。
由于我们不是在处理实际的硬件,因此我们不能使用引脚来与设备交互。
例如,假设我们要模拟一个名为kernel.img的内核,我们需要运行以下命令来运行它:
- qemu-system-aarch64 -M raspi0 -kernel kernel.img -serial null -serial stdio
如果我们想做同样的事情,但是我们可以连接到GDB,我们可以运行以下命令:
- qemu-system-arm -M raspi0 -kernel kernel.img -serial null -serial stdio -S -gdb tcp::4269 -boot c
此命令具体打开一个GDB服务器,我们可以通过gdb-multiarch连接到它,并与之交互。要连接到它,我们运行以下命令。
- gdb-multiarch
- add-symbol-file kernel.elf — Run this command if you have an elf file for your kernel, otherwise, it is optional.
- target remote localhost:
我强烈建议将其制作成gdb脚本文件。这样,您也可以使gdb更易于管理。有关GDB脚本的优秀教程可以在这里找到:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。
最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。
最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。
学习路线图
其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。
相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。
网络安全工具箱
当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。
项目实战
最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~
面试题
归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
多位朋友的亲身经验打磨的面试题合集你绝对不能错过!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-l0rwa2pG-1712602024501)]