gpt4 book ai didi

c++ - 使用 objdump 或 gcc -c 将汇编指令转换为二进制

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:17 24 4
gpt4 key购买 nike

我在缓冲炸弹实验室工作,我被困在一件事上。我已经编写了我的漏洞利用代码来解决第 2 级(firecracker),但我不确定如何使用 gcc -c 将其转换为原始形式。我从来没有编写过可编译的汇编文件,但我自己编写了指令并跟踪了已经编写的指令。所以我知道它们是如何工作的,但我不确定如何在语法上编写代码文件本身。

以下是我要转换成原始格式的文件的当前内容:

movl $0x1a4bb386, 0x804d200
push $0x0804915f
ret

我需要添加什么才能使用 gcc -cobjdump -d 进行编译?我需要弄清楚这些指令占用了多少字节以及如何将它们插入缓冲区,以便我可以编写缓冲区溢出漏洞。

谢谢。

最佳答案

用 gcc -m32 -c code.s 编译

输出是一个文件code.o

我使用 objdump -d code.o > code.asm 来获取所需的原始程序集和字节。

输出:

code.o:     file format elf32-i386


Disassembly of section .text:

00000000 <.text>:
0: c7 05 00 d2 04 08 86 movl $0x1a4bb386,0x804d200
7: b3 4b 1a
a: 68 5f 91 04 08 push $0x804915f
f: c3 ret

我很好奇指令在 VA 0x7 处做了什么......这只是指令 movl 的其余部分吗?

关于c++ - 使用 objdump 或 gcc -c 将汇编指令转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com