【发布时间】:2013-02-09 14:26:45
【问题描述】:
我正在 IDA pro 中查看 Win32 可执行文件的以下反汇编并获得 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]?
标签: assembly x86 disassembly wchar-t ida