【问题标题】:VS2010 thread data stackVS2010线程数据栈
【发布时间】:2010-06-20 22:12:59
【问题描述】:

我刚刚发现了如何闯入 Windows dll (user32.dll) 中的 SetTimer 函数。 link text

但是我需要知道它用什么参数调用。我认为在调用函数之前将参数推送到数据堆栈中,但我发现无法在 Visual Studio 2010 中显示线程数据堆栈。

【问题讨论】:

标签: debugging winapi visual-studio-2010 pe-exports


【解决方案1】:

打开内存调试窗口,并在 ESP 处加载地址(您可以从寄存器窗口中获取)。 ESP 指向栈顶。如果您稍微向上滚动窗口,您会看到最近被压入堆栈的内容。确保将内存窗口设置为显示一列 4 字节整数(除非您是 64 位应用程序,否则使用 8 字节)。

【讨论】:

    【解决方案2】:

    如果你打开调用堆栈窗口(调试 -> 窗口 -> 调用堆栈),你应该能够双击调用堆栈上的函数,查看参数、局部变量等。

    【讨论】:

    • 这仅适用于您有符号的函数。他正在调试SetTimer,这是一个win32函数,所以他只有公共符号。要获取参数,您必须具有完整的调试符号。
    • 你可以在这里找到符号(我想):microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx
    • @jeffamaphone : 如果他只想看到传入的参数 into SetTimer,那么你可以只查找调用堆栈以查看调用了 SetTimer:假设你有源代码/符号(我假设他有)那么它应该没问题。
    • 其实我觉得他在调试随机的第三方东西。
    • @user346804:啊,很公平。在这种情况下,@jeffamaphone 的答案就是你所追求的 :)
    猜你喜欢
    • 2023-04-08
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多