ESP 超出 IDA 中的“堆栈视图”范围

逆向工程 艾达 调试
2021-06-17 23:11:55

这里提出一个非常相似(或确切)的问题,尽管没有正确回答。

在此处输入图片说明

我正在 IDA 中调试进程并且无法查看堆栈的动态内容,因为它的值超出了 IDA 中显示的地址Stack view我的 ESP 显示为0xFFFFD95C在进入时指向main,而 IDA 显示的最大地址是0xFEFFFFFC

有没有办法将这个内存范围扩展到内存的末尾(即0xFFFFFFFF)?

对于那些感兴趣的人来说,正在测试的二进制文件是ringzer0team.com 上ELF Crack Me 1 - Time to learn x86 ASM & gdb挑战

1个回答

您似乎正在使用 GDB 调试器后端。它没有向 IDA 提供有关可用内存范围的足够信息,您通常会在启动时收到警告:

---------------------------
Information
---------------------------
The current debugger backend (gdb) does not provide memory information to IDA.
Therefore the memory contents may be invisible by default.
Please use the Debugger/Manual memory regions menu item to configure the memory layout.
It is possible to define just one big region for the whole memory
(IDA will display question marks for missing memory regions in this case).
---------------------------
OK   
---------------------------

所以IDA默认为0-0xFF000000(0xFF000000以上的地址被IDA用于内部网络节点ID,如果在实际程序中使用可能会导致问题)。所以有两种解决方案:

  1. 编辑由 IDA 制作的内存区域(编辑手动内存区域...)并添加一个新的区域来覆盖您需要的区域(例如 0 到 0xFFFFFFF0,或一些较小的区域)。

  2. 使用 IDA 自己的 Linux 调试器代替 GDB,它可以正确查询操作系统有关可用内存区域的信息。