gpt4 book ai didi

c - 遵循结构指针

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:37 25 4
gpt4 key购买 nike

我正在学习倒车。我已将 OllyDbg 附加到一个使用 WSASendTo(来自 WS2_32.dll)的程序,并在调用 WSASendTo 时中断。调用时,堆栈如下所示:

stack layout

根据 MSDN,第二个参数是指向“WSABUF 结构数组”的指针,如下所示:

pointer to WSABUF struct

所以我的问题是:如何根据内存中的指针查看内存中的数据?下面是 OllyDbg 中内存位置 0x1970F6B8 的 View (代表从堆栈引用的 WSABUF 结构),但从那以后,我不知道这个结构是如何在内存中布局以获取“char FAR *buf”指针并在内存中查找其内容。

memory layout

我读到内存中结构的布局可以依赖于编译器。如果是这样,逆向工程师(或 CPU)如何确定结构的内容实际存在于何处?

最佳答案

how do I follow the pointers in memory to see the data in memory?

认为您应该只需右键单击指针并选择“Follow in Dump”即可。然后您可以在转储中选择 4 字节布局,并通过相同的过程再次跟随 buf 指针。请注意,__WSABuf 结构中的第一个单词是长度,因此您需要第二个单词(在本例中,地址为 0x16450370)。

I've read that the layout of a struct in memory can be compiler-dependent.

是的,编译器has a certain freedom关于它如何对齐结构成员。

但是,ABI 结构的布局必须以某种方式标准化,以确保互操作性。我不知道 WinAPI 在它们的头文件中是如何做到这一点的,也许是使用某种特定于编译器的编译指示来控制对齐。或者他们可能只是假设编译器会像 MSVC 那样做。

关于c - 遵循结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23547328/

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