当前位置: 首页 > 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

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

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

相关文章:

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

在 Linux 上分析二进制文件的方法有很多&#xff0c;以下是其中几种常见的方法&#xff1a; 使用 objdump 命令 objdump 命令可以显示二进制文件的汇编代码、符号表和其他信息&#xff0c;可以用来分析二进制文件的结构和代码逻辑。例如&#xff1a; objdump -d binaryfile这…...

api接口调用(1688/Taobao/jd平台API接口的调用实例)

api接口调用 CURL 是一个利用URL语法规定来传输文件和数据的工具&#xff0c;支持很多协议&#xff0c;如HTTP、FTP、TELNET等。最爽的是&#xff0c;PHP也支持 CURL 库。使用PHP的CURL 库可以简单和有效地去抓网页。你只需要运行一个脚本&#xff0c;然后分析一下你所抓取的网…...

Python+Yolov5舰船侦测识别

程序示例精选 PythonYolov5舰船侦测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<PythonYolov5舰船侦测识别>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c…...

Qt5.9学习笔记-事件(五) 事件调试和排查

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…...

【实用工具】SpringBoot实现接口签名验证

需求场景 由于项目需要开发第三方接口给多个供应商&#xff0c;为保证Api接口的安全性&#xff0c;遂采用Api接口签名验证。 Api接口签名验证主要防御措施为以下几个&#xff1a; 请求发起时间得在限制范围内请求的用户是否真实存在是否存在重复请求请求参数是否被篡改 项目…...

DDR基础

欢迎关注我的博客网站nr-linux.com&#xff0c;图片清晰度和&#xff0c;排版会更好些&#xff0c;文章优先更新至博客站。 DDR全称Double Data Rate Synchronous Dynamic Random Access Memory&#xff0c;是当代处理器必不可少的存储器件之一。本文关于DDR介绍的核心点如下&…...

理解find命令

find命令使用通配符&#xff0c;而不是正则表达式 对于如下两个命令 find ./ -name *txt 和 find ./ -name \*txt 这两个命令之间的区别在于 shell 对通配符字符 * 的解释和展开方式不同。 find ./ -name *txt&#xff1a;在这个命令中&#xff0c;shell 在将命令传递给 fin…...

OpenCV教程——调整图像亮度与对比度,绘制形状和文字

调整图像亮度与对比度 1.图像变换 图像变换通常有两种方式&#xff1a; 像素变换&#xff1a;点操作邻域操作&#xff1a;区域 调整图像亮度和对比度属于像素变换&#xff08;点操作&#xff09;。 2.调整图像亮度与对比度 可以通过以下公式调整图像的亮度和对比度&#…...

Python模块篇:函数/类/变量和常量/注释/导入和使用

大家好&#xff0c;我是辣条哥&#xff01;本期应邀写了一些Python模块相关内容~ Python模块是一种组织Python代码的方式&#xff0c;它将相关的代码放在一个文件中&#xff0c;以便于重用和维护。Python模块可以包含函数、类、变量和常量等&#xff0c;可以被其他Python程序导…...

Java反射和动态代理

反射 反射允许对封装类的成员变量、成员方法和构造方法的信息进行编程访问 成员变量&#xff1a;修饰符、名字、类型、get/set值 构造方法&#xff1a;修饰符、名字、形参、创建对象 成员方法&#xff1a;修饰符、名字、形参、返回值、抛出的异常、获取注解、运行方法 获取…...

[NOIP2004 提高组] 津津的储蓄计划(思路+代码详解)Python实现

题目描述 津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300 元钱&#xff0c;津津会预算这个月的花销&#xff0c;并且总能做到实际花销和预算的相同。 为了让津津学习如何储蓄&#xff0c;妈妈提出&#xff0c;津津可以随时把整百的钱存在她那里&#xff0c;到了年…...

分布式搜索引擎es 面试突击

es elastocsearch 倒排索引是在数据查询之前建立&#xff0c;在查询的时候可以直接通过关键词定位到文档内容。用空间换时间 分布式架构原理说一下&#xff1f; es底层是基于lucene来的 大概就是一个用于全文检索的jar包 用es来做分布式的搜索引擎 可以承载一秒钟几千的…...

社会心理学的六个经典实验

社会心理学的六个经典实验 社会心理学&#xff08;Social Psychology&#xff09;是一门研究我们周围情境的力量的科学&#xff0c;尤其关注我们是如何看待他人&#xff0c;如何影响他人的。更确切地说&#xff0c;社会心理学是一门就人们如何看待他人&#xff0c;如何影响他人…...

Java 单例模式详解

单例模式&#xff08;Singleton Pattern&#xff09;是一种常见的设计模式&#xff0c;它可以确保某个类只有一个实例&#xff0c;并提供对该实例的全局访问点。本文将详细介绍 Java 中所有单例模式实现&#xff0c;包括懒汉式、饿汉式、枚举式、双重检查锁定式、静态内部类式等…...

AI读心重磅突破登Nature!大脑信号1秒被看穿,还能预测未来画面

最近&#xff0c;来自洛桑联邦理工学院的研究团队提出了一种全新的方法&#xff0c;可以用AI从大脑信号中提取视频画面。论文已登Nature&#xff0c;却遭网友疯狂「打假」。 现在&#xff0c;AI不仅会读脑&#xff0c;还会预测下一个画面了&#xff01; 利用AI&#xff0c;一个…...

【SAP Abap】X-DOC:SNRO - ABAP流水号应用

【SAP Abap】X-DOC&#xff1a;SNRO - ABAP流水号应用 1、定义表&#xff08;字段域&#xff09;2、定义流水号3、使用流水号4、测试程序 1、定义表&#xff08;字段域&#xff09; 2、定义流水号 Tcode: SNRO/SNUM&#xff0c; 根据以上创建的字段域 YDSNRO&#xff0c;创建对…...

基于AT89C51单片机的交通灯设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87763760?spm1001.2014.3001.5503 源码获取 主要内容&#xff1a; 设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时&#xff0c;令十字路口…...

MySQL系列三(定位慢SQL、SQL优化与索引优化)Using filesort

文章目录 1. 慢SQL1.1 定位慢SQL&#xff08;慢查询日志&#xff09;1.2 慢SQL优化整体思路 2. 索引优化3. SQL语句优化回表Using filesort 1. 慢SQL 1.1 定位慢SQL&#xff08;慢查询日志&#xff09; 在mysql 配置文件中 &#xff08;my.conf)&#xff0c;进行下面配置&…...

免费使用GPT-4.0?【AI聊天 | GPT4教学】 —— 微软 New Bing GPT4 申请与使用保姆级教程

目录 认识 New Bing 2. 注册并登录 Microsoft 账号 3. 如何免科学上网使用 New Bing&#xff1f; 4. 加入 WaitList 候补名单 5. 使用 New Bing&#xff01; 6. 使用 Skype 免科学上网访问 New Bing&#xff01; 7. 在 Chrome 浏览器中使用 New Bing&#xff01; 8. 总…...

渲染对电脑伤害大吗_如何减少渲染伤机?

虽然说摄影穷三代&#xff0c;但想要自己的本地配置跟上自己的创作速度&#xff0c;高昂的硬件配置支出也可以让自己穷一段时间。CG制作过程中&#xff0c;渲染是必不可少的一步&#xff0c;而且这一步也是很吃“机器”的&#xff0c;那很多人也会担心&#xff0c;如果经常用自…...

非线性最小二乘

非线性最小二乘 目录 文章目录 非线性最小二乘目录 [toc]1 非线性最小二乘估计3 非线性最小二乘的实现 1 非线性最小二乘估计 在经典最小二乘法估计中&#xff0c;假定被解释变量的条件期望是关于参数的线性函数&#xff0c;例如 E ( y ∣ x ) a b x E(y|x) abx E(y∣x)a…...

23.5.7总结(学习通项目思路)

项目&#xff1a; 1.登录修改&#xff1a;删除数据库中的状态&#xff0c;通过使用 ConcurrentHashMap来作为是否在线的判断&#xff0c;通过设定一个退出的按钮&#xff0c;发消息给服务端主动移除对应的值。 2.注册&#xff1a;增加了手机号的填写&#xff0c;正则判断&…...

如何生成api接口获取宝贝商品详情,商品详情接口,产品详情

API (Application Programming Interface)是指应用程序接口&#xff0c;它是一种通过编写一组统一的规则&#xff0c;开发一个软件来与其他应用程序进行通讯的技术。API可以方便应用程序之间的交流和数据共享&#xff0c;以及增强应用程序的功能。 在现代应用程序中&#xff0…...

微服务---Redis实用篇-黑马头条项目-登录功能(短信验证缓存,用户信息缓存)

黑马头条项目-登录功能(短信验证缓存,用户信息缓存) 1、短信登录 1.1、导入黑马点评项目 1.1.1 、导入SQL 1.1.2、有关当前模型 手机或者app端发起请求&#xff0c;请求我们的nginx服务器&#xff0c;nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开t…...

美国纽扣电池的包装电池盒必须附带警告标签16 CFR 第 1700.20

美国纽扣电池及硬币电池的包装、电池盒必须附带警告标签16 CFR 第 1700.20 美国要求在纽扣电池或硬币电池的包装上、电池盒上以及包含纽扣电池或硬币电池的消费品附带说明和手册上贴上警告标签。 商品法规、标准和要求纽扣电池和硬币电池以下所有项&#xff1a; 16 CFR 第 17…...

AcWing——方格迷宫(有点不一样的迷宫问题)

4943. 方格迷宫 - AcWing题库 1、题目 给定一个 n 行 m 列的方格矩阵。 行从上到下依次编号为 1∼n&#xff0c;列从左到右依次编号为 1∼m。 第 i 行第 j 列的方格表示为 (i,j)。 矩阵中的方格要么是空地&#xff08;用 . 表示&#xff09;&#xff0c;要么是陷阱&#xf…...

《常规脉搏传输时间作为人体血压变化标志》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: 论文试图解决什么问题&#xff1f; Q2: 这是否是一个新的问题&#xff1f; Q3: 这篇文章要验证一个什么科学假设&#xff1f; Q4: 有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f; …...

java学习之异常三

目录 一、throws 一、基本说明 二、使用细节 二、自定义异常 一、 基本概念 ​编辑二、自定义异常的步骤 三、实例 四、练习 三、throw和throws的区别 四、本章作业 第一道 第二题 第三题 第四题 一、throws 一、基本说明 package com.hspedu.throws_;import java.i…...

生产者向 Kafka 发送消息的执行流程

&#xff08;1&#xff09;生产者要往 Kafka 发送消息时&#xff0c;需要创建 ProducerRecoder,代码如下&#xff1a; ProducerRecord<String,String> record new ProducerRecoder<>("CostomerCountry","Precision Products","Fr…...

Linux命令·netstat

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据&#xff0c;一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序&#xff0c;它能提供TCP连接&#xff0c;TCP和UDP监听&#xff0c;进程内存管理的相关报告。 如果你的计算机有时候…...