gpt4 book ai didi

visual-studio - 调用栈和反汇编疑惑

转载 作者:行者123 更新时间:2023-12-04 03:41:16 24 4
gpt4 key购买 nike

三疑1)假设我得到如下调用堆栈

    user32.dll!_InternalCallWinProc@20()  + 0x28 bytes  
user32.dll!_UserCallWinProcCheckWow@32() + 0xb7 bytes
user32.dll!_CallWindowProcAorW@24() + 0x51 bytes
user32.dll!_CallWindowProcW@20() + 0x1b bytes

现在每个函数末尾提到的字节是什么?就像第一个语句什么是 0x28 字节。

2) 如何在 VS 中的 Windows 系统 dll 上放置断点?在 windbg 中,我可以搜索 windows 系统 dll 的特定功能,如

>x wininet!*funcA*

用这个命令我可以得到这个函数的地址并且可以放置断点。我可以在 Visual Studio 中做同样的事情吗?

3) 我没有dll 的符号文件。我在反汇编中得到的调用堆栈是

7814XXX0  call        dword ptr [__imp__WindowsFuncA@32 (781EXXXXh)] 

上面调用栈中的__imp__是什么?这是否意味着此 Windows 函数已挂接到其他某个 dll?

最佳答案

1) 它们是在该堆栈帧中执行的指令相对于函数开始的字节偏移量。

2) 在“新建断点”对话框中输入如下内容:

{,,user32.dll}_SendMessageW@16

其中 16 是函数期望的参数字节数(在 Win32 中,这几乎总是参数数的 4 倍)。 W 指的是 API 的 Unicode 版本;如果您正在调试 ANSI 应用程序,请使用 A

3) __imp__ 引用 DLL 导入表 - 当前模块中的代码通过 JMP 重定向到真正的 Windows DLL ,而 __imp__ 符号指的是 JMP。这些 JMP 存在于进行调用的 DLL 或 EXE 中的表中。

关于visual-studio - 调用栈和反汇编疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006468/

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