【问题标题】:IDA Pro variable declarationIDA Pro 变量声明
【发布时间】:2012-09-28 04:10:48
【问题描述】:

我是 x86 汇编和逆向工程的新手,我对通过 IDA 获得的这段代码有疑问:

; LRESULT __stdcall WndProc(HWND, UINT, WPARAM, LPARAM, UINT_PTR, DWORD_PTR)
WndProc proc near

Rect= tagRECT ptr -34h
var_24= dword ptr -24h
var_20= dword ptr -20h
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
prc= RECT ptr -14h
var_4= dword ptr -4
hWnd= dword ptr  8
uMsg= dword ptr  0Ch
wParam= dword ptr  10h
lParam= dword ptr  14h

我是否纠正了 var_18、var_1C 和 var_20 实际上指向 prc.top、prc.right 和 prc.bottom?

【问题讨论】:

    标签: assembly reverse-engineering ida


    【解决方案1】:

    没有;如果prcRECT 实例,则它占用以下 16 个字节的内存(因此偏移量-14 到-5 包括在内,四个32 位字)。

    【讨论】:

    • 啊,我明白了。 var_24 实际上是 RECT 类型。在代码中再进一步一点,调用 GetWindowRect 和 var_24 作为 RECT 来填充尺寸。那么,var_18、var_1C 和 var_20 分别指向了 var_24 的 top、right 和 bottom 成员吗?
    • @Jelle:双击var_24的声明打开堆栈框架视图,按Alt-Q,从结构列表中选择RECT。它会将这四个变量变成一个具有正确类型的变量,就像prc
    猜你喜欢
    • 2014-03-29
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多