关于PXE部署的详细配置的文章已经有不少了,这篇文章主要讲一下PXE启动的原理以及PXE启动和普通Linux启动的对比。
Inline Hook技术能够帮助我们完成函数的动态拦截和跳转,但要实现缺陷函数的自动化热修复则会面临更加复杂的挑战。本文从一个实际例子出发,阐述了在对二进制形式的Linux固件做自动化安全加固的时遇到的技术难题和解决办法。
最近入坑iot,涉及很多芯片固件的逆向。但是这些固件很多时候都不是标准二进制格式,也就是说丢进ida,识别不出架构和指令集。架构和指令集可以查芯片的文档,但是加载基址还没法确定,这个靠自己去定位,再配置ida。人工做这个工作太累,而我又是懒狗,所以自动化这一过程不香吗?
hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。
1.宏函数会在编译预处理时展开,只占编译时间,函数调用则会占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以执行相对宏会较慢。
1.问题背景 在客户量产中,出厂的板子rf参数不太可能做到完全一致,所以需要etf固件来校准rf参数。但是如果烧录完etf固件又再一遍烧录应用固件生产起来就比较麻烦。把两个固件合并在一起的话可以减少生产工序,提高生产效率。
为何更改为 4096 字节扇区? 如果您熟悉磁盘结构,就知道磁盘是被分解成扇区 的,大小通常是 512 字节;所有读写操作均在成倍大小的扇区中进行。仔细查看,就会发现硬盘事实上在扇区之间包括大量额外数据,这些额外字节由磁盘固件使用,以检测和纠正每个扇区内的错误。随着硬盘变得越来越大,越来越多的数据需要存储在磁盘的每一单位面积上,导致更多低级别错误,从而增加了固件纠错功能的负担。 解决该问题的一个方法是将扇区大小从 512 字节增加为更大的值,以使用功能更强大的纠错算法。这些算法可使每个字节使用较少的数据,从
作用: 确定用于启动的设备; 从启动的设备的位置搬移一小段代码(4k/8k/16k)到RAM中运行,即SPL;
通过有线方式进行升级,叫本地升级,比如通过UART,USB或者SPI通信接口来升级设备固件。
Android系统完整的启动过程,从系统层次角度可分为Linux系统层、Android系统服务层、Zygote进程模型三个阶段;从开机到启动Home Launcher完成具体的任务细节可分为七个步骤,下面就从具体的细节来解读Android系统完整的初始化过程。
4.通电1分钟左右系统启动完成进入登录界面,在此过程中,LED灯会亮蓝灯,5秒后熄灭。
大部分人都是在关注功能本身,只有我看上了这个改装的小舵机。因为市面上的舵机只能接收PWM信号,进行角度控制。
照理来说,USB-CAN这种东西应该已经被做的烂大街的工具,国内居然没有一个拿得出手的开源方案。某立功和PCAN动辄2000+的价格也是离谱。淘宝上各种虚拟串口方案、替换dll兼容某立功软件的各种方案....价格都倒是便宜,性能和可靠性嘛.......就不多说了,上位机软件也是烂的一塌糊涂。
2018年7月21日,拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,倾力打造一场技术干货的饕餮盛宴——2018 安全开发者峰会,将在国家会议中心隆重举行。会议面向开发者、安全人员及高端技术从业人员,是国内开发者与安全人才的年度盛事。
A7105是一枚使用于2.4GHz ISM频段低成本无线收发射频集成电路,内含高灵敏度的接收电路(250kbps@-99dBm)和高效率的发射电路,适合于通信距离在30m以内的用场场合。A7105 具有可以编程的工作速率, 最高为500Kbps。在数字接口部份,提供4pin(SPI)或3pin 接口方式, 在RF 数据的处理有两种模式可供选择 : FIFO(先入先出缓冲器,利用RF 内部的memory 先储存要发射和接收的数据), Direct(直接发射及接收)。在FIFO 模式下, 也支援CRC(CRC16), FEC(约可增加灵敏度1~2dbm),data whitening(也即数据加密), 曼切斯特编和解碼。A7105 内建接收信号强度指示RSSI, 温度传感器, 以侦测环境对RF IC 的影响, 同时内含一路 ADC 侦测使用电压。无线唤醒机制, 从而延长电池使用寿命。
在计算机领域,软件、硬件与固件是三个重要且密切相关的概念。尽管这三个术语常被提及,但它们的具体含义和相互关系可能并不为所有人所熟知。本文将深入探讨这三个概念,特别是固件,以及BIOS和UEFI在固件中的典型应用。
好的Linux运维工程师区分在效率上。如果一位高效的Linux运维工程师能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间就是金钱,不是吗? 技巧是为了提高管理效率。虽然本文不打算对所有 技巧进行讨论,但是我会介绍 “懒惰” 管理员所用的 10 个基本法宝。 这些技巧可以节约时间 —— 即使没有因为高效而得到更多的报酬,但至少可以有更多的时间去玩。 技巧1:卸载无响应的 DVD 驱动器 网络新手的经历:按下服务器(运行基于 Red
做了一段时间的 GPU 固件和驱动开发,加上平时学习的一些零散的知识,最近打算整理,将这些做成一页文章。 主线任务:梳理 GPU 的知识大纲 =====> 对标 GPU入门工程师 支线任务:了解 GPU 硬件工作机理 支线任务:掌握 GPU 固件工作机理 =====> 对标 GPU固件工程师 支线任务:了解 GPU 驱动 和 GPU 固件的交互接口 支线任务:掌握 GPU 驱动工作机理 =====> 对标 GPU驱动工程师 支线任务:了解 GPU 驱动 和 LIBDRM 的交互接口
作者:Vallard Benincosa, 来源: https://www.ibm.com/developerworks/cn/linux/l-10sysadtips/ 好的系统管理员区分在效率上。如果一位高效的系统管理员能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间就是金钱,不是吗? 技巧是为了提高管理效率。虽然本文不打算对所有 技巧进行讨论,但是我会介绍 “懒惰” 管理员所用的 10 个基本法宝。这些技巧可以节约时间
好的系统管理员区分在效率上。如果一位高效的系统管理员能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间就是金钱,不是吗?
Tools & Tool APIs : 指令工具集 , 手动编译 Java 源码时会用到 , 如 java 执行字节码程序 , javac 编译字节码程序 , javadoc 生成 Java 文档 ;
本篇文章是VMware官网的 使用VMware Workstation Pro - VMware Workstation Pro 14.0 的开源手册的摘抄版本,摘取一些非常有用的东西,和大家分享一下。 手册链接:使用 VMware Workstation Pro - VMware Workstation Pro 14.0 感兴趣的小伙伴,可以下载下来,好好看看,有260多页。 ---- 导言 高中就玩过vmware,第一次接触感觉很神奇,竟然可以在一个系统里面在运行系统,拿它试验装机,折腾
一些基于 Linux 的计算机系统系统需要一个intramfs才能正常启动。在本指南中,将说明 initramfs 的概念,以及如何正确地创建和管理 initramfs。
介绍:从事电气自动化行业,多次获得物联网设计竞赛,爱好嵌入式设计开发,物联网开发。
综合资料百度云:https://pan.baidu.com/s/1kJdJ6xc12Yg4rPby_MatDA 提取码:4u7d
几十年来,个人电脑一直受到病毒、蠕虫和其他恶意软件的困扰。最早的一些个人电脑病毒是以引导扇区病毒的形式传播的:它们以代码形式存在于软盘的引导扇区中,当用户使用受感染的 DOS 软盘启动计算机时,病毒就会从一台计算机传播到另一台计算机。虽然随着软盘的淘汰和互联网连接的普及,其他病毒传播方式也逐渐受到重视,但预启动的恶意软件对系统安全仍造成巨大威胁。通过在操作系统内核获得计算机控制权之前执行,恶意软件可以 "隐藏 "起来,从而使病毒扫描程序几乎无法检测到恶意软件。
话说 root 这个词儿,源自 Unix/Linux。因为在 Unix 的世界里,root 用户就是超级用户,是系统管理员,相当于 Windows 系统中的 Administrator,也就是一个 Unix 系统中的 “上帝”!
前面讲解的很多内容都很抽象,所以本次系列决定"接点地气",准备开始讲解大家熟悉的Activity了,为了让我以及大家更好的理解Activity,我决定本系列的课程主要分为4大流程和2大模块。 4大流程如下:
1 说明背景1.1 近来想法1.2 几个概念2 全局视角2.1 应用场景(了解)2.2 大概原理(了解)2.3 技术图景(了解)3 用户空间3.1 OpenGL 和 libGL(了解)3.2 libXCB 和 XServer(了解)3.3 libGL 和 Mesa(了解)4 用户和内核4.1 软件构图(了解)4.2 驱动视角(待掌握)4.3 源码视角(了解)5 内核和固件5.1 工作流程(掌握)5.2 交互途径(掌握)5.3 寄存器组设计(掌握)5.4 通信协议设计(掌握)6 固件和硬件6.1 固件软件设计(掌握)6.2 软件硬件接口(了解)6.3 体系结构简介(了解)6.4 图形流水线(了解)7 参考资料
2019 年 11 月,Mozilla、英特尔、RedHat 和 Fastly 公司宣布成立字节码联盟(Bytecode Alliance),英特尔的 WebAssembly Micro Runtime(WAMR)和 Mozilla 主导的 WASMTIME 成为转入字节码联盟的第一批核心开源项目。字节码联盟的目标是基于 WebAssembly 和 WebAssembly System Interface(WASI)等标准创建一个安全、高效和模块化的新运行引擎(Runtime)环境和语言工具链,同时推广让尽可能多的平台和设备使用它们。
上一篇文章分了一下ARM系统的路由器漏洞,本次打算尝试一下MIPS系统,于是选了最近DLink路由器的漏洞CVE-2019-17621作为目标。同样一路走来各种踩坑不断,“纸上得来终觉浅,绝知此事要躬行”,对整个过程做一下梳理。
之前家中免费的电信宽带免费升级到500M后,原有的360 P1百兆路由器很明显无法提供500M的网络速度,然后购买了一款小米AC2100路由器。
作者:bobyzhang,腾讯 IEG 运营开发工程师 0. 故事的开始 0.1 为什么和做什么 最近家里买了对音响,我需要一个数字播放器。一凡研究后我看上了 volumio(https://volumio.org/) 这是一个基于 Debian 二次开发的 HIFI 播放器系统,可以运行下 x86 和树莓派上。 我打算让 volumio 运行在我 2009 年购买的老爷机笔记本上,也让它发挥一点余温热。正常操作是将 volumio 的系统镜像刷到 U 盘上,连接电脑后使用 U 盘启动系统即可。但是家
DroneKit-Python是一个用于控制无人机的Python库。DroneKit提供了用于控制无人机的API,其代码独立于飞控,单独运行在机载电脑(Companion Computer)或其他设备之上,通过串口或无线的方式经MAVLink协议与飞控板通信。除了DroneKit-Python以外,还有DroneKit-Android以及DroneKit-Cloud的API供不同的开发者使用。
CVE-2016-10277是存在于摩托罗拉系列手机的bootloader高危漏洞,可以通过内核命令注入劫持手机的启动流程,加载攻击者控制的initramfs,从而达到root提权的目的。我们手上正好有一个摩托罗拉的MOTO X手机,于是参照[1]的漏洞利用过程,将CVE-2016-10277的漏洞利用过程实践了一把,复现过程还是十分曲折。 0x00 系统环境 1.手机: MOTO X(XT1581) 2.系统固件版本: 3.Android版本:5.1.1 在漏洞利用过程中需要用到手机boot.img中的a
1.kali2.0镜像文件 - 下载地址:https://www.kali.org/downloads/
在嵌入式开发中,经常要用到Flashloader功能,今天我们就来开始以飞思卡尔Kinetis的Flashloader为例来讲讲,大概需要4~5节,内容比较多,每天掌握一点,不要贪多。今天先简单介绍下Kinetis的Flashloader。 简介 飞思卡尔kenetis设备的flashloader的主要任务就是装载用户固件镜像到Flash,镜像分为两部分:flashloader_loader和flashloader, 在设备复位后,flashloader_loader首先执行, flashloader_lo
本文主要介绍了 Allwinner 安全方案的组成与功能。安全完整的方案基于 normal 方案扩展, 覆盖硬件安全、安全启动(Secure Boot)、安全系统(Secure OS)、安全应用(Trusted apps)等方面。本文从硬件安全、安全启动(Secure Boot)、安全系统(Secure OS)、安全应用的开发(TA/CA 开发指引)、固件密钥存储、安全系统在 Flash 上的加密保存几个方面进行介绍。
最近小区结束了封闭管理,晚上抽个人少的时间段,去外面跑跑步,毕竟将近一个月没有出去过了。没想到在回家的路上见到了一个大博的路由器。小家伙外壳有点土,但是整体成色还不错,啥也没想,带回家看能不能玩一下。接上电之后是可以使用的。但是家里面已经有一台路由器了。想着能不能做一个旁路由使用。
微代码就是由 Intel/AMD 提供的 CPU 固件。Linux 的内核可以在引导时更新 CPU 固件,而无需 BIOS 更新。处理器的微码保存在内存中,在每次启动系统时,内核可以更新这个微码。这些来自 Intel/AMD 的微码的更新可以去修复 bug 或者使用补丁来防范 bug。
GPIO 简介 : 英文全称 General-Purpose Input / Output Ports, 中文翻译为 : 通用输入输出端口;
1引言 目前对于诸如USB鼠标、键盘等这样的计算机标准外设,Windows系统已经提供了标准的驱动程序,用户无需再进行任何开发工作。而开发专用USB设备,需要开发专用的驱动程序。 Windows2000/XP操作系统不允许用户程序直接访问硬件设备。为了实现对硬件设备的访问和控制,必须通过操作系统所认可的驱动程序对硬件设备实现间接访问和控制。驱动程序通常被认为是操作系统的组成部分,所以,开发驱动程序有严格的规范,被认为是“计算机高手”的工作。而利用DDK进行基于WDM(Win32 Driver Model)驱动程序开发,使驱动程序的开发变成了一项比较简单的工作。 2 Win32驱动程序模型 USB设备驱动程序必须符合由Microsoft为Windows 98及其后版本所定义的Win32驱动程序模型(Win32 Driver Model,WDM)规格。这些驱动程序称为WDM驱动程序,扩展名为.sys。 WDM定义了一个基本模型,处理所有类型的数据。例如,USB类驱动程序为所有USB 设备提供了一个抽象的模型,并具有由所有客户驱动程序使用的定义好的接口。有了对所有设备类型共同的核心驱动程序模型,使驱动程序开发人员更容易从一种类型的设备移动到另外一种类型的设备上去。而且它也意味着驱动程序模型的内核实现尽可能是固定的。 USB是使用标准Windows系统USB类驱动程序访问USBDI(Windows USB驱动程序接口)的USB设备驱动程序。USBD.sys就是Windows系统中的USB类驱动程序,它使用UHCD.sys来访问通用的主控制器接口设备,或者使用OpenHCI.sys访问开放式主控制器接口设备。USBHUB.sys是根集线器和外部集线器的USB驱动程序。在PCI枚举器发现了USB主控制器之后,它会自动装入相关的驱动程序。 3 Windows USB驱动程序接口 大多数客户化的USB设备需要由用户来编写设备驱动程序,以响应内核态或用户应用程序的请求。在内核级,命令由客户驱动程序使用内部IOCTL发送给USB系统,例如IOCTL-INTERNAL-USB-SUBMIT-URB允许发出USB请求块(URB)给系统USB驱动程序。URB允许发出几个功能调用给USB系统。用户态USB实用程序也可以发出几个普通IOCTL给USB设备,目的仅仅是得到连接设备的信息。 3.1函数驱动程序 函数驱动程序(function driver)让应用程序与USB设备,通过API函数来沟通。这些API函数属于Windows的Win32子系统,Win32子系统同时也管理着执行应用程序。函数驱动程序与较低级的总线驱动程序沟通,总线驱动程序控制着硬件。 图1是应用程序与各个驱动程序,如何一起完成USB通信的结构图。当设备或子类别的要求超过类别驱动程序的能力时,会有辅助的过滤器驱动程序来类别驱动程序的能力。一个上层的过滤驱动程序位于类别驱动程序的上方。这样,从客户应用程序传来的要求,会先经过上层的过滤驱动程序,然后才传给类别函数驱动程序。一个下层的过滤驱动程序位于类别驱动程序和总线驱动程序之间,如图1。类别驱动程序会将要求传给下层的过滤驱动程序,然后再传给总线驱动程序。 图1应用程序与驱动程序完成USB通信的结构 通用串行总线驱动程序(USBD.SYS)是USB系统中负责管理通用串行总线的工作,位于主机上的一个软件。USBD负责控制所有的USB协议操作和高层的中断处理控制。在Windows98及以上版本中,Microsoft定义了一个新的设备驱动程序模型,称之为Windows设备驱动程序模型(WindowsDriver Model或WDM)。 USB客户应用程序也是一种设备驱动程序,通过定义的一个称之为USB接口的层间接口来访问其下方的USB软件。应用程序正是通过这些USB客户软件来实现与USB设备之间的通信。 针对USB客户应用程序的开发,相应版本的Windows操作系统的设备驱动程序开发包(Device Driver Developer’s Kit,即DDK)给出了相应的USB接口函数。并提供了对于这些函数具体使用的参考文档。 3.2 USBDI的IOCTL 为了编写USB设备驱动程序,通常还要在源代码中包含DDK所提供的几个头文件。这些头文件在Windows98下存放在/98DDK/inc/win98目录中,在Windows 2000下存放在/NTDDK/inc/win2000目录中。这些头文件的用途可以总结如下: usb100.h 定义了在USB设备驱动程序设计中所要用到的各种常量和数据结构。 Usbdi.h USBDI例程,其中包括对USBD和USB设备驱动程序通用的数据结构,适用于内核和用户模式。 Usbdlib.h URB构造和各种例程,定义了USBD所输出的服务,适用于内核和用户模式。 Usbioctl.h 给出了对IOC
一个机型各项参数一般有IMEI WiFi 蓝牙 sn psb ESN等等。 针对这些参数的修改首先要明白各自软件检测的具体是哪些参数来验证。
简介针对物联网相关攻击阶段识别面临的时间分散和空间分散两大挑战,论文提出了一个分布式框架ADEPT,可以跨时间和空间关联可疑活动并将其分类为可能的攻击阶段。方法ADEPT框架分为三阶段第一阶段:通过物联网网关设备检测各种异常。离线操作:建立哈希表存储与网关连接的物联网设备的配置表以检测设备变化,由于设备的正常行为可能随时间推移而改变,例如固件更新,因此定期(
作为一种编程语言,本身是谈不上工作原理的,实际上C语言所有的语法,正是C语言编译器的工作原理或者工作机制的具体实现。要细致的讨论起来是不可能,但是作为C语言程序员,必须了解这个大致的流程。一个程序,从C语言源码,到系统可执行的文件,一般经历四个过程。
80年代640K内存对哪个人都够用了。那时微软开发的还是DOS os,程序员们还在想如何压榨完有限的640K内存。 而现在,随便一个笔记本都16G内存了,比那时多了一万倍。那当时这种言论是无稽之谈吗?为何觉得这么小内存就够了呢?
大家周末好,本周给大家开始分享Linux内核系列的文章,Uboot的系列文章同时也更新。好了废话就不多说了,开始主题分享。
最近有个科研课题需要在树莓派上做一系列验证,但是实验的程序是依赖OpenCV库的(最重要我们修改了库源码),而在树莓派上编译OpenCV源码很费时间,因此我只好使用交叉编译的方法来编译源程序。刚开始我们觉着网上材料大片,这部分的问题应该不大。可到操刀干活的时候,我才发现网上很多方法不仅繁琐,而且有的甚至还不是那么一回事,没看到一篇完全适合我的情况的。于是,我花了一天半左右的时间,整理这些材料并结合一点TRIZ原理,完成了这项任务。现在分享一下我的方案总结,不过我的方案不尽完善,欢迎大家指点修正,帮助后人节省时间。
现在很多项目开发都逐渐的迁移到Linux环境下。但是Linux开发单片机就没有像Windows下开发那么方便,它没有对应开发工具(KEIL,IAR等),它们自带烧录等功能。所以在Linux上开发单片机需要安装下载固件的工具--JLink。
领取专属 10元无门槛券
手把手带您无忧上云