当前位置: 首页 > news >正文

linux系统查询二进制BIn文件方法

在 Linux 上分析二进制文件的方法有很多,以下是其中几种常见的方法:

  1. 使用 objdump 命令

objdump 命令可以显示二进制文件的汇编代码、符号表和其他信息,可以用来分析二进制文件的结构和代码逻辑。例如:

objdump -d binaryfile

这个命令会显示二进制文件的汇编代码。可以通过分析汇编代码来了解程序的执行流程和逻辑。

下面是一个使用 objdump 命令的例子:

假设有一个名为 test 的可执行文件,我们想要分析它的汇编代码,可以使用以下命令:

objdump -d test

这个命令会显示 test 可执行文件的汇编代码,例如:

08048400 <_start>:8048400:	31 ed                	xor    %ebp,%ebp8048402:	5e                   	pop    %esi8048403:	89 e1                	mov    %esp,%ecx8048405:	83 e4 f0             	and    $0xfffffff0,%esp8048408:	50                   	push   %eax8048409:	54                   	push   %esp804840a:	52                   	push   %edx804840b:	68 00 60 00 00       	push   $0x60008048410:	68 08 00 00 00       	push   $0x88048415:	68 00 10 00 00       	push   $0x1000804841a:	e8 71 ff ff ff       	call   804838f <mmap@plt>804841f:	83 c4 10             	add    $0x10,%esp8048422:	89 c2                	mov    %eax,%edx8048424:	83 e2 01             	and    $0x1,%edx8048427:	85 c0                	test   %eax,%eax8048429:	79 06                	jns    8048431 <_start+0x31>804842b:	50                   	push   %eax804842c:	e8 3f ff ff ff       	call   8048370 <exit@plt>8048431:	83 ec 0c             	sub    $0xc,%esp8048434:	6a 00                	push   $0x08048436:	68 00 60 00 00       	push   $0x6000804843b:	68 00 10 00 00       	push   $0x10008048440:	6a 07                	push   $0x78048442:	e8 29 ff ff ff       	call   8048370 <exit@plt>8048447:	90                   	nop

可以看到,这个命令输出了 test 可执行文件的汇编代码,以 _start 函数为起点,每行显示一条汇编指令。可以通过分析汇编代码来了解程序的执行流程和逻辑。

  1. 使用 gdb 调试器

gdb 调试器可以用来调试二进制文件,也可以用来分析二进制文件的代码逻辑。例如:

gdb binaryfile

这个命令会启动 gdb 调试器,并加载二进制文件。可以通过 gdb 调试器来分析程序的执行流程、变量值和内存状态等信息。

  1. 使用 strace 命令

strace 命令可以用来跟踪程序的系统调用,可以用来分析程序的行为和逻辑。例如:

strace binaryfile

这个命令会跟踪二进制文件的系统调用,并输出系统调用的参数和返回值。可以通过分析系统调用来了解程序的行为和逻辑。

  1. 使用 ltrace 命令

ltrace 命令可以用来跟踪程序的库函数调用,可以用来分析程序的行为和逻辑。例如:

ltrace binaryfile

这个命令会跟踪二进制文件的库函数调用,并输出函数的参数和返回值。可以通过分析库函数调用来了解程序的行为和逻辑。

  1. 使用 objcopy 命令

objcopy 命令可以用来复制二进制文件,并对其进行格式转换、分离等操作。例如:

objcopy -O binary -j .text binaryfile binaryfile.bin

这个命令会将二进制文件的 .text 段复制到一个新的二进制文件 binaryfile.bin 中。可以通过这种方式来提取二进制文件中的某个段或者分离出可执行文件的代码段和数据段等。

  1. 使用 radare2 工具

radare2 是一款开源的反汇编和逆向工程工具,可以用来分析二进制文件的代码逻辑、函数调用关系和控制流等信息。它支持多种架构和文件格式,并提供了丰富的命令行工具和插件。与 IDA Pro 相比,radare2 是一个完全免费的工具,但是学习曲线比较陡峭。

  1. 使用 Binary Ninja 工具

Binary Ninja 是一款商业的反汇编和逆向工程工具,可以用来分析二进制文件的代码逻辑、函数调用关系和数据结构等信息。它提供了直观的图形化界面和强大的分析功能,支持多种架构和文件格式,并且可以通过插件机制扩展功能。与 IDA Pro 相比,Binary Ninja 是一款新兴的工具,但是已经受到了广泛的关注和使用。

这些方法和工具都可以用来分析二进制文件,每种方法和工具都有其独特的功能和优势,可以根据具体情况选择合适的方法来进行分析。

  1. 使用 Ghidra 工具

Ghidra 是一款由美国国家安全局(NSA)开发的开源反汇编和逆向工程工具,可以用来分析二进制文件的代码逻辑、函数调用关系和数据结构等信息。它提供了直观的图形化界面和强大的分析功能,支持多种架构和文件格式,并且可以通过插件机制扩展功能。与 IDA Pro 和 Binary Ninja 相比,Ghidra 是一款新兴的工具,但是已经受到了广泛的关注和使用。

  1. 使用 objdump 的反汇编功能

除了 objdump 显示汇编代码外,它还提供了反汇编功能,可以将二进制文件反汇编为汇编代码。例如:

objdump -M intel -D binaryfile

这个命令会将二进制文件反汇编为 Intel 格式的汇编代码。可以通过分析汇编代码来了解程序的执行流程和逻辑。

  1. 使用 gdb 的反汇编功能

除了调试功能外,gdb 还提供了反汇编功能,可以将二进制文件反汇编为汇编代码。例如:

gdb binaryfile
(gdb) disassemble

这个命令会将二进制文件反汇编为汇编代码。可以通过分析汇编代码来了解程序的执行流程和逻辑。

  1. 使用 readelf 的段信息功能

除了查看 ELF 文件格式信息外,readelf 还提供了段信息功能,可以显示二进制文件中各个段的信息。例如:

readelf -S binaryfile

这个命令会显示二进制文件中各个段的信息,包括名称、起始地址、大小等。可以通过分析段信息来了解程序的结构和代码逻辑。

这些方法和工具都可以用来分析二进制文件,每种方法和工具都有其独特的功能和优势,可以根据具体情况选择合适的方法来进行分析。

http://www.lryc.cn/news/66596.html

相关文章:

  • api接口调用(1688/Taobao/jd平台API接口的调用实例)
  • Python+Yolov5舰船侦测识别
  • Qt5.9学习笔记-事件(五) 事件调试和排查
  • 【实用工具】SpringBoot实现接口签名验证
  • DDR基础
  • 理解find命令
  • OpenCV教程——调整图像亮度与对比度,绘制形状和文字
  • Python模块篇:函数/类/变量和常量/注释/导入和使用
  • Java反射和动态代理
  • [NOIP2004 提高组] 津津的储蓄计划(思路+代码详解)Python实现
  • 分布式搜索引擎es 面试突击
  • 社会心理学的六个经典实验
  • Java 单例模式详解
  • AI读心重磅突破登Nature!大脑信号1秒被看穿,还能预测未来画面
  • 【SAP Abap】X-DOC:SNRO - ABAP流水号应用
  • 基于AT89C51单片机的交通灯设计与仿真
  • MySQL系列三(定位慢SQL、SQL优化与索引优化)Using filesort
  • 免费使用GPT-4.0?【AI聊天 | GPT4教学】 —— 微软 New Bing GPT4 申请与使用保姆级教程
  • 渲染对电脑伤害大吗_如何减少渲染伤机?
  • 非线性最小二乘
  • 23.5.7总结(学习通项目思路)
  • 如何生成api接口获取宝贝商品详情,商品详情接口,产品详情
  • 微服务---Redis实用篇-黑马头条项目-登录功能(短信验证缓存,用户信息缓存)
  • 美国纽扣电池的包装电池盒必须附带警告标签16 CFR 第 1700.20
  • AcWing——方格迷宫(有点不一样的迷宫问题)
  • 《常规脉搏传输时间作为人体血压变化标志》阅读笔记
  • java学习之异常三
  • 生产者向 Kafka 发送消息的执行流程
  • Linux命令·netstat
  • 《心安即是归处》读书笔记