Linux下反汇编相关工具

Linux下反汇编相关工具

程序出现崩溃堆栈,如果事先没有装调试包或者以调试模式编译,则打出的堆栈中看不到函数名,或者显示 n/a。此时往往需要根据 backtrace 打印的函数偏移地址来确定调用的是什么函数,这里就涉及到比较高级的调试技巧。

查看ELF文件信息

ldd

显示可执行文件或共享库所依赖的共享库。

Usage: ldd [OPTION]... FILE...--help              print this help and exit   (获取指令帮助信息)--version           print version information and exit  (打印ldd的版本号)-d, --data-relocs       process data relocations   (执行重定位和报告任何丢失的对象)-r, --function-relocs   process data and function relocations  (执行数据对象和函数的重定位,并且报告任何丢失的对象和函数)-u, --unused            print unused direct dependencies (打印未使用的直接依赖)-v, --verbose           print all information   (详细信息模式,打印所有信息,例如包括符号的版本信息)

nm

linux下nm命令的基本使用以及输出符号类型详解_nm命令中符号类型详解-CSDN博客

列出库文件.a、.lib)、目标文件(*.o)、可执行文件的符号表。

-A-o 或 --print-file-name:打印出每个符号属于的文件
-a 或 --debug-syms:显示调试符号。
-B:等同于–format=bsd,用来兼容MIPS的nm。
-C 或 --demangle:将低级符号名解码(demangle)成用户级名字。
-D 或 --dynamic:显示动态符号。该任选项仅对于动态目标(例如特定类型的共享库)有意义。
-f forma 或 --format=formatt:使用format格式输出。format可以选取bsd、sysv或posix,该选项在GNU的nm中有用。默认为bsd。
-g 或 --extern-only:仅显示外部符号。
-n 、-v 或 --numeric-sort:按符号对应地址的顺序排序,而非按符号名的字符顺序。
-p 或 --no-sort:按目标文件中遇到的符号顺序显示,不排序。
-P 或 --portability:使用POSIX.2标准输出格式代替默认的输出格式。等同于使用任选项-f posix。
-s 或 --print-armap:当列出库中成员的符号时,包含索引。索引的内容包含:哪些模块包含哪些名字的映射。
-r 或 --reverse-sort:反转排序的顺序(例如,升序变为降序)。
--size-sort:按大小排列符号顺序。该大小是按照一个符号的值与它下一个符号的值进行计算的。
-t radix 或 --radix=radix:使用radix进制显示符号值。radix只能为“d”表示十进制、“o”表示八进制或“x”表示十六进制。
--target=bfdname:指定一个目标代码的格式,而非使用系统的默认格式。
-u 或 --undefined-only:仅显示没有定义的符号(那些外部符号)-l 或 --line-numbers:对每个符号,使用调试信息来试图找到文件名和行号。对于已定义的符号,查找符号地址的行号。对于未定义符号,查找指向符号重定位入口的行号。如果可以找到行号信息,显示在符号信息之后。

readelf

查看ELF文件信息。

-a	显示所有可用信息
-h	显示ELF文件头
-l	显示程序头部列表(也就是段)
-S	显示节头部列表
-g	显示节组信息
-t	显示节的详细信息
-e	显示节和程序头部的完整信息
-s	显示符号表条目
-r	显示重定位条目
-d	显示动态段
-n	显示笔记段
-u	显示未定义的符号
-v	显示版本信息
-x	<number/hex> 显示给定节的十六进制转储
-p	<number/hex> 显示给定节的字符串内容
-c	显示压缩节的信息
-i	显示动态节的信息
-m	显示ELF机器类型

objdump

Linux下反编译命令objdump快速学习总结(附实例操作)_linux反编译-CSDN博客

反汇编目标文件或者可执行文件。

-C--demangle	将底层的符号名解码成用户级名字(即demangle)-d--disassemble	从objfile中反汇编那些特定指令机器码的section。
-D 或 --disassemble-all	与 -d 类似,但反汇编所有section。
-f 或 --file-headers	显示objfile中每个文件的整体头部摘要信息。
-j name或 --section=name	仅仅显示指定名称为name的section的信息
-l 或 --line-numbers	用文件名和行号标注相应的目标代码,仅仅和-d、-D或者-r一起使用使用-ld和使用-d的区别不是很大,在源码级调试的时候有用,要求编译时使用了-g之类的调试编译选项。
-s 或 --full-contents	显示指定section的完整内容。默认所有的非空section都会被显示。
-S--source	尽可能反汇编出源代码,尤其当编译的时候指定了-g这种调试参数时,效果比较明显。隐含了-d参数。
-T 或 --dynamic-syms	显示文件的动态符号表入口,仅仅对动态目标文件意义,比如某些共享库。它显示的信息类似于 nm -D --dynamic 显示的信息。
-m machine	指定反汇编目标文件时使用的架构,当待反汇编文件本身没有描述架构信息的时候(比如S-records),这个选项很有用。可以用-i选项列出这里能够指定的架构
-h 或 --section-headers或 --headers	显示目标文件各个section的头部摘要信息。
-i--info	显示对于 -b 或者 -m 选项可用的架构和目标格式列表。

addr2line

经常和 dmesg 一起使用:Linux下addr2line命令用法-CSDN博客

将程序指令地址转换为所对应的函数名、以及函数所在的源文件名和行号。

-a 在函数名、文件名和行号信息之前,以十六进制形式显示地址。
-b 指定目标文件的格式为bfdname。
-C 将低级别的符号名解码为用户级别的名字(即demangle)-e 指定需要转换地址的可执行文件名,默认文件是a.out。
-f 在显示文件名、行号信息的同时显示函数名。
-s 仅显示每个文件名(the base of each file name)去除目录名。
-i 如果需要转换的地址是一个内联函数,则还将打印返回第一个非内联函数的信息。
-j 读取指定section的偏移而不是绝对地址。
-p 使打印更加人性化:每个地址(location)的信息都打印在一行上。
-r 启用或禁用递归量限制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8新特性Stream

Stream 是 Java 8 引入的一种新的抽象&#xff0c;用于处理集合类 (Collection) 的数据。Stream 并不存储数据&#xff0c;而是按需计算数据。Stream 操作有两个重要特性&#xff1a; 流水线操作 (Pipelining)&#xff1a;Stream 操作可以链式调用&#xff0c;形成一个流水线&…

springboot项目的打包问题(常用)

在java的日常开发中&#xff0c;离不开项目的打包&#xff0c;怎么将项目打包&#xff0c;并部署到服务器&#xff0c;这是每一个java程序猿都需要会的知识点&#xff0c;我根据自己的经验写这篇文章&#xff0c;希望可以帮助到有需要的人。 知识铺垫&#xff1a;在java项目中…

第十五站:Java琥珀——持续集成与交付的自动化之路

Java作为一种广泛使用的编程语言&#xff0c;它的生态系统非常庞大和成熟&#xff0c;其中包括了持续集成与持续交付&#xff08;CI/CD&#xff09;的工具&#xff0c;这些工具对于现代软件开发至关重要。下面我将结合Java源代码&#xff0c;简要介绍Jenkins和GitLab CI/CD如何…

Compiled blocks

目录 一&#xff0c;编译块 Compiled Block 二&#xff0c;编译循环 三&#xff0c;调用编译块 Invoke 四&#xff0c;Tips and notes 一&#xff0c;编译块 Compiled Block 在几何体网络内&#xff0c;可将网络的一部分放入编译块&#xff08;compiled block&#xff09;内…

jenkins nginx自动化部署 php项目

在当今快速发展的IT领域&#xff0c;自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署&#xff08;CI/CD&#xff09;的佼佼者&#xff0c;结合Docker容器技术和PHP编程语言&#xff0c;以及Ansible自动化工具&#xff0c;可以实现高效、可靠的自动…

Node.js RESTful API

Node.js RESTful API Node.js,作为一种流行的服务器端JavaScript运行环境,因其轻量级、高效和易于学习的特点,成为了开发RESTful API的优选技术之一。RESTful API是一种广泛使用的Web服务架构风格,它利用HTTP协议的标准方法(如GET、POST、PUT、DELETE)来访问和操作数据。…

开发指南035-刷新待办

这个问题在平台上的难点在于&#xff1a;待办是在门户系统里&#xff0c;待办的处理是在另一个独立的前端工程里&#xff0c;两者是跨域关系。当然这两个系统都是同一个浏览器打开的。跨域页面通讯技术的核心是&#xff1a;消息监听。 1、门户主界面的vue页面的create中挂接消息…

JavaScript 中的 change

什么是 change 事件&#xff1f; change 事件是 HTML 表单元素的一种事件类型&#xff0c;当表单元素的值发生变化并且失去焦点时&#xff0c;该事件会被触发。常见的表单元素包括 <input>、<select> 和 <textarea>。 适用元素 <input>&#xff08;…

基于DeepNLP AI Store真人点评和ShowCase分享社区-AI for Image Generator

来源 quora 社区: https://deepnlpaistore.quora.com/ github: https://rockingdingo.github.io/deepnlp/store/image_generator 内容 DeepNLP AI Store 网址&#xff1a;http://www.deepnlp.org/store/image-generator 网站针对图像生成类别 Image Generator下多个AI工具如 …

Spring MVC数据绑定和响应——复杂数据绑定(一)数组绑定

一、数组绑定的使用场景 在实际开发中&#xff0c;可能会遇到客户端请求需要传递多个同名参数到服务器端的情况&#xff0c;这种情况采用前面讲解的简单数据绑定的方式显然是不合适的。此时&#xff0c;可以使用数组来接收客户端的请求参数&#xff0c;完成数据绑定。 接下来…

CS与MSF的权限互相传递/mimikatz抓取windows 2012明文密码

目录 CS和MSF的简单介绍 Metasploit Cobalt Strike 1、CS权限传递到MSF 2、MSF权限传递到CS 3、使用mimikatz抓取明文密码 通过修改注册表用户重新登录后抓取明文密码 今天的任务是两个 一个是CS与MSF的权限互相传递一个是抓取windows2012的明文密码 那就分别来完成 …

云计算基础技术

云计算基础技术概览 计算类产品主要提供算力&#xff0c;支持业务运行&#xff0c;例如网站、办公软件、数据分析等计算能力&#xff0c;目前典型的产品主要是虚拟化和容器&#xff0c;在公有云上的云主机本质也是虚拟机。网络类产品主要满足资源的网络连通性和隔离&#xff0c…

软考初级网络管理员__软件单选题

1.如下图所示&#xff0c;在IE“Intemet选项”对话框的()选项卡中可指定电子邮件程序。 常规 内容 高级 程序 2.在Excel的A1单元格中输入函数“ROUND(1/3,3)”,按回车键之后&#xff0c;A1中的值为()。 1 1/3 0.34 0.333 3.在输入Word文档过程中&#xff0c;为了防止意…

Pinia的基本用法

Pinia的安装和引入 1.安装Pinia npm install pinia2. 在vue项目的main.js文件中引入pinia import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const app createApp(App)app.use(pinia) app.mount(#ap…

日志打印中对容器(包括多级容器)的通用输出

在日志打印中&#xff0c;往往有打印一个数组、集合等容器中的每个元素的需求&#xff0c;这些容器甚至可能嵌套起来&#xff0c;如果每个地方都用for循环打印&#xff0c;将会特别麻烦。基于这种需求&#xff0c;作者尝试实现一个通用的打印函数SeqToStr()&#xff0c;将容器序…

线上民族传统服饰商城

摘 要 随着互联网的不断发展和普及&#xff0c;电子商务成为了人们生活中不可或缺的一部分。传统的线下购物方式逐渐被线上购物所取代&#xff0c;人们越来越习惯在互联网上购物。而民族传统服饰作为我国丰富多样的民族文化的重要组成部分&#xff0c;具有独特的艺术价值和商业…

unity VR Interaction Framework 创建新手势

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、新建物体&#xff0c;并添加必要组件二、添加抓取点三、查看手势的可视化样式四、制作新的手势1.点击编辑2.根据需求调节手指关节3.保存手势4. 使用创建的手势5.运行 总结 前言…

等保测评——安全通信网络——安全区域边界

安全通信网络 网络架构 a) 应保证网络设备的业务处理能力满足业务高峰期需要&#xff1b; b) 应保证网络各个部分的带宽满足业务高峰期需要&#xff1b; c) 应划分不同的网络区域&#xff0c;并按照方便管理和控制的原则为各网络区域分配地址&#xff1b; 应核查是否依据重…

远程过程调用协议gRPC及在go环境下的使用

1. 远程过程调用协议 1.1 定义 远程过程调用(Remote Procedure Call&#xff0c;PRC是一种进程间通信技术&#xff0c;它使得程序可以像调用本地函数一样调用远程服务器上的函数。RPC 屏蔽了底层的通信细节&#xff0c;让开发者能够更专注于业务逻辑&#xff0c;而无需关心网络…

无源电压继电器 JDY-1210AW 导轨安装 约瑟JOSEF

系列型号&#xff1a; JDY-1002AW电压继电器&#xff1b;JDY-1002B电压继电器&#xff1b; JDY-1110AW电压继电器&#xff1b;JDY-1110B电压继电器&#xff1b; JDY-1220AW电压继电器&#xff1b;JDY-1220B电压继电器&#xff1b; JDY-1100AW电压继电器&#xff1b;JDY-110…