作为我正在学习的一个大型项目的一部分,我需要破译大量的程序集。要判断这一点,我需要通过调试代码找到“炸弹”不同“阶段”的答案。目标是不引爆炸弹。

Dump of assembler code for function phase_2:
   0x000000000000160b <+0>:     endbr64
   0x000000000000160f <+4>:     push   %rbp
   0x0000000000001610 <+5>:     push   %rbx
   0x0000000000001611 <+6>:     sub    $0x28,%rsp
   0x0000000000001615 <+10>:    mov    %fs:0x28,%rax
   0x000000000000161e <+19>:    mov    %rax,0x18(%rsp)
   0x0000000000001623 <+24>:    xor    %eax,%eax
   0x0000000000001625 <+26>:    mov    %rsp,%rsi
   0x0000000000001628 <+29>:    callq  0x1eea <read_six_numbers>
   0x000000000000162d <+34>:    cmpl   $0x1,(%rsp)
   0x0000000000001631 <+38>:    jne    0x163d <phase_2+50>
   //more code in here that isn't relevant I don't think
   0x000000000000163d <+50>:    callq  0x1ea8 <explode_bomb>
   //more code after this that isn't relevant to my question

看完之后,我决定需要查看read_six_numbers中的内容,如下所示:

Dump of assembler code for function read_six_numbers:
   0x0000000000001eea <+0>:     endbr64
   0x0000000000001eee <+4>:     sub    $0x8,%rsp
   0x0000000000001ef2 <+8>:     mov    %rsi,%rdx
   0x0000000000001ef5 <+11>:    lea    0x4(%rsi),%rcx
   0x0000000000001ef9 <+15>:    lea    0x14(%rsi),%rax
   0x0000000000001efd <+19>:    push   %rax
   0x0000000000001efe <+20>:    lea    0x10(%rsi),%rax
   0x0000000000001f02 <+24>:    push   %rax
   0x0000000000001f03 <+25>:    lea    0xc(%rsi),%r9
   0x0000000000001f07 <+29>:    lea    0x8(%rsi),%r8
   0x0000000000001f0b <+33>:    lea    0x14f7(%rip),%rsi        # 0x3409
   0x0000000000001f12 <+40>:    mov    $0x0,%eax
   0x0000000000001f17 <+45>:    callq  0x12f0 <__isoc99_sscanf@plt>
   0x0000000000001f1c <+50>:    add    $0x10,%rsp
   0x0000000000001f20 <+54>:    cmp    $0x5,%eax
   0x0000000000001f23 <+57>:    jle    0x1f2a <read_six_numbers+64>
   0x0000000000001f25 <+59>:    add    $0x8,%rsp
   0x0000000000001f29 <+63>:    retq
   0x0000000000001f2a <+64>:    callq  0x1ea8 <explode_bomb>
End of assembler dump.

这导致我想知道0x3409中的内容,如下所示。

 0x00003400 6c6f776e 2075702e 00256420 25642025 lown up..%d %d %
 0x00003410 64202564 20256420 25640045 72726f72 d %d %d %d.Error

所有不同阶段的答案应该都是字符串。所以我想我的答案应该是存储在不同%d中的六个数字。然而,当我在gdb中键入print 0x3409时,我得到了13321,这是0x3409的十进制数,而不是实际存储在内存中的值。那么我应该输入什么来获取%d的实际值?

GBD:如何查看存储在内存中的一系列值的更多相关文章

  1. 更改Xcode中的工作目录

    我设法使用cmake-GXcode在Xcode中运行C项目.现在我想调试它,因为它提供了很好的gdb.但是,我需要更改gdb执行的工作目录,否则它将无法工作.我可以做的是在gdb停止键入cdworking_dir之后,然后手动输入r.这是有效的,但Xcode将不断投诉,也不是一个优雅的解决方案.所以在构建设置的某个地方我应该能够设置工作目录.但在哪里?解决方法在Xcode中,在可执行文件上执行“获取信息”,并查看第一个选项卡–有一个工作目录的设置.

  2. MIPS中的IorD控制信号

    为什么控制信号称为IorD?这个名字代表什么?找不到有关此的任何文档。

  3. GBD:如何查看存储在内存中的一系列值

    作为我正在学习的一个大型项目的一部分,我需要破译大量的程序集。要判断这一点,我需要通过调试代码找到“炸弹”不同“阶段”的答案。目标是不引爆炸弹。看完之后,我决定需要查看read_six_numbers中的内容,如下所示:这导致我想知道0x3409中的内容,如下所示。所以我想我的答案应该是存储在不同%d中的六个数字。然而,当我在gdb中键入print0x3409时,我得到了13321,这是0x3409的十进制数,而不是实际存储在内存中的值。

  4. MIPS-如果$a0大于或等于1,我如何分支和链接?

    我的程序有一个递归函数,它以整数作为输入,并打印n,n-1…n下面是递归函数:`RDemo:`问题是我需要它停在1,而不是0。例如,如果输入为3,则应输出而不是我使用bgezal指令,因为它最接近我需要的。据我所知,只有两个MIPS分支和链接指令。begzal和bltzal有没有一种方法可以在不创建任何其他子程序的情况下完成我想要的任务?

  5. 哪个单元测试框架用于Windows上的C开发?

    在WindowsXP上,使用TDM’sGCC/MinGW32进行基本开发,即使用gdb的gcc4.4.x.哪个单元测试框架用于测试驱动开发?

  6. Emacs / GDB:始终使用gdb-many-windows在特定窗口中显示源代码

    我在Emacs24中使用GDB,gdb-many-windows设置为t,通常在自己的框架中.我喜欢有一个单独的编辑框架.它看起来像这样(为我粗略的ASCII图表道歉):除了一个大问题外,这种方法效果很好.每当gdb需要显示不同的源缓冲区时,例如,在上/下/步之后,它并不总是在“源”窗口中显示它.例如,如果我在不同帧的窗口中打开相同的缓冲区,它将提升该帧,同时将键盘焦点保持在gdb帧中.当帧相互覆

  7. windows – 如何在gdb启动时加载.gdbinit?

    退出gdb并再次启动它,我添加的安全路径消失了.我的.gdbinit包含我一直希望在启动时加载的设置.加载.gdbinit可能与环境无关,但在Windows下执行此操作最简单的方法是什么?

  8. ubuntu – 如何重定向已经运行的进程的stdout / stderr?

    (在Ubuntu10.0464位服务器上运行)昨天,我犯了一个错误,就是在不使用屏幕的情况下通过SSH启动一个进程(我没有意识到要花几天时间才能运行).我今天花了一整天的时间试图找出一些方法,我可以从SSH的铁把手中撬开这个过程的输出,这样我就可以重新启动我的客户端机器,但是我没有到达任何地方.我尝试使用gdb并遵循thispage底部的说明,但是当我运行第一个gdb命令来创建文件时,我收到一条错

  9. 在64位计算机上使用带有32位二进制文​​件的gdb和gdbserver,Centos 5抱怨内存访问或格式错误的数据

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. CentOs下安装gcc/g++/gdb

    使用:whichgdb查看是否安装成功方法二:自己在网上下载相应的安装包,然后解压安装编译。

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部