在 IDA 中使用 __fastcall 显示存储在堆栈中的参数

逆向工程 艾达 拆卸 反编译 调用约定
2021-07-08 05:45:57

这是我之前问题的延伸这是使用 COM 虚拟函数和__fastcall约定的x64 Windows 可执行文件中的程序集示例

mov     [rsp+32], rdx                       ; 5th param
lea     r9, var                             ; 4th param
xor     r8d, r8d                            ; 3rd param
mov     rdx, r14                            ; 2nd param
mov     rcx, r15                            ; 1st param
mov     rax, [rax+24]                       ; 4th function pointer
call    cs:__guard_dispatch_icall_fptr      ; call dynamic dispatch

在伪代码中,IDA 仅显示 4 个参数,第 5 个参数消失。
IDA 显示如下:(ppv + 24)(a, b, c, d);
但真正的函数定义将是这样的:(ppv + 24)(a, b, c, d, e);

  • 我尝试过的: 1. 使用 Ctrl+F9 组合键在 vtable 中添加具有正确函数定义和正确位置的头文件,2. 将编译器调用约定更改为__fastcall选项 > 编译器菜单中,3 Y.使用更改函数定义

  • 问题:如何允许在使用 IDA(或任何扩展)的函数中显示所有堆栈参数?

0个回答
没有发现任何回复~