gpt4 book ai didi

assembly - x86 中变量的大小

转载 作者:行者123 更新时间:2023-12-04 05:22:56 24 4
gpt4 key购买 nike

C 文件中定义的变量的大小在编译后的代码的汇编等效项中出现在哪里?

假设您的第一个代码是:

char buffer[2];
char a[3];

你的下一个代码是:

char buffer[3];
char a[2];

其中“buffer”和“a”是函数的局部变量。

在这两种情况下,当您进入函数时,esp 都会减少相同数量的字节,但是如果您无法访问源代码,那么有什么办法可以区分边界吗?你只是反汇编二进制文件?

我想知道二进制文件中是否有一段记录变量的大小。

最佳答案

据我所知,判断这种情况的唯一方法是查看堆栈的使用情况。

一旦代码被编译为汇编,类型信息并没有真正保留下来,唯一可以推断的是所使用的汇编指令的类型(无论它们是对位、字、双字等进行操作)

IDA Pro 具有反汇编为 C 的功能,通常大部分情况下都是准确的,它不会在大多数情况下减少为工作 C,但在快速分析 ASM 方面非常强大。它所做的一件事是找出数组的大小,但是很多时候它只会将它们键入为字节(或字符)数组,您可能必须分析代码以查看其使用方式。

关于assembly - x86 中变量的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15003320/

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