_PrepareMenuWindow() 子例程的逆向

发布于 2024-11-25 14:58:05 字数 11589 浏览 1 评论 0原文

有人可以帮我逆向 _PrepareMenuWindow() 子例程吗? 我正在尝试找到该方法的签名。

__text:000639A7 _PrepareMenuWindow proc near            ; CODE XREF: DrawTheMenu(MenuSelectData *,__CFArray **,uchar,uchar *)+274p
__text:000639A7                                         ; PopUpMenuSelectCore(MenuData *,Point,double,Point,ushort,uint,Rect  const*,ushort,ulong,Rect  const*,Rect  const*,__CFString  const*,OpaqueMenuRef **,ushort *)+528p
__text:000639A7
__text:000639A7 var_44          = dword ptr -44h
__text:000639A7 var_40          = dword ptr -40h
__text:000639A7 var_3C          = dword ptr -3Ch
__text:000639A7 var_34          = dword ptr -34h
__text:000639A7 var_30          = dword ptr -30h
__text:000639A7 var_2C          = dword ptr -2Ch
__text:000639A7 var_28          = dword ptr -28h
__text:000639A7 var_24          = word ptr -24h
__text:000639A7 var_20          = dword ptr -20h
__text:000639A7 var_1A          = word ptr -1Ah
__text:000639A7 arg_0           = dword ptr  8
__text:000639A7 arg_4           = dword ptr  0Ch
__text:000639A7 arg_8           = dword ptr  10h
__text:000639A7
__text:000639A7                 push    ebp
__text:000639A8                 mov     ebp, esp
__text:000639AA                 push    edi
__text:000639AB                 push    esi
__text:000639AC                 push    ebx
__text:000639AD                 sub     esp, 5Ch
__text:000639B0                 xor     edi, edi
__text:000639B2                 mov     eax, [ebp+arg_0]
__text:000639B5                 test    eax, eax
__text:000639B7                 jz      short loc_639C6
__text:000639B9                 mov     eax, [ebp+arg_0]
__text:000639BC                 mov     [esp], eax
__text:000639BF                 call    __ZNK8HIObject13GetEncodedRefEv ; HIObject::GetEncodedRef(void)
__text:000639C4                 mov     edi, eax
__text:000639C6
__text:000639C6 loc_639C6:                              ; CODE XREF: _PrepareMenuWindow+10j
__text:000639C6                 mov     ecx, [ebp+arg_4]
__text:000639C9                 mov     eax, [ecx]
__text:000639CB                 mov     edx, [ecx+4]
__text:000639CE                 mov     [ebp+var_2C], eax
__text:000639D1                 mov     [ebp+var_28], edx
__text:000639D4                 lea     eax, [ebp+var_1A]
__text:000639D7                 mov     [ebp+var_40], eax
__text:000639DA                 mov     [esp+4], eax
__text:000639DE                 mov     [esp], edi
__text:000639E1                 call    _GetMenuType
__text:000639E6                 mov     dword ptr [esp+4], 0
__text:000639EE                 mov     [esp], edi
__text:000639F1                 call    _IsMenuItemEnabled
__text:000639F6                 movzx   edx, [ebp+var_1A]
__text:000639FA                 or      dh, 1
__text:000639FD                 test    al, al
__text:000639FF                 movzx   ebx, [ebp+var_1A]
__text:00063A03                 cmovz   ebx, edx
__text:00063A06                 mov     [ebp+var_1A], bx
__text:00063A0A                 mov     eax, [ebp+arg_8]
__text:00063A0D                 mov     [esp+0Ch], eax
__text:00063A11                 lea     ecx, [ebp+var_2C]
__text:00063A14                 mov     [ebp+var_44], ecx
__text:00063A17                 mov     [esp+8], ecx
__text:00063A1B                 mov     eax, [ebp+arg_4]
__text:00063A1E                 mov     [esp+4], eax
__text:00063A22                 mov     [esp], edi
__text:00063A25                 call    __AddOpenMenu
__text:00063A2A                 mov     ecx, [ebp+var_44]
__text:00063A2D                 mov     [esp], ecx
__text:00063A30                 call    _EmptyRect
__text:00063A35                 test    al, al
__text:00063A37                 jnz     loc_63B94
__text:00063A3D                 mov     [esp], edi
__text:00063A40                 call    __Z11GetMenuDataP13OpaqueMenuRef ; GetMenuData(OpaqueMenuRef *)
__text:00063A45                 mov     [ebp+var_3C], eax
__text:00063A48                 call    _NewRgn
__text:00063A4D                 mov     esi, eax
__text:00063A4F                 test    eax, eax
__text:00063A51                 jz      loc_63BDD
__text:00063A57                 movzx   ebx, bx
__text:00063A5A                 mov     eax, [ebp+var_3C]
__text:00063A5D                 mov     eax, [eax+40h]
__text:00063A60                 test    eax, eax
__text:00063A62                 jnz     loc_63B23
__text:00063A68                 mov     [ebp+var_1A], 0
__text:00063A6E                 mov     eax, [ebp+var_2C]
__text:00063A71                 mov     edx, [ebp+var_28]
__text:00063A74                 mov     [ebp+var_34], eax
__text:00063A77                 mov     [ebp+var_30], edx
__text:00063A7A                 mov     ecx, [ebp+var_40]
__text:00063A7D                 mov     [esp+10h], ecx
__text:00063A81                 mov     dword ptr [esp+0Ch], 0
__text:00063A89                 lea     eax, [ebp+var_34]
__text:00063A8C                 mov     [esp+8], eax
__text:00063A90                 mov     dword ptr [esp+4], 7
__text:00063A98                 mov     eax, [ebp+var_3C]
__text:00063A9B                 mov     [esp], eax
__text:00063A9E                 call    __Z12_CallMenuDefP8MenuDatasP4Rect5PointPs ; _CallMenuDef(MenuData *,short,Rect *,Point,short *)
__text:00063AA3                 cmp     [ebp+var_1A], 7473h
__text:00063AA9                 jz      short loc_63ADC
__text:00063AAB                 add     word ptr [ebp+var_2C], 3
__text:00063AB0                 mov     dword ptr [esp+8], 0FFFFFFFCh
__text:00063AB8                 mov     dword ptr [esp+4], 0FFFFFFFCh
__text:00063AC0                 mov     ecx, [ebp+var_44]
__text:00063AC3                 mov     [esp], ecx
__text:00063AC6                 call    _InsetRect
__text:00063ACB                 mov     eax, [ebp+var_44]
__text:00063ACE                 mov     [esp+4], eax
__text:00063AD2                 mov     [esp], esi
__text:00063AD5                 call    _RectRgn
__text:00063ADA                 jmp     short loc_63B23
__text:00063ADC ; ---------------------------------------------------------------------------
__text:00063ADC
__text:00063ADC loc_63ADC:                              ; CODE XREF: _PrepareMenuWindow+102j
__text:00063ADC                 lea     eax, [ebp+var_24]
__text:00063ADF                 mov     [esp+8], eax
__text:00063AE3                 lea     eax, [ebp+var_20]
__text:00063AE6                 mov     [esp+4], eax
__text:00063AEA                 mov     [esp], edi
__text:00063AED                 call    __GetMenuCallout
__text:00063AF2                 movsx   eax, [ebp+var_24]
__text:00063AF6                 mov     [esp+10h], eax
__text:00063AFA                 mov     eax, [ebp+var_20]
__text:00063AFD                 mov     [esp+0Ch], eax
__text:00063B01                 mov     [esp+8], esi
__text:00063B05                 mov     [esp+4], ebx
__text:00063B09                 mov     ecx, [ebp+var_44]
__text:00063B0C                 mov     [esp], ecx
__text:00063B0F                 call    __GetThemeMenuBackgroundRegionWithCallout
__text:00063B14                 mov     eax, [ebp+var_44]
__text:00063B17                 mov     [esp+4], eax
__text:00063B1B                 mov     [esp], esi
__text:00063B1E                 call    _GetRegionBounds
__text:00063B23
__text:00063B23 loc_63B23:                              ; CODE XREF: _PrepareMenuWindow+BBj
__text:00063B23                                         ; _PrepareMenuWindow+133j
__text:00063B23                 mov     [esp+0Ch], esi
__text:00063B27                 mov     ecx, [ebp+var_44]
__text:00063B2A                 mov     [esp+8], ecx
__text:00063B2E                 mov     [esp+4], ebx
__text:00063B32                 mov     [esp], edi
__text:00063B35                 call    __ZL13GetMenuWindowP13OpaqueMenuReftPK4RectP15OpaqueRgnHandle ; GetMenuWindow(OpaqueMenuRef *,ushort,Rect  const*,OpaqueRgnHandle *)
__text:00063B3A                 test    eax, eax
__text:00063B3C                 jz      short loc_63BA1
__text:00063B3E                 mov     [esp], eax
__text:00063B41                 call    _GetWindowPort
__text:00063B46                 mov     [esp], eax
__text:00063B49                 call    _SetPortWrapper
__text:00063B4E                 mov     [esp], esi
__text:00063B51                 call    _SetClipWrapper
__text:00063B56                 mov     [esp], esi
__text:00063B59                 call    _DisposeRgn
__text:00063B5E                 mov     eax, [ebp+var_3C]
__text:00063B61                 mov     eax, [eax+40h]
__text:00063B64                 test    eax, eax
__text:00063B66                 jnz     short loc_63BDD
__text:00063B68                 mov     dword ptr [esp+14h], 0
__text:00063B70                 mov     dword ptr [esp+10h], 0
__text:00063B78                 mov     [esp+0Ch], ebx
__text:00063B7C                 mov     ecx, [ebp+arg_4]
__text:00063B7F                 mov     [esp+8], ecx
__text:00063B83                 mov     eax, [ebp+var_44]
__text:00063B86                 mov     [esp+4], eax
__text:00063B8A                 mov     [esp], edi
__text:00063B8D                 call    __Z18DrawMenuBackgroundP13OpaqueMenuRefRK4RectS3_thPv ; DrawMenuBackground(OpaqueMenuRef *,Rect  const&,Rect  const&,ushort,uchar,void *)
__text:00063B92                 jmp     short loc_63BDD
__text:00063B94 ; ---------------------------------------------------------------------------
__text:00063B94
__text:00063B94 loc_63B94:                              ; CODE XREF: _PrepareMenuWindow+90j
__text:00063B94                 mov     ecx, [ebp+arg_0]
__text:00063B97                 mov     [esp], ecx
__text:00063B9A                 call    _DisposeMenuWindow
__text:00063B9F                 jmp     short loc_63BDD
__text:00063BA1 ; ---------------------------------------------------------------------------
__text:00063BA1
__text:00063BA1 loc_63BA1:                              ; CODE XREF: _PrepareMenuWindow+195j
__text:00063BA1                 mov     eax, [ebp+arg_0]
__text:00063BA4                 mov     [esp], eax
__text:00063BA7                 call    __Z11FindMBEntryP8MenuData ; FindMBEntry(MenuData *)
__text:00063BAC                 mov     ecx, eax
__text:00063BAE                 test    eax, eax
__text:00063BB0                 jz      short loc_63BD5
__text:00063BB2                 mov     word ptr [eax+1Eh], 0
__text:00063BB8                 mov     word ptr [eax+1Ch], 0
__text:00063BBE                 mov     word ptr [eax+1Ah], 0
__text:00063BC4                 mov     word ptr [eax+18h], 0
__text:00063BCA                 mov     eax, [eax+18h]
__text:00063BCD                 mov     edx, [ecx+1Ch]
__text:00063BD0                 mov     [ecx], eax
__text:00063BD2                 mov     [ecx+4], edx
__text:00063BD5
__text:00063BD5 loc_63BD5:                              ; CODE XREF: _PrepareMenuWindow+209j
__text:00063BD5                 mov     [esp], esi
__text:00063BD8                 call    _DisposeRgn
__text:00063BDD
__text:00063BDD loc_63BDD:                              ; CODE XREF: _PrepareMenuWindow+AAj
__text:00063BDD                                         ; _PrepareMenuWindow+1BFj ...
__text:00063BDD                 xor     eax, eax
__text:00063BDF                 add     esp, 5Ch
__text:00063BE2                 pop     ebx
__text:00063BE3                 pop     esi
__text:00063BE4                 pop     edi
__text:00063BE5                 leave
__text:00063BE6                 retn
__text:00063BE6 _PrepareMenuWindow endp

Can some one help me with reversing of _PrepareMenuWindow() subroutine?
I am trying to find the signature of the method.

__text:000639A7 _PrepareMenuWindow proc near            ; CODE XREF: DrawTheMenu(MenuSelectData *,__CFArray **,uchar,uchar *)+274p
__text:000639A7                                         ; PopUpMenuSelectCore(MenuData *,Point,double,Point,ushort,uint,Rect  const*,ushort,ulong,Rect  const*,Rect  const*,__CFString  const*,OpaqueMenuRef **,ushort *)+528p
__text:000639A7
__text:000639A7 var_44          = dword ptr -44h
__text:000639A7 var_40          = dword ptr -40h
__text:000639A7 var_3C          = dword ptr -3Ch
__text:000639A7 var_34          = dword ptr -34h
__text:000639A7 var_30          = dword ptr -30h
__text:000639A7 var_2C          = dword ptr -2Ch
__text:000639A7 var_28          = dword ptr -28h
__text:000639A7 var_24          = word ptr -24h
__text:000639A7 var_20          = dword ptr -20h
__text:000639A7 var_1A          = word ptr -1Ah
__text:000639A7 arg_0           = dword ptr  8
__text:000639A7 arg_4           = dword ptr  0Ch
__text:000639A7 arg_8           = dword ptr  10h
__text:000639A7
__text:000639A7                 push    ebp
__text:000639A8                 mov     ebp, esp
__text:000639AA                 push    edi
__text:000639AB                 push    esi
__text:000639AC                 push    ebx
__text:000639AD                 sub     esp, 5Ch
__text:000639B0                 xor     edi, edi
__text:000639B2                 mov     eax, [ebp+arg_0]
__text:000639B5                 test    eax, eax
__text:000639B7                 jz      short loc_639C6
__text:000639B9                 mov     eax, [ebp+arg_0]
__text:000639BC                 mov     [esp], eax
__text:000639BF                 call    __ZNK8HIObject13GetEncodedRefEv ; HIObject::GetEncodedRef(void)
__text:000639C4                 mov     edi, eax
__text:000639C6
__text:000639C6 loc_639C6:                              ; CODE XREF: _PrepareMenuWindow+10j
__text:000639C6                 mov     ecx, [ebp+arg_4]
__text:000639C9                 mov     eax, [ecx]
__text:000639CB                 mov     edx, [ecx+4]
__text:000639CE                 mov     [ebp+var_2C], eax
__text:000639D1                 mov     [ebp+var_28], edx
__text:000639D4                 lea     eax, [ebp+var_1A]
__text:000639D7                 mov     [ebp+var_40], eax
__text:000639DA                 mov     [esp+4], eax
__text:000639DE                 mov     [esp], edi
__text:000639E1                 call    _GetMenuType
__text:000639E6                 mov     dword ptr [esp+4], 0
__text:000639EE                 mov     [esp], edi
__text:000639F1                 call    _IsMenuItemEnabled
__text:000639F6                 movzx   edx, [ebp+var_1A]
__text:000639FA                 or      dh, 1
__text:000639FD                 test    al, al
__text:000639FF                 movzx   ebx, [ebp+var_1A]
__text:00063A03                 cmovz   ebx, edx
__text:00063A06                 mov     [ebp+var_1A], bx
__text:00063A0A                 mov     eax, [ebp+arg_8]
__text:00063A0D                 mov     [esp+0Ch], eax
__text:00063A11                 lea     ecx, [ebp+var_2C]
__text:00063A14                 mov     [ebp+var_44], ecx
__text:00063A17                 mov     [esp+8], ecx
__text:00063A1B                 mov     eax, [ebp+arg_4]
__text:00063A1E                 mov     [esp+4], eax
__text:00063A22                 mov     [esp], edi
__text:00063A25                 call    __AddOpenMenu
__text:00063A2A                 mov     ecx, [ebp+var_44]
__text:00063A2D                 mov     [esp], ecx
__text:00063A30                 call    _EmptyRect
__text:00063A35                 test    al, al
__text:00063A37                 jnz     loc_63B94
__text:00063A3D                 mov     [esp], edi
__text:00063A40                 call    __Z11GetMenuDataP13OpaqueMenuRef ; GetMenuData(OpaqueMenuRef *)
__text:00063A45                 mov     [ebp+var_3C], eax
__text:00063A48                 call    _NewRgn
__text:00063A4D                 mov     esi, eax
__text:00063A4F                 test    eax, eax
__text:00063A51                 jz      loc_63BDD
__text:00063A57                 movzx   ebx, bx
__text:00063A5A                 mov     eax, [ebp+var_3C]
__text:00063A5D                 mov     eax, [eax+40h]
__text:00063A60                 test    eax, eax
__text:00063A62                 jnz     loc_63B23
__text:00063A68                 mov     [ebp+var_1A], 0
__text:00063A6E                 mov     eax, [ebp+var_2C]
__text:00063A71                 mov     edx, [ebp+var_28]
__text:00063A74                 mov     [ebp+var_34], eax
__text:00063A77                 mov     [ebp+var_30], edx
__text:00063A7A                 mov     ecx, [ebp+var_40]
__text:00063A7D                 mov     [esp+10h], ecx
__text:00063A81                 mov     dword ptr [esp+0Ch], 0
__text:00063A89                 lea     eax, [ebp+var_34]
__text:00063A8C                 mov     [esp+8], eax
__text:00063A90                 mov     dword ptr [esp+4], 7
__text:00063A98                 mov     eax, [ebp+var_3C]
__text:00063A9B                 mov     [esp], eax
__text:00063A9E                 call    __Z12_CallMenuDefP8MenuDatasP4Rect5PointPs ; _CallMenuDef(MenuData *,short,Rect *,Point,short *)
__text:00063AA3                 cmp     [ebp+var_1A], 7473h
__text:00063AA9                 jz      short loc_63ADC
__text:00063AAB                 add     word ptr [ebp+var_2C], 3
__text:00063AB0                 mov     dword ptr [esp+8], 0FFFFFFFCh
__text:00063AB8                 mov     dword ptr [esp+4], 0FFFFFFFCh
__text:00063AC0                 mov     ecx, [ebp+var_44]
__text:00063AC3                 mov     [esp], ecx
__text:00063AC6                 call    _InsetRect
__text:00063ACB                 mov     eax, [ebp+var_44]
__text:00063ACE                 mov     [esp+4], eax
__text:00063AD2                 mov     [esp], esi
__text:00063AD5                 call    _RectRgn
__text:00063ADA                 jmp     short loc_63B23
__text:00063ADC ; ---------------------------------------------------------------------------
__text:00063ADC
__text:00063ADC loc_63ADC:                              ; CODE XREF: _PrepareMenuWindow+102j
__text:00063ADC                 lea     eax, [ebp+var_24]
__text:00063ADF                 mov     [esp+8], eax
__text:00063AE3                 lea     eax, [ebp+var_20]
__text:00063AE6                 mov     [esp+4], eax
__text:00063AEA                 mov     [esp], edi
__text:00063AED                 call    __GetMenuCallout
__text:00063AF2                 movsx   eax, [ebp+var_24]
__text:00063AF6                 mov     [esp+10h], eax
__text:00063AFA                 mov     eax, [ebp+var_20]
__text:00063AFD                 mov     [esp+0Ch], eax
__text:00063B01                 mov     [esp+8], esi
__text:00063B05                 mov     [esp+4], ebx
__text:00063B09                 mov     ecx, [ebp+var_44]
__text:00063B0C                 mov     [esp], ecx
__text:00063B0F                 call    __GetThemeMenuBackgroundRegionWithCallout
__text:00063B14                 mov     eax, [ebp+var_44]
__text:00063B17                 mov     [esp+4], eax
__text:00063B1B                 mov     [esp], esi
__text:00063B1E                 call    _GetRegionBounds
__text:00063B23
__text:00063B23 loc_63B23:                              ; CODE XREF: _PrepareMenuWindow+BBj
__text:00063B23                                         ; _PrepareMenuWindow+133j
__text:00063B23                 mov     [esp+0Ch], esi
__text:00063B27                 mov     ecx, [ebp+var_44]
__text:00063B2A                 mov     [esp+8], ecx
__text:00063B2E                 mov     [esp+4], ebx
__text:00063B32                 mov     [esp], edi
__text:00063B35                 call    __ZL13GetMenuWindowP13OpaqueMenuReftPK4RectP15OpaqueRgnHandle ; GetMenuWindow(OpaqueMenuRef *,ushort,Rect  const*,OpaqueRgnHandle *)
__text:00063B3A                 test    eax, eax
__text:00063B3C                 jz      short loc_63BA1
__text:00063B3E                 mov     [esp], eax
__text:00063B41                 call    _GetWindowPort
__text:00063B46                 mov     [esp], eax
__text:00063B49                 call    _SetPortWrapper
__text:00063B4E                 mov     [esp], esi
__text:00063B51                 call    _SetClipWrapper
__text:00063B56                 mov     [esp], esi
__text:00063B59                 call    _DisposeRgn
__text:00063B5E                 mov     eax, [ebp+var_3C]
__text:00063B61                 mov     eax, [eax+40h]
__text:00063B64                 test    eax, eax
__text:00063B66                 jnz     short loc_63BDD
__text:00063B68                 mov     dword ptr [esp+14h], 0
__text:00063B70                 mov     dword ptr [esp+10h], 0
__text:00063B78                 mov     [esp+0Ch], ebx
__text:00063B7C                 mov     ecx, [ebp+arg_4]
__text:00063B7F                 mov     [esp+8], ecx
__text:00063B83                 mov     eax, [ebp+var_44]
__text:00063B86                 mov     [esp+4], eax
__text:00063B8A                 mov     [esp], edi
__text:00063B8D                 call    __Z18DrawMenuBackgroundP13OpaqueMenuRefRK4RectS3_thPv ; DrawMenuBackground(OpaqueMenuRef *,Rect  const&,Rect  const&,ushort,uchar,void *)
__text:00063B92                 jmp     short loc_63BDD
__text:00063B94 ; ---------------------------------------------------------------------------
__text:00063B94
__text:00063B94 loc_63B94:                              ; CODE XREF: _PrepareMenuWindow+90j
__text:00063B94                 mov     ecx, [ebp+arg_0]
__text:00063B97                 mov     [esp], ecx
__text:00063B9A                 call    _DisposeMenuWindow
__text:00063B9F                 jmp     short loc_63BDD
__text:00063BA1 ; ---------------------------------------------------------------------------
__text:00063BA1
__text:00063BA1 loc_63BA1:                              ; CODE XREF: _PrepareMenuWindow+195j
__text:00063BA1                 mov     eax, [ebp+arg_0]
__text:00063BA4                 mov     [esp], eax
__text:00063BA7                 call    __Z11FindMBEntryP8MenuData ; FindMBEntry(MenuData *)
__text:00063BAC                 mov     ecx, eax
__text:00063BAE                 test    eax, eax
__text:00063BB0                 jz      short loc_63BD5
__text:00063BB2                 mov     word ptr [eax+1Eh], 0
__text:00063BB8                 mov     word ptr [eax+1Ch], 0
__text:00063BBE                 mov     word ptr [eax+1Ah], 0
__text:00063BC4                 mov     word ptr [eax+18h], 0
__text:00063BCA                 mov     eax, [eax+18h]
__text:00063BCD                 mov     edx, [ecx+1Ch]
__text:00063BD0                 mov     [ecx], eax
__text:00063BD2                 mov     [ecx+4], edx
__text:00063BD5
__text:00063BD5 loc_63BD5:                              ; CODE XREF: _PrepareMenuWindow+209j
__text:00063BD5                 mov     [esp], esi
__text:00063BD8                 call    _DisposeRgn
__text:00063BDD
__text:00063BDD loc_63BDD:                              ; CODE XREF: _PrepareMenuWindow+AAj
__text:00063BDD                                         ; _PrepareMenuWindow+1BFj ...
__text:00063BDD                 xor     eax, eax
__text:00063BDF                 add     esp, 5Ch
__text:00063BE2                 pop     ebx
__text:00063BE3                 pop     esi
__text:00063BE4                 pop     edi
__text:00063BE5                 leave
__text:00063BE6                 retn
__text:00063BE6 _PrepareMenuWindow endp

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陪我终i 2024-12-02 14:58:05

到目前为止,您有哪些不是由 IDA 生成的? (即:您对函数的分析)。

从它的外观来看,它是一个总是返回 NULL/false/0 的 __cdecl 函数。它似乎还需要 3 个参数(可以通过查看调用者的清理情况来确认,如果有的话)。

arg 0 是一个 MenuData*,arg 4 似乎是一个 Rect&(实际上只是 Rect*),arg 8 可以是任何东西type __AddOpenMenu 作为第四个参数。

所以我假设类似于 typedef BOOL(__cdecl*)(MenuData*,Rect&,void*)

What have you got so far that isn't generated by IDA? (ie: your analysis of the function).

From the looks of it its a __cdecl function that always returns NULL/false/0. It also seems to take 3 arguments(which can be confirmed by looking at what cleanup is by the caller, if there is any).

Arg 0 is a MenuData*, arg 4 seems to be a Rect&(which is secretly just Rect*), arg 8 would be whatever type __AddOpenMenu takes as its fourth argument.

So i'd assume something along the lines of typedef BOOL(__cdecl*)(MenuData*,Rect&,void*)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文