如何使用 objdump 反汇编单个函数?

2023-11-24

我的系统上安装了一个二进制文件,并且想查看给定函数的反汇编。最好使用objdump,但其他解决方案也是可以接受的。

From 这个问题我了解到,如果我只知道边界地址,我也许能够反汇编部分代码。从这个答案我已经学会了如何将分割的调试符号转回单个文件。

但即使对单个文件进行操作,甚至反汇编所有代码(即没有开始或停止地址,但简单-d参数为objdump),我仍然没有在任何地方看到该符号。这是有道理的,因为所讨论的函数是静态的,因此它不会被导出。尽管如此,valgrind将报告函数名称,因此它必须存储在某个地方。

查看调试部分的详细信息,我发现在.debug_str部分,但我不知道可以将其转换为地址范围的工具。


我建议使用 gdb 作为最简单的方法。你甚至可以将其作为一句台词来完成,例如:

gdb -batch -ex 'file /bin/ls' -ex 'disassemble main'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 objdump 反汇编单个函数? 的相关文章

  • 远程调试符号文件格式

    有谁知道远程调试符号文件的文件格式 项目 gt 选项 gt 链接 gt 包括远程调试符号 None
  • 如何解释elf符号表部分的st_info字段

    The man page http manpages ubuntu com manpages xenial man5 elf 5 html有这样说 st info This member specifies the symbol s typ
  • macOS 上的 NASM 间接寻址程序集不正确

    在 macOS 上汇编以下代码 global start default rel section text start lea rdx buffer 0 lea rdx buffer 1 lea rdx buffer 2 lea rdx b
  • 了解汇编中的 JMP 代码

    我最近刚刚触及汇编语言和调试的表面 我有以下代码 Address Hex dump Command Comments 006E3689 E8 C5F9FFFF CALL 006E3053 gt 006E368E E9 DB E9 gt 00
  • 检查编译单元的 DWARF 版本

    全部 有没有工具可以检查文件的 DWARF 版本 像这样的东西 dwarf tool binary name 4 在Linux环境下 如果你安装了 GCC 你应该有readelf可执行的 所以你可以尝试这个 readelf debug du
  • 如何使 GCC 将 .text 部分编译为 ELF 二进制文件中的可写部分?

    我希望能够动态更改我正在使用的库中的可执行代码 本质上 我想动态地 NOP 掉某些不需要的函数 但是 我正在使用的库的 text 部分是不可写的 大多数程序都是如此 我有该库的源代码 因此想使用 GCC 将其编译为可写 有没有办法做到这一点
  • Linux 中可执行堆栈的示例(i386 架构)

    我发现当我们使用嵌套函数 http en wikipedia org wiki Nested function GCC 需要一个可执行堆栈蹦床代码 http gcc gnu org onlinedocs gccint Trampolines
  • Visual Studio Code 未在 OS X 上加载符号

    我正在尝试在 OS X 上使用 ASP NET Core 设置 Web api 我已经正确设置了我的环境 我认为 并且我能够使用以下命令构建和运行我的应用程序dotnet build从终端 我可以从 Visual Studio Code 开
  • ELF Relocation逆向工程

    我希望你们能帮助我理解重定位条目和 ELF 部分数据是如何关联的 以及它们是如何处理和生成的 我有一个古老的不受支持的工具 它采用 ELF 文件和相关的 PLF 文件 部分链接文件 在构建过程的早期生成 并从中构建一个自定义可重定位文件 该
  • 在 C 中访问 ELF 符号表

    我正在编写一个程序来模仿elfdump ecps 目前它可以正确打印 elf 标头 程序标头和节标头 但我陷入了符号表的最后几个部分 所需的输出格式为 Symbol Table Section dynsym index value size
  • 编辑 ELF 文件中的变量值?

    我需要更改已编译的 ELF 文件中的几个变量 为了清楚地解释这一点 我将使用一个简单的 C 结构作为示例 单个源文件被编译并从 MyFile c 链接 0x1000 到 MyFile elf typedef struct uint32 t
  • ELF的基址

    我正在尝试查找 ELF 文件的基地址 我知道您可以使用 readelf 来查找程序入口点和不同部分的详细信息 基址 大小 标志等 例如 x86 架构的程序通过链接器基于 0x8048000 使用 readelf 我可以看到程序入口点 但输出
  • 尝试汇编反汇编器的输出(例如 objdump)[重复]

    这个问题在这里已经有答案了 可能的重复 反汇编 修改然后重新组装 Linux 可执行文件 https stackoverflow com questions 4309771 disassembling modifying and then
  • 在运行时访问 build-id

    我试图弄清楚如何访问链接器在运行时生成的构建 ID 从这个页面开始 https linux die net man 1 ld https linux die net man 1 ld 当我构建一个测试程序时 例如 gcc test c o
  • x86 asm 反汇编程序库

    是否有任何可从 NET 调用的库 我可以在其中传递二进制数据并将其反汇编为 x86 汇编代码 如果您不介意使用 P Invoke 绑定到非托管 dll 请查看比引擎 http www beaengine org 它是您可能找到的最好的反汇编
  • 断点改变程序流程

    我正在尝试分析和逆向我拥有的 Objective C 程序 我通过手动更改一些操作码对可执行文件进行了一些修改 然而 当我测试修改后的软件时 我得到 死亡人数 9 没关系 我想我触碰了不该触碰的东西 我当时就推出了gdb myprogram
  • 访问附加到 ELF 二进制文件的数据

    我有一个静态 ELF 二进制文件 它从 zip 文件中读取数据 为了简化分发 我想将 zip 文件附加到二进制文件中 如下所示 cat mydata zip gt gt mybinary 我知道这样做不会损坏 mybinary 但我不知道如
  • 在执行期间访问.eh_frame数据

    我正在尝试访问以下内容 eh frame正在运行的程序的一部分 具体来说 该程序是 Linux 内核 2 6 34 8 这 eh frame包含用于异常处理的有用数据 我想在内核代码内部使用它 该部分已经由以下人员编写gcc readelf
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • 更改 elf 调试信息中列出的源文件

    基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 什么东西阻止你 该路径存储在 debug str二进制文件的一部

随机推荐

  • 如何重新渲染平面列表?

    与 ListView 不同的是 我们可以更新 this state datasource 有没有任何方法或示例来更新 FlatList 或重新渲染它 我的目标是当用户按下按钮时更新文本值 renderEntries item index r
  • 如何在 Visual Studio 代码中调试时扩展数组

    这是我的代码 它是一个简单的排列代码块 void arrange char c int N int start if start N print c N return for int i start i lt N i swap c star
  • iframe 滚动 iOS 8

    我有一个 iframe 我需要它有滚动溢出 它似乎可以在桌面上运行 我使用了一种解决方法使其可以在 iOS 中运行 现在它可以在 Android 和 iOS 上运行 然而 iOS8却失败了
  • 以编程方式映射 servlet,而不是使用 web.xml 或注释

    如何在没有 web xml 或注释的情况下以编程方式实现此映射 任务不是使用任何框架 如 spring 或其他框架
  • 使用 r 从字符串中提取电子邮件地址

    这是 5 个 Twitter 用户描述 这个想法是从每个字符串中提取电子邮件 这是我尝试过的代码 它有效 但可能有更好的东西 我宁愿避免使用 unlist 并使用正则表达式一次性完成它 我见过其他类似的 python perl php 问题
  • Spring MVC 类型转换:PropertyEditor 还是 Converter?

    我正在寻找在 Spring MVC 中绑定和转换数据的最简单的方法 如果可能的话 不做任何xml配置 到目前为止我一直在使用属性编辑器像这样 public class CategoryEditor extends PropertyEdito
  • PowerShell函数不会返回DataTable

    我在 PowerShell v4 0 Windows 7 x64 SP1 上有一个 PowerShell 脚本 它创建了一个非常复杂的数据表 我希望能够轻松地将 DataTable 代码放置在任何地方 因此我决定将其包装在一个简单的函数中
  • 数组通过 ajax post 被截断。 Ajax 发帖限制?

    我有一个多维数组 它由 426 个较小的数组组成 还包含 4 个属性 下面是 426 个数组之一的示例 array Main array 0 gt array 1 of 426 arrays name gt Danny email gt e
  • twitter-bootstrap 关闭警报不起作用

    我无法让它工作 当我单击关闭按钮时 什么也没有发生 这是代码 div class alert alert error alert block style width 200px div
  • 如何从另一个日期选择器中设置日期选择器中的最小日期?

    我目前正在向我的日期选择器添加验证 并且在设置最短日期时遇到问题to日期选择器是在中选择的任何内容from日期选择器 即 如果选择 12 3 15 则日期选择器中的最小日期为 12 3 15 这是我正在使用的代码 from datepick
  • 有时间限制的计算

    我正在尝试编写一个构造 它允许我在给定的时间窗口内运行计算 就像是 def expensiveComputation Double some intensive math val result Option Double timeLimit
  • 通过赋值运算符插入到 std::vector 的索引处

    我是 C 新手 很好奇这是否是插入 std vector 的首选方式 std vector
  • 在 OSX 上静态链接 gfortran 库的正确方法

    我有一个要分发的 Fortran 程序 因此我想静态链接到 gfortran 库 如果我使用以下标志编译程序 gfortran o myprog static libgfortran static libgcc myprog f otool
  • 将向量分割成块,使得每个块的总和近似恒定

    我有一个包含超过 100 000 条记录的大型数据框 其中的值已排序 例如 考虑以下虚拟数据集 df lt data frame values c 1 1 2 2 3 4 5 6 6 7 我想创建 3 组上述值 仅按顺序 以便每组的总和或多
  • 使用 WebDAV 访问 Exchange 2003 收件箱

    你怎么 使用 NET 使用 WebDAV 获取用户收件箱 不是您自己的收件箱 中的电子邮件列表 然后获取每封电子邮件的属性和 或内容 我想这样做而不WebDAV NET 如果可能的话 看看我的这篇关于 webdav 的帖子 希望它能给你一些
  • 实体框架循环引用

    再次尝试这个问题 因为我的第一次尝试几乎没有连贯性 p 所以我非常困惑并使用 Entity Framework Code First 我有一个森林课 我有一个树类 每个森林可以有很多树 当我尝试序列化时 我得到了循环引用 public cl
  • 将数组传递给构造函数而不声明它?

    在处理中 我定义了以下类 class SomeClass SomeClass int someArray println someArray 现在我想创建该类的实例 但在将数组传递给构造函数时遇到问题 SomeClass myVar new
  • 每 5 分钟运行一次 PHP 脚本并避免竞争条件

    我有一个 php 脚本 需要每 5 分钟运行一次 目前我正在使用 cron 作业来运行它 并且效果很好 但我的主机只允许最短时间 15 分钟 所以我的问题是 我可以使用访问者每5分钟触发一次php脚本的运行吗 我可以轻松地记录它上次运行的时
  • Swift:带有中心圆形按钮的自定义 TabBar

    I try to create custom tabbar like the below picture Below is the result i get 下面是我当前的代码 class CustomTabBarController UI
  • 如何使用 objdump 反汇编单个函数?

    我的系统上安装了一个二进制文件 并且想查看给定函数的反汇编 最好使用objdump 但其他解决方案也是可以接受的 From 这个问题我了解到 如果我只知道边界地址 我也许能够反汇编部分代码 从这个答案我已经学会了如何将分割的调试符号转回单个