本帖最后由 叶子青 于 2019-6-25 18:33 编辑

新人第   不知道几次发帖    直接两开花吧

因为某些需要

我手上多了一个从嵌入式设备Flish中读取出来的二进制文件

我们事先通过firmwork 之类的工具确定了对方是Linux的操作系统并且确定了 拿到手的BIN文件时他的Boot 程序   ELF文件格式

然后这个时候完全看静态分析的代码太累了  (虽然说可以直接找到Linux的源代码来阅读,但是难免以后还会遇到类似的问题且找不到源码的时候)

所以就决定学习下怎么通过调试器来直接调试这类BIN文件

之前在网上找了很久的资料,最终实现了调试  ,以下我把主要的步骤和大家分享下(步骤其实非常简单大佬勿喷)

0x01.首先的话想在PC段模拟ARM指令集的BIN文件运行肯定要用到虚拟机来模拟一个虚拟CPU  这类的虚拟机推荐使用QEMU来实现

QEMU的话是一款非常强大的纯软件实现的虚拟化模拟设备,几乎可以模拟我们接触过的大部分CPU架构。包括 IA-32 (x86),AMD 64,MIPSR4000,SPARCsun3PowerPC

(PReP 及 Power  Macintosh)架构还有就是我们要用到的ARM架构.

现在新版本的QEMU支持在Windows/Linux上运行,  通常Linux上的用的较多,Windows下的版本叫做 QEMU for windows ,我接下来的实验主要都是在ubuntu虚拟机环境下完成的

QEMU for Windows感兴趣的同学可以下载下来研究下

0x02.我们需要先在安装一个QEMU  直接通过指令

sudo apt-get install qemu

实现安装,当然QEMU正常运行还需要安装以下三个软件支持包

sudo apt-get install zlib1g-devsudo apt-get install libglib2.0-0sudo apt-get install libglib2.0-dev      安装成功以后可以尝试输入qemu-指令  Tab键后自动补全则安装成功  (我为了验证能否正常工作,实际上还模仿网上编译了一个Linux内核文件,创建根目录系统之类的操作,当然这里略过)

0x03.起初我调试的思路是,在QEMU上运行一个Linux3.0的内核 (因为这个设备就是Linux3.0的操作系统)然后在这个Linx3.0上运行当前这个BIN文件,再通过IDA提供的调试服务器 linux_surver

来实现调试,后面查阅多方资料发现网上都是通过类似方案调试的MIPS架构或者ARM安卓之类的东西,而且有点麻烦,后来查了下QEMU的使用方式,发现可以有跟简单的操作

QEMU主要有两种工作模式

1)用户模式   可以用来启动不同架构编译的Linux程序

2)模拟模式   类似虚拟机功能

模拟模式就是之前说的  类似VM虚拟机 直接跑的情况  而用户模式则是可以直接启动不同架构

下的程序,感觉好像很有用的样子

用户模式的参数

qemu-mipsel [options] program [arguments...]

qemu-mipsel是使用的架构,当前选择的MIPS

“program"是需要qemu运行的其他处理器编译的程序;

arguments"是“program"的参数;

“options"是qemu-mipsel或qemu-mipsel的选项。-E  var=value为program进程设置环境变量

-g  portQEMU开启调试模式,等待GDB连接PORT

LD_PRELOAD=newlib使用新的动态库newlib劫持系统调用

举例:比如我当前想要启动一个ARM架构的BOOT.elf文件(我手上这个就是ELF文件格式的)

那么我输入的命令就是

qemu-arm boot.elf

如果我还想有调试器调试他  我就可以给他设置一个调试接口

qemu-arm -g 1234 boot.elf端口号就是1234QEMU的调试器使用的事GDB提示器  所以使用GDB的调试器就可以从网口来连接他实现调试

0x04.

1)这个时候我们回到物理机的IDA上启动对应的工程文件选择我们的调试器为GDB debuger

图片1.png (9.42 KB, 下载次数: 1)

2019-6-25 11:40 上传

2)然后设置我们的调试目标的IP 以及端口(得保证虚拟机和主机能互相PING的通)

Debugger->process options

图片2.png (14.79 KB, 下载次数: 0)

2019-6-25 11:40 上传

3)设置调试选项

图片3.png (18.47 KB, 下载次数: 1)

2019-6-25 11:40 上传

将Suspend on debugging start与suspend on process entry point勾选   方便开始调试时断点在入口处

4)接下来就是开始调试   Debugger->Attach to process

图片4.png (100.29 KB, 下载次数: 1)

2019-6-25 11:40 上传

0x05.这样调试目前可以实现对其他架构的文件进行调试,但是假如遇到非ELF文件格式 的Bin文件  的话就比较麻烦了

当前的想法是手动编译一个该架构下的AXF或者ELF文件,然后将对应的BIN文件作为一个可执行的节链接或者直接添加进

前者中,在通过前者跳转到入口地址。。。还在实验中,如果大家有更好的方法的话可以分享分享,以上是我的调试历程

静态编译qemu_使用IDA配合qemu实现调试嵌入式BIN文件相关推荐

  1. 静态编译qemu_使用QEMU chroot进行固件本地调试

    阅读: 2,905 QEMU是开发者在调试一些不同架构的程序时经常使用的虚拟机软件.它有两种运行模式,全系统模拟(System mode)和单程序运行(User mode).System mode和开 ...

  2. 静态编译qemu_如何用QEMU运行x86 kernel

    最近在提交cpufreq patch,稍微有点逻辑改动的Rafael都要你test, test.有个改动涉及setpolicy driver,要验证,第一印象就是用qemu. 让我们来看下如何搭环境( ...

  3. linux系统编译qt代码需要编译qt,linux下如何静态编译QT库,以及如何静态编译自己的程序...

    Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所 ...

  4. Java静态编译技术:突破Java“冷启动”桎梏,实现启动性能“质”的飞跃

    自1996年诞生以来,Java语言长期在最受欢迎的编程语言排行榜中占据领先地位.除了语言本身的优秀特性之外,Java语言持续演进.不断发展也是它能够保持长盛不衰的重要原因. |Java市场份额不断下降 ...

  5. CentOS编译安装Qt(Qt可使用静态编译编译器)

    CentOS编译安装Qt(Qt可使用静态编译编译器) 文章目录 前言 下载Qt源码 编译安装--以4.7.4为例 安装QtCreator 设置编译器 附加--Windows Qt静态编译的方法(以5. ...

  6. windows下 Qt 静态编译

    似乎一直没有静态编译Qt的需求:一不在没有管理员权限的机器上使用,二不制作绿色软件,三....动态编译工作得很好,再配合 nsis 制作一个安装包,有什么必要静态编译呢? 但论坛中似乎总是不停有人问到 ...

  7. minigui:静态编译连接mgncs库时遇到的xml2的问题

    最近做一个基于minigui/mgncs的项目,在开发阶段因为是在ubuntu下基于minigui的模拟器开发,所以编译时都是标准的动态库连接.没啥问题,很顺序. 现在项目功能开发告一段落,要向嵌入式 ...

  8. 静态编译parted在Android上运行

    [前言] 现在有越来越多的Android手机用上了GPT分区表.我目前接触过的有:华为C8816.G6-C00.Ascend P6,中兴U880E,还有亚马逊Kindle Fire.目前我不太好解释G ...

  9. 易语言静态连接器提取_易语言静态编译链接器切换工具

    使用说明 将exe程序和"链接器目录配置.ini"文件,复制到易语言安装目录的"tools"文件夹下 并且对"链接器目录配置.ini"进行修 ...

最新文章

  1. 你想了解的Cookie和Session就在这~
  2. XMT.com超200万被区块链终端交易
  3. 2012年4月当选微软MVP的CSDN会员名单揭晓!
  4. python画图标题为蓝色_请问使用matplotlib和绘图色标创建自己的颜色图
  5. 2apt-get命令,deb包安装,源码安装
  6. java架构分层_java分层架构概念
  7. php json -gt;访问,【转】Php+ajax+jsonp解决ajax跨域问题
  8. glassfish发布应用_GlassFish 4升级的构建,Gradle和嵌入式应用服务器
  9. Centos 7 下 Mysql 5.7 Galera Cluster 集群部署
  10. opencv 离线文档下载地址在哪里?
  11. android 四大组件,安卓四大组件及其作用
  12. 2021-08-20红外额温枪方案核心芯片ZHW3548
  13. 洛达AirPods鉴别检测工具AB153x_UT,支持1562a 1562f
  14. 一个喷嚏就能传播病毒?关于病毒,还有多少是你不知道的?
  15. 易于设置的倒计时页面Easy countdown
  16. java实现文件管理
  17. Windows计划任务开机启动程序
  18. 嵌入式实时操作系统FOS简介
  19. 中消协:多款邮箱、通讯、金融理财APP过度收集个人信息!
  20. linux 学习笔记 (二)

热门文章

  1. RISC-V IDE MRS使用笔记(二):Board chip status error
  2. 【C】C语言复习_第五天_数组
  3. 测试架构师修炼之道--读后感
  4. 多人文件共享就看派盘
  5. xctf攻防世界 MISC高手进阶区 Recover-Deleted-File
  6. linux编程基础:使用socketpair实现双向通讯
  7. win10添加右键菜单打开VSCode
  8. 英伟达jetson硬件(NX,nano,AGX,TX1,TX2)通用开机自动开启风扇教程
  9. 脚本为王 - 辅助功能
  10. 转--二手笔记本电脑 如何 检测其质量