以下是IDA的分析
text:77EC7812 ; int __stdcall RtlInitializeGenericTableAvl(void *Dst, int, int, int, int)
.text:77EC7812 public _RtlInitializeGenericTableAvl@20
.text:77EC7812 _RtlInitializeGenericTableAvl@20 proc near ;
.text:77EC7812
.text:77EC7812 Dst = dword ptr 8
.text:77EC7812 arg_4 = dword ptr 0Ch
.text:77EC7812 arg_8 = dword ptr 10h
.text:77EC7812 arg_C = dword ptr 14h
.text:77EC7812 arg_10 = dword ptr 18h
.text:77EC7812
.text:77EC7812 mov edi, edi
.text:77EC7814 push ebp
.text:77EC7815 mov ebp, esp
.text:77EC7817 push esi
----------------------------------------------------------
.text:77EC7818 mov esi, [ebp+Dst] ;arg_0
.text:77EC781B push 38h ; Size 56 bytes
.text:77EC781D push 0 ; Val
.text:77EC781F push esi ; Dst
.text:77EC7820 call _memset
memset(Dst,0,0x38)
------------------------------------------------------
.text:77EC7825 mov eax, [ebp+arg_4]
.text:77EC7828 mov [esi+28h], eax
0x28 =arg_4
----------
.text:77EC782B mov eax, [ebp+arg_8]
.text:77EC782E mov [esi+2Ch], eax
0x2c =arg_8
----------------
.text:77EC7831 mov eax, [ebp+arg_C]
.text:77EC7834 mov [esi+30h], eax
0x30 =arg_c
------------------
.text:77EC7837 mov eax, [ebp+arg_10]
.text:77EC783A add esp, 0Ch
.text:77EC783D mov [esi], esi
0x00=[ebp+Dst] pointer of self
.text:77EC783F mov [esi+34h], eax
0x34=arg_10
.text:77EC7842 pop esi
.text:77EC7843 pop ebp
.text:77EC7844 retn 14h
.text:77EC7844 _RtlInitializeGenericTableAvl@20 endp
经过以上分析 可以推测出 此函数 初始化一个结构体
struct _UNKNOWN
{
0x0 DWORD
0x4 DWORD
0x8 DWORD
0xc DWORD
0x10 DWORD
0x14 DWORD
0x18 DWORD
0x1c DWORD
0x20 DWORD
0x24 DWORD
0x28 DWORD
0x2c DWORD
0x30 DWORD
0x34 DWORD
};
RtlInitializeGenericTableAvl(_UNKNOWN* dst,arg_4,arg_8,arg_c,arg_4,arg_10)
{
memset(Dst,0,0x38);
*(dst+0x00)=dst;
*(dst+0x28)=arg_4;
*(dst+0x2c)=arg_8;
*(dst+0x30)=arg_c;
*(dst+0x34)=arg_10;
}
_Rtl_GenericTable_ 系列函数 的逆向分析
最新推荐文章于 2024-09-01 08:03:00 发布