【问题标题】:Retrieve arguments using RtlVirtualUnwind api使用 RtlVirtualUnwind api 检索参数
【发布时间】:2013-09-17 11:09:33
【问题描述】:

是否可以使用 RTLVirtualUnwind windows API 检索调用堆栈中所有帧的函数参数?

平台::win64

参数在 RCX、RDX、R8、R9 中传递,它们是易失性寄存器...在函数调用之间,这些寄存器中的值被破坏...因此这些值存储在相对于 Rbp 或 Rsp 的某个位置...。

如何检索这些参数

【问题讨论】:

    标签: c windows arguments stack frame


    【解决方案1】:

    【讨论】:

    • 那么 stackwalk API 怎么能检索到参数呢?
    • 你指的是哪个 API?对于将参数溢出到堆栈中的函数,可以进行参数检索。但不是每个函数都能做到。
    • 我不确定你的问题是什么。如果您有 API 来检索参数,那么回答“如何检索这些参数”将是“使用该 API”。
    • 嗨,Alex,stackwalk API 检索前 4 个参数..它是一个 dbghelp api...所有 dbghelp 函数都不是线程安全的...我想编写一个线程安全例程...RTLVirtualUnwind 将给我 Rsp 和 Rbp 相关信息...使用这些寄存器我想获取推送到堆栈上的参数...当我查看内存时,我看到参数不在相对于这些 Rsp 或 Rbp 的特定地址。 .似乎涉及某种填充....我想知道是否有确定的方法可以使用 Rsp 或 Rbp 导出参数
    • 您阅读我的链接了吗?在 Win64 中没有 100% 的方法来检索任意函数的参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多