linux 内核解压反编译符号恢复

厂商内核与驱动定制:嵌入式Linux软硬协同实战指南 厂商内核与驱动定制是嵌入式Linux系统开发的核心能力,本质是在芯片硬件约束下,通过内核配置、设备树描述和驱动代码三层定制,实现功能可用、性能达标与长期稳定运行。其原理涉及Kconfig资源仲裁、Device Tree硬件建模、probe时序控制等底层机制,技术价值在于突破主线内核的通用性局限,解决真实产线中启动失败、中断丢失、DMA错乱、温升宕机等典型问题。广泛应用于工业网关、车载域控制器、AI边缘设备等对实时性、可靠性和安全启动有严苛要求的场景。本文聚焦可复现的工程实践路径,覆盖从内核选型、dts编写、 阅读详情

linux内核分析通常需要编译带符号的文件或安装带符号的内核才方便分析,这里记录下直接解压vmlinuz从导入 sudo cat /proc/kallsyms实现二进制分析linux内核

解压内核

lier@lier-vm:~$ sudo bash

//1查找压缩文件位置  位于1f 8b 08
root@lier-vm:/home/lier# od -t x1 -A d code/vmlinuz-5.8.0-55-generic | grep "1f 8b 08"
0016800 8d 80 00 02 00 00 ff e0 1f 8b 08 00 00 00 00 00
root@lier-vm:/home/lier# cd code/

//2.解压内核skip偏移位于16800+8, 偏移处

root@lier-vm:/home/lier/code# dd if=vmlinuz-5.8.0-55-generic bs=1 skip=16808 | zcat >vmlinux-jay5-8
9779096+0 records in
9779096+0 records out
9779096 bytes (9.8 MB, 9.3 MiB) copied, 9.7599 s, 1.0 MB/s

gzip: stdin: decompression OK, trailing garbage ignored

root@lier-vm:/home/lier/code# file vmlinux-jay5-8
vmlinux-jay5-8: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=446519eb5d6d021a525bf98dd4b51924c50852e0, stripped
root@lier-vm:/home/lier/code# exit
exit

导出内核符号
lier@lier-vm:~$ sudo cat /proc/kallsyms > kallsyms.txt

ida解析脚本导入内核符号

import idaapi
import idautils
import idc

def do_rename(l):
    splitted = l.split()
    straddr = splitted[0]
    strname = splitted[2].replace("\r", "").replace("\n", "")

    eaaddr = int(straddr, 16)
    #idc.MakeCode(eaaddr)
    #idc.MakeFunction(eaaddr)
    #idc.MakeNameEx(int(straddr, 16), strname, idc.SN_NOWARN)
    idc.set_name(eaaddr, strname, idc.SN_NOWARN)
    

if __name__ == "__main__":
    with open( "D:\\code\\kallsym.txt", "r") as f:
        for l in f:
            do_rename(l)

这时内核部分的符号就恢复的差不多了。

其它问题

内核较高版本估计会默认开启随机化,脚本执行半天没反应,而且ida7.5对python脚本不友好。
解决办法是根据startup的地址,计算随机化偏移。rebase ida 的image segment, 或者直接修改脚本中的符号地址

结果

下图为正在恢复的符号
在这里插入图片描述

Ghidra全栈部署与三类硬核目标实战破译指南 Ghidra作为开源逆向工程平台,其核心价值不仅在于反编译能力,更在于可深度定制的二进制分析基础设施。理解其底层原理——如JVM内存模型对Decompiler稳定性的影响、Client/Server架构对大规模固件分析的支撑机制、以及插件API演进带来的兼容性治理挑战——是突破Auto-Analyze幻觉的前提。技术价值体现在将静态分析能力延伸至无符号Windows驱动、裸机ARM Cortex-M4固件、OLLVM+UPX混淆ELF等真实战场场景,实现从字节流到可读逻辑的可信映射。本文聚焦Ghidra全栈 阅读详情

相关推荐

安卓逆向与固件分析实战:从黑盒到白盒的系统化指南

在嵌入式系统与移动安全领域,固件分析是理解设备底层工作原理的核心技术。其基本原理是通过提取、解析和修改设备固件,将厂商封装的“黑盒”系统转化为可被深入分析的“白盒”。这项技术的核心价值在于,它不仅是安全研究员进行漏洞挖掘和渗透测试的必备技能,也是嵌入式开发者进行定制开发、功能扩展和性能优化的基础。在实际应用场景中,固件分析广泛应用于智能设备安全评估、物联网设备研究、安卓系统定制以及硬件功能逆向等方向。本文聚焦于使用Kalitools工具集进行安卓逆向与固件分析,详细介绍了从固件提取、镜像解包到二进制逆向的完

weixin_33672400的博客 373

Decompiler Explorer:逆向工程中多工具反编译结果对比平台实战指南

在软件安全、漏洞分析和遗留系统维护等领域,逆向工程是一项关键技术,其核心在于将编译后的二进制程序还原为可理解的代码逻辑。反编译作为逆向工程的基础环节,通过静态分析将机器码转换为高级语言伪代码,但其结果受编译器优化、代码混淆等因素影响,常存在不确定性。不同反编译工具(如IDA Pro、Ghidra、Binary Ninja)在控制流恢复、类型推断和变量命名等方面各有优劣,单一工具的输出可能不完整或存在偏差。为解决这一问题,Decompiler Explorer应运而生,它作为一个横向对比平台,允许用户同时查看

384

MySQL 4.1.18 glibc23 兼容包:老旧Linux系统部署指南

MySQL 是一款广泛使用的开源关系型数据库管理系统,其二进制兼容性高度依赖底层 C 运行时库(glibc)。当目标环境为 CentOS 4.4、RHEL AS 3 或嵌入式 Linux 等遗留系统,且 glibc 版本锁定在 2.3 时,现代 MySQL 二进制包会因缺失 GLIBC_2.4 符号或调用不支持的 pthread 接口(如 pthread_mutex_timedlock)而启动失败、报 segfault 或 libpthread.so.0 找不到。此时需回归官方特供的 mysql-stand

weixin_33508411的博客 229

kernel 代码反汇编方式

objdump -Dz -S vmlinux > dumpkernel 参数: -D, --disassemble-all Display assembler contents of all sections 显示汇编的代码段 -S,–source Intermix source code with disassembly 同时输出源码进行对照,但是反汇编需要的...

linan101的博客 1110

vmlinux-to-elf:通过提取内核符号表(kallsyms)从原始内核中恢复可完全分析的.ELF的工具

vmlinux-to-elf 该工具允许从vmlinux / vmlinuz / bzImage / zImage内核映像(原始二进制Blob或已存在但已剥离的.ELF文件)中获取具有可恢复功能和可变符号的完全可分析的.ELF文件。 为此,它将在内核中扫描内核符号表( ),这是几乎每个内核中都存在的压缩符号表,大多数情况下未。 因为相关的符号表最初是压缩的,所以它应该恢复原始二进制文件中不可见的字符串。 它会生成一个.ELF文件,您可以使用IDA Pro和Ghidra对其进行分析。因此,该工具对于嵌入式系统的逆向工程很有用。 用法: ./vmlinux-to-elf < input_kernel.bin > < output> 全系统安装: sudo apt install python3-pip sudo pip3 install --upgrade lz4

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 501

【开发工具】【objdump】反汇编工具objdump的使用

arm-linux-gnueabi-objdump -d u-boot &gt; u-boot.asm 反汇编uboot的二进制文件: arm-linux-objdump -D -b binary -m arm xxx.bin &gt; xxx.asm

诸葛一帆丶的博客 3034

USB通讯速度翻倍秘诀:手把手教你用WinUsb替代HID协议(附Zadig驱动配置图解)

本文详细介绍了如何通过WinUsb技术替代传统HID协议,实现USB通讯速度的显著提升。从技术对比、实现原理到Zadig驱动配置图解,手把手教你完成免驱高速通讯方案,适用于数据采集、固件升级等场景,实测速度可达HID协议的2倍以上。

weixin_29168675的博客 135

反汇编uimage和查看符号表的方法

当只有uImage,而没有vmlinux,遇到问题时,可以通过这样的方法来查看反汇编。 1. 从uImage中提到压缩后的image 用UE打开uImage文件,找到1f 8b位置,如下,从0x58d4开始是gzip压缩的文件,使用dd将前面内容截掉。 000058c0h: 75 6E 63 6F 6D 70 72 65 73 73 69 6F 6E 20 65 72 ; uncompres

kevin.ji的专栏 5608

DLMS/COSEM协议的理解体会

DLMS是通信协议,COSEM是电表建模规范。HDLC帧基本格式为0x7e......

一个bug是bug,多个bug能work 8312

SIMULINK开发项目实例 1000 例专栏之第907例--基于新能源与储能系统的场景实例:液流电池在微电网中的动态响应仿真

本文介绍了如何使用Simulink对液流电池在微电网中的动态响应进行建模与仿真。重点包括:1)构建液流电池模型及其特性参数设置;2)配置双向DC-DC变换器调节充放电过程;3)搭建包含分布式能源的微电网系统;4)设计基于SOC的控制器;5)通过仿真分析系统性能指标。该教程提供了完整的建模流程和MATLAB代码示例,帮助用户验证液流电池在微电网中的稳定性和适用性。

xiaoheshang_123的博客 184

objdump 反汇编 vmlinux详解

arm-linux-objdump -h vmlinux > vmlinux.txt 显示 linux 内核段信息,如段的开始虚拟地址,段的长度 arm-linux-objdump -S -l -z vmlinux > vmlinux.txt 反汇编 vmlinux 到vmlinux.txt, vmlinux.txt 含有汇编和 c 源文件的混合代码,看起来很方便。而且能一步步看linux怎么一步步运行的。 arm-linux-objdump -S -l -z -j ..

jinron10的专栏 4314

内网渗透(二)之基础知识-工作组介绍

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,它们都会列在"网络"(网上邻居)内。如果不对这些计算机进行分组,网络的混乱程度是可想而知的 为了解决这一问题,产生了工作组( Work Group)这个概念。将不同的计算机按功能(或部 门)分别列入不同的工作组,例如技术部的计算机都列入"技术部"工作组、行政部的计算机都 列入"行政部"工作组。要想访问某个部门的资源,只要在"网络"里双击该部门的工作组名 就可以看到该部门的所有计算机了。相比不分组的情况,这样的情况有序得多(尤其对大型局域网来说)。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 1219

Ghidra逆向工程实战:从安装配置到反编译与脚本自动化

软件逆向工程是安全研究的基础技能,而反编译工具则是将二进制机器码还原为可读源代码的关键。Ghidra作为NSA开源的逆向工程套件,凭借其强大的反编译引擎和跨平台能力,成为恶意软件分析、漏洞挖掘与CTF解题的利器。理解其原理,从环境配置到函数识别、交叉引用与数据流分析,能大幅提升二进制分析效率。结合Python脚本实现批量自动化处理,可应用于大规模安全审计与固件分析。本文从零开始介绍Ghidra的核心功能,并演示通过交叉引用定位License校验逻辑的完整流程,帮助读者快速上手这一实战工具。

weixin_33800463的博客 499

2篇1章1节:数据的基本概念以及 R 中的数据结构、向量与矩阵的创建及运算

本文详细介绍了R语言中常见的数据结构的向量和矩阵。通过掌握这些数据结构的基本概念和操作技巧,可以更高效地处理和分析数据。

MD Code 1243

Spine骨骼动画查看器 - Skeleton Viewer

骨骼动画是现代游戏和动画制作中常用的技术之一。Spine骨骼动画查看器(Skeleton Viewer)是一个官方提供的工具,用于查看和调试Spine骨骼动画。本文将介绍Skeleton Viewer的功能和使用方法,并提供相应的源代码示例。通过Skeleton Viewer,开发者可以直观地查看和调试Spine骨骼动画,包括骨骼结构、动画播放和事件触发等。这有助于提高骨骼动画的质量和效果,并加速开发过程。以上代码演示了如何使用Skeleton Viewer查看和播放Spine骨骼动画。

HsvvDatabase的博客 3461

Ghidra逆向工程实战:从安装配置到反编译避坑指南

在软件安全与漏洞研究领域,逆向工程是理解闭源程序、分析恶意样本和破解CTF题目的核心能力。传统上,这类工作高度依赖商业工具,高昂的成本让很多学习者望而却步。而NSA开源的Ghidra凭借免费、跨平台以及内置反编译器的特性,彻底改变了这一格局。它通过P-Code中间表示将不同架构的机器指令统一转换为接近C语言的伪代码,让分析者得以从繁琐的汇编中解放出来,专注于逻辑推理。无论是评估固件安全性、追踪恶意代码行为,还是验证补丁差异,Ghidra都提供了从导入二进制、自动分析到交叉引用定位关键函数的完整工作流。本文从

WGH100817的博客 232

CANoe之I/O功能采集电压

在进入ECU自动化测试中,有时会用到采集ECU电压,CANoe除了可以仿真、监听CAN、ETH、LIN等网络报文外,部分设备(如VN5650、VN1630等)上还有一个I/O口,这个I/O口就可以用来满足我们自动化测试中采集电压的需求。CANoe上的I/O功能用处还是特别大,比如网络管理测试、相关诊断都会用到。

测试领域技术分享 4827

用QEMU仿真Apple Silicon:darwin-vm搭建可调试Darwin内核实验床

虚拟化与系统模拟是操作系统研究的重要工具,QEMU作为开源模拟器,能够模拟多种硬件架构。通过QEMU仿真Apple Silicon芯片,可以搭建运行Darwin/XNU内核的实验环境,实现对内核启动流程、内存管理、中断处理等机制的深入观测。本文评测了GitHub周榜热门项目darwin-vm,解析其如何通过定制QEMU机器类型和设备树,模拟iBoot之后的启动链路,并借助GDB/LLDB调试接口对XNU内核下断点、查看寄存器与内存。该方案适用于内核安全研究、操作系统教学和驱动开发等场景,为没有苹果硬件的开发

weixin_33768481的博客 374

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Jetson Orin Nano 内核编译与驱动打包实战指南

在边缘计算与嵌入式AI场景中,Linux内核定制是驱动适配与硬件扩展的基础能力。其核心原理在于基于板级支持包(BSP)进行交叉编译,通过配置裁剪与设备树修改,使内核镜像与模块精准匹配目标硬件。这一过程的技术价值在于突破预编译内核的功能限制,灵活启用非官方驱动或裁剪冗余组件,从而提升系统资源利用率与硬件兼容性。典型应用场景包括Jetson Orin Nano等边缘设备接入自定义摄像头、串口扩展板或网络模块。围绕L4T源码获取、交叉工具链配置、menuconfig裁剪、模块打包与刷写验证等关键环节,下面梳理了一

weixin_33812433的博客 332

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Ghidra逆向工程实战:从零开始掌握反编译与脚本自动化

软件逆向工程是安全研究和漏洞分析中的核心技术,通过对二进制程序进行反汇编与反编译,可还原程序逻辑并定位潜在风险。Ghidra作为一款由NSA开源的反编译框架,凭借免费跨平台、可编程扩展等特性,正成为众多安全工程师和CTF玩家的首选工具。其核心反编译引擎将机器码转换为类C伪代码,结合数据流分析和类型恢复,极大提升了恶意样本分析与固件研究的效率。本文从环境配置出发,详细讲解Ghidra的安装部署、核心功能、实战分析流程,并分享常见踩坑经验与Python脚本自动化技巧,帮助读者快速上手这套完整的逆向工程工作台。

weixin_34375251的博客 302

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怎样反汇编bzImage

经过反复摸索,我终于找到反汇编bzImage的方法。虽然还有些不完善(在结果中还不能看到.text段之外的符号),但我们总算是有机会看到可爱的汇编代码了,聊胜于无吧。 不要被bzImage的名字迷惑了,其实b代表着big的意思。而不是说这个image是用bzip2压缩。实际上,这个压缩过程是用gzip程序完成。我们在编译内核可以看到这一点。如果编译2.2或者2.4内核的话,可以直接看到,如果...

weixin_33727510的博客 413

华为ATLAS 300I驱动安装:为何Ubuntu 20.04翻车,18.04稳如老狗?

在Linux环境下部署AI推理加速卡时,内核版本与驱动兼容性是关键。预编译内核模块依赖特定内核版本,版本不匹配会导致加载失败。选择经过充分测试的系统版本能显著提升部署成功率与推理稳定性。本文以华为ATLAS 300I为例,深入分析Ubuntu 18.04与20.04的内核差异,提供从驱动安装到性能调优的完整实操指南,帮助开发者避开常见陷阱,确保AI推理任务高效运行。

weixin_34032621的博客 292

i.MX6ULL嵌入式Linux入门:72小时跑通Linux系统与外设控制

嵌入式Linux是运行在资源受限硬件上的轻量级Linux系统,其核心在于Bootloader(如U-Boot)、Linux内核、设备树(DTS)与根文件系统(如Buildroot生成)的协同工作。原理上,设备树实现硬件描述与驱动解耦,使同一内核可适配不同板卡;Buildroot则以确定性构建流程降低入门门槛,避免Yocto的抽象复杂性。技术价值在于快速建立软硬协同认知闭环——从串口调试、GPIO控制到网络/显示驱动,支撑教学实验、原型验证与国产化替代开发。典型应用场景包括高校嵌入式课程实践、STM32工程师

weixin_30247781的博客 379

嵌入式Linux系统开发:从启动链路到驱动交付的闭环实践

嵌入式Linux系统开发是面向ARM架构、运行定制内核、支撑工业控制与边缘智能的关键技术能力。其核心在于理解软硬协同的底层原理——从U-Boot启动流程、设备树与内核驱动匹配机制,到字符设备开发与交叉编译构建。技术价值体现在打破‘命令会用但不知其所以然’的断层,建立‘文档→代码→硬件→日志’四点闭环调试能力。典型应用场景包括智能终端固件开发、工业网关系统移植及边缘设备驱动适配。本书以飞凌OKMX8MP-C开发板为统一硬件平台,聚焦真实工程中高频出现的启动失败、驱动不加载、rootfs权限异常等幽灵错误,提供

weixin_34038293的博客 315
上一篇: selinux概括总结
下一篇: 文件防火墙redirfs
inquisiter
博客等级 码龄10年 374粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值