Blog

「抽象与加层解决一切」

嵌入式设备硬件组成

CPU+Memory+I/O interface

1. CPU 与通用计算机相比,嵌入式处理器通常具有较小的体积、低功耗、高可靠性等特点。 常见的嵌入式处理器包括ARM、MIPS、PowerPC、Intel x86等架构。ARM架构由于其低功耗、高性能、广泛的应用和生态系统,已经成为了嵌入式系统中最流行的处理器架构之一。 CPU位数 8位单片机 32位/64位嵌入式CPU (目前主流) 2. Computer Memo...

Greenhouse-RD

论文阅读简单记: greenhouse

研究背景 物联网设备数量众多, 其中隐藏了大量的安全漏洞。为了更多的发现漏洞, 研究者希望将一些已有的技术应用在嵌入式设备中, 但由于嵌入式设备的特性导致对其使用这些技术十分困难。 引入rehosting技术: 在高算力仿真环境中重新托管嵌入式设备的固件, 该方法存在的主要问题是: 每个IoT设备具有特定特征与功能, 需要高仿真度的模拟 重托管目标 物联网固件分类: ...

Greenhouse-AE

对嵌入式设备固件托管方案Greenhouse的Artifact Evaluation

Artifact Evaluation: Greenhouse USENIX 20231 本次测试基于 VMvare17 Ubuntu 20.04 Greenhouse USENIX 2023 Artifact Evaluation Version v5 测试时间 2024.10.07 下载 artifact 作者在zenodo上提交了论文对应的artif...

Manjaro-Linux 配置esp32-3开发环境

安装esp-idf 的命令行程序

Manjaro-Linux 配置esp32-s3开发环境 01. Manjaro 安装依赖软件 1 2 3 4 sudo pacman -S --needed \ gcc git make flex bison gperf \ python-pip cmake ninja ccache \     dfu-util libusb 02. 安装 ESP-IDF 下载...

CPP-Class

模板, 重载, 封装, 继承, 多态

1. 函数模板 函数模板 无法直接编译,因此无法分离写 1 2 3 4 5 6 7 8 template<typename Tid> Tid funcN(Tid,Tid,Tid); template<typename Tid> Tid funcN(Tid a,Tid b,Tid c) { return ret; ​} 调用时手...

CPP-Basic

主要是C的内容

1. 变量与常量 变量/常量 变量 数据类型 变量名=初始值 常量 const 数据类型 变量名=常量值 constexpr 传统const的问题在于“双重语义”,既有“只读”的含义,又有“常量”(不可改变)的含义,而constexpr严格定义了常量 为不可改变。 const ...

CMake的基础使用

语法与文件结构

0. 示例 在命令行中调用CMake 1 2 3 cd build cmake .. make 编写CMakeList.txt: 手动指定文件 1 2 3 cmake_minimum_required (VERSION 2.8) project (demo) add_executable(main main.c testFunc.c) ...

obsidians-config

obsidians主题: border

效果展示 [!NOTE] 效果图仅供参考. 主题配置 尝试安装了border1主题, 在默认配置还是有点小问题,​用style setting改了下设置. 主要是把深色模式改成了我个人比较喜欢的nord2配色,结果如上图所示. References https://github.com/Akifyss/obsidian-border ...

密码学常识

Crypto Knowledge

分组加密 加密算法 密钥长度 明文分组长度 轮数 子密钥数量 结构 S-Box DES 56 64 16 16 Feistel 8×6→8×4 ...

软件逆向05

二进制插桩

1. 二进制插桩 不能移动原代码 2. 静态插桩SBI 使用二进制重写的方法永久修改磁盘上二进制程序。SBI对二进制程序进行反汇编,按需添加插桩代码并保存更新后程序。 要求:在不破坏现有代码和数据引用的前提下,添加插桩代码 优点 速度快 只需要发布修改后二进制程序即可 缺点 SBI插桩后造成的影响是永久的 SBI相较于DBI容易出错,因为需要先进行反汇编才可以插桩...