0

我需要帮助理解这个函数(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
4

0 回答 0