请帮我看看这个call
附件是我要找的call我要是想注入这个call他是不是有参数应该怎么写呀 016A3B7E .C3 retn016A3B7F CC int3
016A3B80/$51 push ecx ;有可能是入口
016A3B81|.E8 6A420000 call nspr4.016A7DF0
016A3B86|.8B88 DC000000 mov ecx,dword ptr ds:
016A3B8C|.F7C1 00100000 test ecx,0x1000
016A3B92|.75 22 jnz Xnspr4.016A3BB6
016A3B94|.F6C1 02 test cl,0x2
016A3B97|.74 1D je Xnspr4.016A3BB6
016A3B99|.83E1 FD and ecx,0xFFFFFFFD
016A3B9C|.6A 00 push 0x0
016A3B9E|.68 97E8FFFF push -0x1769
016A3BA3|.8988 DC000000 mov dword ptr ds:,ecx
016A3BA9|.E8 F27EFFFF call nspr4.PR_SetError
016A3BAE|.83C4 08 add esp,0x8
016A3BB1|.83C8 FF or eax,0xFFFFFFFF
016A3BB4|.59 pop ecx
016A3BB5|.C3 retn
016A3BB6|>83B8 F0000000>cmp dword ptr ds:,0x0
016A3BBD|.74 14 je Xnspr4.016A3BD3
016A3BBF|.6A 00 push 0x0
016A3BC1|.68 9BE8FFFF push -0x1765
016A3BC6|.E8 D57EFFFF call nspr4.PR_SetError
016A3BCB|.83C4 08 add esp,0x8
016A3BCE|.83C8 FF or eax,0xFFFFFFFF
016A3BD1|.59 pop ecx
016A3BD2|.C3 retn
016A3BD3|>56 push esi
016A3BD4|.8B7424 14 mov esi,dword ptr ss:
016A3BD8|.C74424 04 000>mov dword ptr ss:,0x0
016A3BE0|.85F6 test esi,esi
016A3BE2|.7E 68 jle Xnspr4.016A3C4C
016A3BE4|.53 push ebx
016A3BE5|.8B5C24 14 mov ebx,dword ptr ss:
016A3BE9|.55 push ebp
016A3BEA|.8B6C24 24 mov ebp,dword ptr ss:
016A3BEE|.57 push edi
016A3BEF|.8B7C24 18 mov edi,dword ptr ss:
016A3BF3|>A1 68566B01 /mov eax,dword ptr ds:
016A3BF8|.8378 04 04 |cmp dword ptr ds:,0x4
016A3BFC|.7C 17 |jl Xnspr4.016A3C15
016A3BFE|.8B4F 04 |mov ecx,dword ptr ds:
016A3C01|.8B51 18 |mov edx,dword ptr ds:
016A3C04|.56 |push esi
016A3C05|.53 |push ebx
016A3C06|.52 |push edx
016A3C07|.57 |push edi
016A3C08|.68 B0FD6A01 |push nspr4.016AFDB0 ;ASCII "send: fd=%p osfd=%d buf=%p amount=%d"
016A3C0D|.E8 0E07FFFF |call nspr4.PR_LogPrint
016A3C12|.83C4 14 |add esp,0x14
016A3C15|>8B4424 24 |mov eax,dword ptr ss:
016A3C19|.55 |push ebp
016A3C1A|.50 |push eax
016A3C1B|.56 |push esi
016A3C1C|.53 |push ebx
016A3C1D|.57 |push edi
016A3C1E|.E8 3D600000 |call nspr4.016A9C60
016A3C23|.83C4 14 |add esp,0x14
016A3C26|.85C0 |test eax,eax
016A3C28|.7C 17 |jl Xnspr4.016A3C41
016A3C2A|.8B4F 04 |mov ecx,dword ptr ds:
016A3C2D|.014424 10 |add dword ptr ss:,eax
016A3C31|.8379 04 00 |cmp dword ptr ds:,0x0
016A3C35|.75 12 |jnz Xnspr4.016A3C49
016A3C37|.2BF0 |sub esi,eax
016A3C39|.03D8 |add ebx,eax
016A3C3B|.85F6 |test esi,esi
016A3C3D|.^ 7F B4 \jg Xnspr4.016A3BF3
016A3C3F|.EB 08 jmp Xnspr4.016A3C49
016A3C41|>C74424 10 FFF>mov dword ptr ss:,-0x1
016A3C49|>5F pop edi
016A3C4A|.5D pop ebp
016A3C4B|.5B pop ebx
016A3C4C|>8B15 68566B01 mov edx,dword ptr ds:
016A3C52|.837A 04 04 cmp dword ptr ds:,0x4
016A3C56|.5E pop esi
016A3C57|.7C 11 jl Xnspr4.016A3C6A
016A3C59|.8B0424 mov eax,dword ptr ss:
016A3C5C|.50 push eax
016A3C5D|.68 A4FD6A01 push nspr4.016AFDA4 ;ASCII "send -> %d"
016A3C62|.E8 B906FFFF call nspr4.PR_LogPrint
016A3C67|.83C4 08 add esp,0x8
016A3C6A|>8B0424 mov eax,dword ptr ss:
016A3C6D|.59 pop ecx
016A3C6E\.C3 retn
016A3C6F CC int3
016A3C70 .8B4424 0C mov eax,dword ptr ss:
016A3C74 .8B4C24 08 mov ecx,dword ptr ss:
016A3C78 .8B5424 04 mov edx,dword ptr ss:
016A3C7C .6A FF push -0x1
016A3C7E .6A 00 push 0x0
016A3C80 .50 push eax
016A3C81 .51 push ecx
016A3C82 .52 push edx
016A3C83 .E8 F8FEFFFF call nspr4.016A3B80 ;这里断点
{:10_254:} eax ecx edx 都传递有效参数 然后push -1 push 0 然后push eax push ecx push edx 最后call 16a3b80
这个call实际上就是 一个5个参数的函数,具体每个参数的含义,还要通过自己具体调试来理解
由于函数内部未实现堆栈平衡,所以call完之后要add esp,0x14来平衡堆栈
如果你要调用这个call 必须先构造eax ecx edx指向地址里面的值(并且保证真实有效),然后
mov eax,xxxxxxxx
mov ecx,xxxxxxxx
mov edx,xxxxxxxx
push -1
push 0
call 0x16a3b80
add esp,0x14
xxxxxxxx代表你自己构造的数据地址
页:
[1]