UltraDebug

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: A C D R G Y M Z X S P
公益项目,接受捐赠
查看: 1280|回复: 0
收起左侧

[原创] 调试您的第一个x86程序

[复制链接]
ultradebug

主题

0

回帖

UD

管理员

UID
1
积分
2339
注册时间
2021-12-20
最后登录
1970-1-1
2022-5-20 20:07:01 | 显示全部楼层 |阅读模式

调试已编译的程序是学习x86汇编语言。使用汇编程序时,单步执行代码中编写的每一条指令的唯一方法是使用调试器来调试程序。

GDB是用于调试基于Linux的可执行程序的最流行的调试器之一。GDB也广泛用于开发和逆向工程。本文着重于理解如何使用GDB来单步执行给定x86汇编程序的指令。

目标可执行文件

在本文的后面部分,将向读者介绍如何使用GDB。因此,我们将准备一个用x86汇编编写的简单二进制文件,这样我们就可以使用GDB来理解如何使用GDB来调试二进制文件。以下是我们将使用的程序。

global _start
_start:
mov eax, 8
mov eax, 0xa
mov ebx, eax
mov ecx, [esp]

我们创建了一个名为mov.nasm 的文件,它以一个名为global的指令开头,它告诉我们的链接器该程序的入口点在哪里。 我们指定这个程序的入口点是_start。 第一条指令 MOV EAX,8 将值 8移动到寄存器 EAX 中。

在下一条指令中,我们将 0xa 移动到 EAX寄存器中。 我们告诉程序我们正在移动一个十进制 10的十六进制值。接下来,使用MOV EBX, EAX指令,我们试图将一个寄存器的值移动到另一个寄存器中。 最后,MOV ECX, [ESP] 指令实质上将移动寄存器 ESP 所指向的值。

因此,如果我们指定指令 MOV ECX, [ESP],它将尝试选择 ESP 的地址,并将该 ESP 寄存器指向的值移动到 ECX中。

现在让我们使用 nasm 来组装这个程序。 让我们输入以下命令。

nasm mov.nasm -o mov.o -f elf32

格式为 elf32,输出文件为 mov.o。 现在让我们使用 ld 链接它。 这可以使用以下命令来完成。

ld mov.o -o mov -m elf_i386

mov 将成为最终的二进制文件。 我们将对此进行调试。

使用 GDB 和 GEF 进行调试

为了能够检查寄存器和被移动到寄存器中的值,让我们使用 gdb 使用以下命令打开这个程序。

gdb ./mov

它看起来如下:

$ gdb ./mov
GNU gdb (Ubuntu 9.1-0ubuntu1) 9.1

Copyright (C) 2020 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Type “show copying” and “show warranty” for details.

This GDB was configured as “x86_64-linux-gnu”.

Type “show configuration” for configuration details.

For bug reporting instructions, please see:

<http://www.gnu.org/software/gdb/bugs/>.

Find the GDB manual and oth
还有更多的精彩内容,作者设置为付费后可见
UltraDebug免责声明
✅以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
✅The above content is forwarded or original by netizens. If there is infringement, please send the email to the destination 9003554@qq.com handle.
回复 打印

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|站点地图|UltraDebug ( 滇ICP备2022002049号-2 滇公网安备 53032102000034号)

GMT+8, 2025-6-18 07:55 , Processed in 0.034885 second(s), 8 queries , Redis On.

Powered by Discuz X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表