了解IDA上的此功能以获取正确数量的参数

时间:2018-08-13 20:31:08

标签: assembly ida

我需要帮助来了解此功能(sub_59E1F0),这是该功能本身:

sub_59E1F0 proc near

var_50C= dword ptr -50Ch
var_508= dword ptr -508h
var_504= dword ptr -504h
var_500= dword ptr -500h
var_4FC= dword ptr -4FCh
var_4F8= dword ptr -4F8h
var_4F4= dword ptr -4F4h
var_4F0= dword ptr -4F0h
var_4EC= dword ptr -4ECh
var_4E8= dword ptr -4E8h
var_4E4= dword ptr -4E4h
var_4E0= dword ptr -4E0h
var_4CD= byte ptr -4CDh
var_224= dword ptr -224h
var_21B= byte ptr -21Bh
var_1F4= dword ptr -1F4h
var_1C4= dword ptr -1C4h
alpha= dword ptr -18Ch
var_128= dword ptr -128h
var_124= dword ptr -124h
var_120= dword ptr -120h
var_C= dword ptr -0Ch
var_4= dword ptr -4
arg_0= dword ptr  4
arg_4= dword ptr  8
arg_8= dword ptr  0Ch
arg_C= dword ptr  10h
arg_10= dword ptr  14h
arg_14= dword ptr  18h
arg_18= byte ptr  1Ch

push    0FFFFFFFFh
push    offset loc_876A22
mov     eax, large fs:0
push    eax
mov     large fs:0, esp
sub     esp, 500h
mov     eax, [esp+50Ch+arg_10]
push    ebx
push    ebp
mov     ebp, [esp+514h+arg_4]
fld     dword ptr [eax]
fsub    flt_809F104
push    esi
push    edi
mov     edi, ebp
xor     ebx, ebx
sar     edi, 3
fstp    [esp+51Ch+var_4F8]
fld     dword ptr [eax+4]
fsub    flt_809F108
and     edi, 0Fh
fstp    [esp+51Ch+var_4F4]
fld     dword ptr [eax+8]
fsub    flt_809F10C
cmp     [esp+51Ch+arg_18], bl
fstp    [esp+51Ch+var_4F0]
jz      short loc_59E267

然后,这是对函数的调用:

mov     edx, [esp+1Ch+var_10]
mov     ecx, [esp+1Ch+arg_1C]
and     edx, 0FFh
push    ebx
lea     eax, [esp+20h+var_C]
push    edx
mov     edx, [esp+24h+arg_18]
push    eax
push    ecx
push    edx
push    edi
push    23B5h
call    sub_59E1F0
add     esp, 1Ch
pop     edi
pop     esi
pop     ebx
add     esp, 10h
retn

我在ASM,调试或逆向工程方面很糟糕。但是据我了解,该函数中应该有7个参数,其中6个是DWORD(所以是某种数字),而一个是BYTE所以我认为可能是布尔值。

所以我尝试使用类似的函数,例如function(int,int,int,int,int,int,bool)或将int替换为DWORDS或全部替换为DWORDS,但是它不起作用(应用程序崩溃)

所以我现在试图挂断电话,以查看实际发送的内容。但是我似乎也无法捕获到正确数量的数据。

(显然)我不是专家,但是在调用该函数的示例中我可以看到只有4个参数,或者也许只有2个?也许2个数组? (由于var_10,arg_1C,var_C和arg_18)。

你们能帮助我了解我在这里看什么吗? :)


编辑:这是IDA图表的下一步:

lea     eax, [esp+51Ch+var_508]
lea     ecx, [esp+51Ch+var_4F8]
push    eax
push    ecx
push    3D8F5C29h
jmp     short loc_59E276

//

loc_59E267:
lea     edx, [esp+51Ch+var_508]
lea     eax, [esp+51Ch+var_4F8]
push    edx
push    eax
push    3DCCCCCDh

//

loc_59E276:
push    offset flt_809F104
call    sub_6BC5EE
mov     esi, [esp+52Ch+arg_0]
mov     ecx, [esp+52Ch+arg_14]
add     esp, 10h
cmp     esi, 342h
jnz     short loc_59E2D8

0 个答案:

没有答案