基于arm的C++反汇编 qemu-arm环境搭建

用Qemu模拟ARM 用Qemu模拟ARM(1) 前面已经安装并配置了编译链和qemu,现在可以用qemu来模拟arm平台了。 1. Hello, Qemu! 输入下面的代码: hello.c - hello.c #include int main() { printf("Hello, Qemu!\n"); return 0; } 编译并 阅读详情

  看雪高手写了在windows 上基于x86架构的 C++ 反汇编分析,但是没有人弄过在linux下基于arm架构的C++反汇编教程,这里尝试分析下,可以看到不管在win下还是linux下,不管基于x86还是基于arm 都遵循同样的C++标准,内存布局都是一样的。

说下运行环境:
主机Win10-64bit
主机上有一个vmware workstation 12.1
vmware 里 安装一个32bit ubuntu14.04 环境

  然后在这个ubuntu14.04 上搭建环境 为了方便这里不再从头编译而是使用网络上现成的二进制工具,参考Architectures/ARM/HowToQemu

1)下载arm-linux交叉编译工具,并且配置环境 arm-none-linux-gnueabi-gcc下载
2)下载 arm-linux 内核镜像 zImage-qemu-versatile-3.0.8-4.fc17.armv5tel
3)安装qemu-arm,这里不再编译,直接使用命令

sudo apt-get install qemu-system-arm

安装完毕即可。
4)制作根文件镜像,本来上面ARM/HowToQemu 给出了文件系统下载地址,可是即便打开SS翻墙也无法下载,无奈只得自己重新制作一个。
安装 ncurses

sudo apt-get install libncurses5-dev libncursesw5-dev

下载最新的busybox,make menuconfig 配置

Busybox Settings  --->
		Build Options  --->
			Cross Compiler prefix

按回车填入如下内容:

/opt/toolchain/arm/arm-2014.05/bin/arm-linux-

配置静态编译 busybox

Busybox Settings  --->
		Build Options  --->
			Build BusyBox as a static binary (no shared libs)

  然后make && make install 就可以在当前目录中会生成“_install”目录。
  剩下的工作就和以前博文 linux内核调试环境搭建-2 用busybox搭建 一样,如果觉得制作麻烦,我在dropbox上给出了制作好了的文件系统压缩包,下载下来之后解压到 busybox.img 里面即可。

至此,qemu-arm,zImage-arm,busybox-arm都已经得到。

按照 上面博文链接 中给出的方法创建主机设备,让主机和虚拟机能通信。

脚本启动

$ qemu-system-arm -M versatilepb -kernel zImage-qemu-versatile-3.0.8-4.fc17.armv5tel -hdc busybox.img -append root="0800" -k en-us -net nic -net tap,ifname=tap0,script=no

至此一个基于 qemu 的 arm-linux 虚拟机可以完美的跑起来:
这里写图片描述

Qemu虚拟arm开发板驱动开发详解(一)——驱动基本架构 此前在系列文章中,我们已建立好Linux最小系统的运行环境,并将其成功移植到了由Qemu模拟的arm32开发板上。接下来将介绍如何基于上述环境进行驱动开发。本节主要带各位读者了解Linux内核驱动的基本架构,并在WSL的Ubuntu22.04子系统下实现基于x86操作系统的简易Linux驱动“HelloWorld”。 阅读详情

相关推荐

基于Ubuntu的arm64 x64交叉编译系统搭建

详细介绍如何在Ubuntu系统中配置arm64和x64交叉编译工具链,实现跨平台编译。涵盖环境部署、工具链安装与测试验证,帮助开发者高效完成多架构构建任务。

weixin_28931449的博客 1596

ARM汇编学习-工具篇

qume qemu简介 - 仿真一块ARM开发板 - QEMU教程 | 宅学部落https://www.zhaixue.cc/qemu/qemu-intro.html从零使用qemu模拟器搭建arm运行环境_海枫的博客-优快云博客_qemu模拟arm本文从零开始介绍如何搭建qemu+arm的运行环境https://linyt.blog.youkuaiyun.com/article/details/42504975?spm=1001.2101.3001.6650.2&utm_medium=distribu

xiaohaier8593的博客 4245

基于SiFive的RISC-V开发入门必看:手把手搭建开发环境

深入浅出地讲解基于SiFive的RISC-V开发环境搭建全过程,涵盖工具链配置与调试技巧,帮助初学者快速上手risc-v架构开发,轻松迈入开源指令集世界。

weixin_29607511的博客 1224

WSL2之gdb通过qemu调试ARM汇编(五)

1.安装arm 64位的qemu和gcc # sudo apt install gcc-aarch64-linux-gnu qemu 2.安装aarch64-gdb # http://ftp.gnu.org/gnu/gdb/ # ./configure --target=aarch64-linux --prefix=/usr/local # make # make install 3.配置qemu环境变量 # cp /usr/aarch64-linux-gnu/lib/libc.so.6 /usr/l.

Android系统攻城狮 1072

告别虚拟机!用QEMU在Mac上调试树莓派ARM程序的5个关键步骤

本文详细介绍了在macOS系统上,使用QEMU模拟树莓派4B硬件环境进行ARMv8-A裸机程序开发的完整工作流。通过搭建ARM交叉编译工具链、配置QEMU模拟器、编写链接脚本与Makefile,并集成VS Code实现可视化源码调试,开发者无需虚拟机或物理设备即可高效完成编译、运行与调试,大幅提升嵌入式开发效率。

pz8901234的博客 363

固件漏洞挖掘实战:从环境搭建到漏洞利用的完整指南

在物联网和嵌入式设备安全领域,固件作为连接硬件与操作系统的底层软件,其安全性直接决定了设备的核心防护能力。理解固件的工作原理,是进行深度安全评估的基础。固件通常存储在设备的非易失性存储器中,负责初始化硬件、加载操作系统并提供最底层的运行时服务。其技术价值在于,通过分析固件,安全研究人员可以摆脱“黑盒”测试的局限,以“白盒”视角审计设备最核心的代码逻辑,从而发现那些被上层应用封装、常规测试难以触及的深层漏洞,例如内存破坏和逻辑缺陷。这种能力在智能家居、工业控制和网络设备等应用场景中尤为重要,能够有效评估设备被

465

基于arm的C++反汇编 基本数据类型

基本数据类型 Cpp中的引用 常量 常量的定义 基本数据类型   反汇编一个基本的知识点就是掌握数据类型,包括整形和浮点类型在内存中是如何存放的,这里要知道原码,反码,补码,以及IEEE浮点标准,这部分与处理器架构无关,《C++反汇编与逆向分析技术揭秘》 第二章已经有详细讲解,这里略过。 在此推荐下我曾经写过的一个进制转换的工具 来学习数据类型 。 Cpp中的引用

XscKernel的专栏 记录工作中做的点滴 2497

VS code 可视化调试Linux kernel内核

本文向大家介绍通过VS code 来调试linux kernel内核,结合源代码实现可视化的单步调试。

wowo的专栏 2797

初识ARM嵌入式系统

1.为什么要用交叉编译工具、2.反汇编工具、3.通过wsl访问Windows系统、4.通过Windows系统访问wsl、5.wsl调用notepad、6.复杂命令简单化命名、7.通过VScode访问wsl

GRT609的博客 3236

QEMU模拟ARM并调试汇编的方法和注意事项 - ARM开发

在ARM架构的开发中,模拟器是一个非常有用的工具,它可以帮助我们在不依赖实际硬件的情况下进行开发和调试。在本文中,我们将介绍如何使用QEMU模拟ARM,并进行汇编代码的调试。使用QEMU模拟ARM并调试汇编代码是ARM开发中的常见任务和技巧。首先,你需要安装QEMU模拟器,然后编写ARM汇编代码并将其编译为可执行文件。接下来,你可以使用QEMU启动模拟器并在GDB中连接到它,进行汇编代码的调试。现在,我们已经准备好使用QEMU模拟ARM并调试我们的汇编代码了。现在,我们可以使用常用的GDB命令进行调试了。

HdData_Science的博客 691

27、Arm架构中的函数调用与环境搭建

本文详细解析了Arm架构中函数调用的规则,包括整数、浮点、数组及大值参数的传递方式,以及复合类型的返回值处理。同时介绍了叶子函数与非叶子函数的区别、函数序言与尾声的作用,并结合示例代码和反汇编分析进行了说明。此外,还讨论了搭建Arm开发环境的三种主要方式:本地物理硬件、模拟器和云服务,并给出了各自优缺点及使用场景的对比,为开发者进行Arm平台的程序开发与分析提供了全面指导。

tt34567的博客 71

用qemu+ gdb + vscode -》实现特权寄存器的访问

如单步调试报错: build/glibc-D9JkfM/glibc-2.27/csu/libc-start.c’ (Error: 无法解析不存在的文件 )原因:需安装 参考 https://blog.youkuaiyun.com/Williamcsj/article/details/121112133。在vscode中,按下Ctrl+shift+D -> 点下拉菜单 -> 添加配置 -> 选 C++(GDB)-> 选gcc 生成活动文件(/usr/bin/gdb) -> 打开lanunch.json。

weixin_46053662的博客 1865

嵌入式ARM程序高级调试技能:21.qemu arm ARM Linux 上 addr2line 的使用指南

本文介绍了addr2line工具在ARM-Linux嵌入式开发中的高级调试技巧。主要内容包括:1)精细控制输出的方法,如显示函数名、仅显示基文件名、C++函数名还原等;2)批量处理地址的输入输出方式,包括从文件读取和显示输入地址;3)调试信息处理技巧,如指定单独调试文件;4)高级应用场景,如结合gdb分析崩溃、处理共享库地址偏移等;5)介绍了更快的替代工具eu-addr2line。文章强调正确获取地址和灵活组合选项的重要性,能显著提升调试效率。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 538

qemu+gdb调试可执行文件,并统计实际运行指令数目

遇到好多dirty work,需要自己一点一点爬“打游戏已经不足以使我分泌多巴胺了何以解忧,唯有coding"

weixin_47100480的博客 1286

手把手教你玩转X86指令集​​​专栏-​​附录:工具与资源手册​​​​在线实验环境​

【代码】手把手教你玩转X86指令集​​​专栏-​​附录:工具与资源手册​​​​在线实验环境​。

MHD0815的博客 131

清华数据结构列车调度AC100分

两种思路(1)将目标栈的数据和待混洗的数据逐个进行比较#pragma warning(disable:4996) #include<stdio.h> #include<string.h> #define maxn 1600005 using namespace std; char a[2*maxn][5];//记录操作命令 int stack[maxn]; char pop...

hgtjcxy的博客 923

跨平台二进制分析指南:objconv在Linux/Mac下的反汇编技巧与常见格式转换问题解决

本文详细介绍了objconv工具在Linux和macOS平台下的高级应用与疑难解析,涵盖二进制文件格式转换、反汇编技巧及ARM架构分析等核心内容。通过实战案例和解决方案,帮助开发者高效处理ELF、Mach-O等格式转换问题,提升跨平台二进制分析能力。特别针对C++开发者和安全分析人员,提供了从环境配置到恶意代码识别的完整技术指南。

nice1的博客 192

新手小白 必须精进的 “ FLASH分区管理Code and Data ” !!!最强文章解析!!!

FLASH“代码区”和“数据区”不是每个项目都必须显式管理,但只要你的产品功能越来越丰富,对可靠性和扩展性要求提高,就一定要学会科学划分和使用。这也是嵌入式工程师进阶路上的必修课!

qq_75157958的博客 933

手把手教你玩转X86指令集​--​​附录:工具与资源手册​

本手册介绍了两种实用的开发工具:1. CompilerExplorer在线工具,支持多架构实时反汇编C/C++代码,帮助理解编译器优化;2. Jupyter Notebook与QEMU组合方案,提供交互式开发环境,可模拟x86架构运行调试系统程序。手册还推荐了GDB、objdump等调试工具,并提供了实验环境搭建流程图。这两种工具分别适用于静态代码分析和动态仿真调试,配合使用可实现从理论验证到实践开发的全流程闭环。

amy_mhd的博客 744

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 391

软件工程导论实践:从需求到架构的机票预订系统全流程解析

本文深入解析机票预订系统从需求分析到架构设计的全流程实践,涵盖业务流程、功能建模、模块化设计、性能优化等关键环节。通过实际项目经验,分享软件工程导论在复杂系统开发中的应用技巧,包括数据流图绘制、E-R图设计、微服务架构及高并发处理等实战策略,助力开发者构建高效可靠的机票预订系统。

weixin_29202213的博客 412

ARM嵌入式Linux中断开发工具链配置

在ARM嵌入式Linux系统中,中断处理是高效响应硬件事件的核心机制。配置合适的开发工具链对于编写、编译和调试中断处理程序至关重要。工具链包括交叉编译器、调试器、内核开发工具等,确保代码能在ARM架构上高效运行。以下是逐步配置指南,基于标准ARM嵌入式Linux开发实践。开发工具链主要由以下组件构成:工具链的目标是确保中断处理程序(如中断服务例程ISR)高效、低延迟。例如,中断响应时间$t_{response}$应尽可能小,通常在微秒级。配置工具链需在开发主机(如Ubuntu Linux)上进行,以下是详细

2501_93894370的博客 291

实战解析:利用Python requests库高效抓取京东商品评论并构建结构化数据集

本文详细介绍了如何利用Python requests库高效抓取京东商品评论并构建结构化数据集。通过分析京东评论接口、处理反爬机制以及数据解析存储,帮助开发者快速获取电商数据,适用于竞品监控、用户画像构建等商业场景。

weixin_42526415的博客 837
上一篇: gh0st错误修改
下一篇: 基于arm的C++反汇编 基本数据类型
xianjian_x
博客等级 码龄14年 231粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值