Я рассматриваю следующую разборку для исполняемого файла Win32 в IDA pro и получить часть snwprintf
, но я не понимаю цели инструкции mov ecx, [eax+4]
здесь (они отбрасывают часть строка здесь?).Попытка выяснить следующую информацию о разборке
loc_4018E7:
mov eax, 0DEEDh
push eax
push offset asc_402270 ; "%X"
push 4 ; size_t no. chars
lea ecx, [ebp+var_inpPassStr]
push ecx ; wchar_t * opBuffer
call ds:_snwprintf ; convert number to HEX string
add esp, 10h
xor edx, edx
mov [ebp+var_8], dx
mov eax, [ebp+arg_inpPass]
mov ecx, [eax+4]
mov [ebp+var_14], ecx
lea edx, [ebp+var_inpPassStr]
push edx ; wchar_t *
call ds:wcslen
add esp, 4
mov esi, eax
mov eax, [ebp+var_14]
push eax ; wchar_t *
call ds:wcslen
add esp, 4
cmp esi, eax
jnz short loc_401984; this prints "invalid pass"
Любое понимание этого было бы замечательным.
'call ds: wcslen' - это косвенный вызов через указатель функции в разделе данных, правильно? Таким образом, в синтаксисе NASM это будет 'call [wcslen]'? –