https://www.dbs724.com/146055.html

一招制敌:学会Linux查看二进制文件

在Linux操作系统中,二进制文件是一种常见的文件类型。如果你想深入了解一个二进制文件,可能需要查看其内容。但是,二进制文件是一种机器可读的文件,可能很难直接理解,因此需要特殊的工具来解析和查看。本文将介绍一些Linux下的工具,帮助你查看二进制文件。

1. file命令

file命令可以用来确定一个文件的类型,包括二进制文件、纯文本文件、图像文件等等。在Linux中,file命令是一个很有用的工具,用来辅助文件分类和归档。

例如,输入命令file /bin/bash可以获知bash的类型:

$ file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=66d6244d15847e7c0e39d7dbe4c4b19d177361d9, stripped

可以看到这是一个ELF 64-bit LSB的可执行文件。

2. hexdump命令

hexdump命令可以将文件的二进制数据以十六进制格式输出。这样可以帮助人们更好地理解二进制文件的结构。

例如,输入命令hexdump -C /bin/bash可以输出bash的十六进制数据:

$ hexdump -C /bin/bash | head -n 5
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 03 00 3e 00 01 00 00 00 e8 6a 40 00 00 00 00 00 |..>......j@.....|
00000020 40 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 |@........@......|
00000030 00 00 00 00 40 00 38 00 09 00 40 00 1b 00 1a 00 |....@.8...@.....|
00000040 06 00 00 00 05 00 00 00 40 00 00 00 00 00 00 00 |........@.......|

可以看到bash二进制文件中的数据是以十六进制格式展现的。

3. Strings命令

Strings命令可用于在二进制文件中查找ASCII字符串。该命令可以帮助我们找到字面上的秘密——二进制文件中的字符串。在某些情况下,这些字符串可能透露出相关的信息。

例如,输入命令strings /bin/bash可以输出bash文件中所有的ASCII字符串:

$ strings /bin/bash | head -n 5
/lib64/ld-linux-x86-64.so.2
libc.so.6
setlocale
bindtextdomain
__ctype_get_mb_cur_max

我们可以看到输出的内容就是ASCII字符串。

4. Objdump命令

Objdump是一个强大的工具,可以解析目标文件、可执行文件、动态链接库等二进制文件。它可以查看文件的目标代码、符号表、重定位表、代码段、数据段等信息。

例如,输入命令objdump -d /bin/bash可以查看bash中的汇编代码:

$ objdump -d /bin/bash
/bin/bash: file format elf64-x86-64

Disassembly of section .init:

0000000000400c48 :
400c48: 48 83 ec 08 sub $0x8,%rsp
400c4c: 48 8b 05 f9 2e 2c 00 mov 0x2c2ef9(%rip),%rax # 6cf148

可以看到输出了bash中的汇编代码,这样就有助于理解程序的内部结构和工作原理。

总结

本文介绍了Linux下的四个二进制文件查看工具:file、hexdump、strings、objdump。这些工具可以帮助你更好地理解和分析二进制文件,从而更好地理解程序的内部结构和工作原理。谨记此招,以便在需要时取得更好的效果。

【转帖】Linux查看二进制文件:一招制敌(linux二进制查看文件)的更多相关文章

  1. 一招制敌 - 玩转 AngularJS 指令的 Scope (作用域),讲得特别好

    学习了AngularJS挺长时间,最近再次回首看看指令这部分的时候,觉得比自己刚开始学习的时候理解的更加深入了,尤其是指令的作用域这部分. 步入正题: 每当一个指令被创建的时候,都会有这样一个选择,是 ...

  2. Linux下查看二进制文件命令

    一.在Linux下查看二进制文件的软件: xxd hexdump 二.编辑: 1.biew 2.hexedit 3.vim Vim 来编辑二进制文件.Vim 本非为此而设计的,因而有若干局限.但你能读 ...

  3. 怎么查看二进制文件内容?linux下nm命令告诉你!

    linux下强大的文件分析工具 -- nm 什么是nm nm命令是linux下自带的特定文件分析工具,一般用来检查分析二进制文件.库文件.可执行文件中的符号表,返回二进制文件中各段的信息. 目标文件. ...

  4. 使用strings查看二进制文件中的字符串

    使用strings查看二进制文件中的字符串 今天介绍的这个小工具叫做strings,它实现功能很简单,就是找出文件内容中的可打印字符串.所谓可打印字符串的涵义是,它的组成部分都是可打印字符,并且以nu ...

  5. Linux Kernel 排程機制介紹

    http://loda.hala01.com/2011/12/linux-kernel-%E6%8E%92%E7%A8%8B%E6%A9%9F%E5%88%B6%E4%BB%8B%E7%B4%B9/ ...

  6. Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算

    目录(?)[-] proc文件系统 proccpuinfo文件 procstat文件 procpidstat文件 procpidtasktidstat文件 系统中有关进程cpu使用率的常用命令 ps ...

  7. Linux常用基础命令整理:关机命令、查看目录下文件命令等

    Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...

  8. Linux GPT分区表16进制实例分析

    Linux GPT分区表16进制实例分析 GPT分区表随着win10的普及,已经在越来越多的新电脑上开始使用了.前段时间的新闻有看到说Intel会在后面的新平台中完全取消CSM支持,这也大概相当于后面 ...

  9. 【转帖】Linux上搭建Samba,实现windows与Linux文件数据同步

    Linux上搭建Samba,实现windows与Linux文件数据同步 2018年06月09日 :: m_nanle_xiaobudiu 阅读数 15812更多 分类专栏: Linux Samba 版 ...

  10. 如何在屏幕上查看命令的输出以及在Linux中写入文件

    在Linux中输出命令可以做很多事情(http://www.nanke0834.com) 您可以将命令的输出分配给变量,将其发送到另一个命令/程序以通过管道进行处理或将其重定向到文件以进行进一步分析. ...

随机推荐

  1. 如何强制SQL走性能更优的hash join

    本文分享自华为云社区<[SQL优化]为什么有时候无法走执行性能更优的hashjoin>,作者: leapdb. 1. hash join通常优于nestloop join 通常nestlo ...

  2. Kubernetes的拐点助推器:左手开源,右手边缘计算

    摘要:KubeEdge 是首个基于 Kubernetes 扩展的,提供云边协同能力的开放式智能边缘计算平台,也是 CNCF 在智能边缘领域的首个正式项目.依托 Kubernetes 强大的容器编排和调 ...

  3. 千年荒漠变绿洲,看沙漠“卫士”携手昇腾AI植起绿色希望

    摘要:风沙肆虐,沙漠侵蚀神州大地,华东师范大学基于昇腾AI基础软硬件平台研制的种树机器人成为沙漠"卫士",穿越戈壁,跨越千里,为荒漠治理贡献力量!华师大携手昇腾AI共同植起绿色希望 ...

  4. 常见的6种MySQL约束

    摘要:一篇文章带你彻底了解MySQL各种约束 MySQL约束 <1> 概念 是一种限制,它是对表的行和列的数据做出约束,确保表中数据的完整性和唯一性. <2> 使用场景 创建表 ...

  5. DevUI开源经验分享:从0到1开始运营你的开源项目

    摘要:DevUI是面向企业中后台产品的开源前端解决方案,于2019年6月正式在GitHub开源,从当时的无人问津到去年8月累计1000 Star,再到现如今上千名社区成员.上百位贡献者.达成了3000 ...

  6. 13个QA带你了解线上压测的知识点

    摘要:设计一个线上压测系统能让我们学习到多少东西?这13个问题看你能否搞定. 本文分享自华为云社区<设计一个线上压测系统能让我们学习到多少东西?13个问题看你能否搞定>,作者:breakD ...

  7. 华为云GaussDB(for Influx)揭秘第五期:最佳实践之子查询

    摘要: GaussDB(for influx)提供灵活的子查询能力,满足海量数据场景下的高性能查询需求. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第五期:最佳实践之 ...

  8. webpack性能优化(2):splitChunks用法详解

    之前写的<webpack性能优化(0):webpack性能优化概况-优化构建速度>.<webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载> 如果使用vue-c ...

  9. TeamX 引擎的高并发能力测试

    TeamX,是基于 SolonJT 引擎构建的一个团队协工具.主要功能有: Wiki(团队词条,用于写接口文档也行...) Planned(项目计划 和 个人日志) 比较兄弟产品,区别会很大:基于表格 ...

  10. 使用 Kubeadm 部署 Kubernetes(K8S) 安装 -- Ingress-Ngnix

    前置条件:使用 Kubeadm 部署 Kubernetes(K8S) 安装 安装ingress-nginx组件(在master节点执行) 通过 ip+port 号进行访问,使用 Service 里的 ...