实在不知道错在那里,表达不太好,希望大侠们帮我看看!下面是远程线程函数
void __stdcall ThreadProc (char *lpPara)
{
char *x=lpPara;
DWORD y=0x00473940;
_asm{
push 0Ah
mov eax,[x]
push eax
call y
add esp,08h
}
}
函数的作用是调用目标进程的一个函数,运行后能实现相关的功能,但是会出现内存访问异常,我在od里查看注入后的代码如下:
066B024B 55 push ebp
066B024C 8BEC mov ebp, esp
066B024E 83EC 4C sub esp, 4C
066B0251 53 push ebx
066B0252 56 push esi
066B0253 57 push edi
066B0254 8D7D B4 lea edi, dword ptr [ebp-4C]
066B0257 B9 13000000 mov ecx, 13
066B025C B8 CCCCCCCC mov eax, CCCCCCCC
066B0261 F3:AB rep stos dword ptr es:[edi]
066B0263 8B45 08 mov eax, dword ptr [ebp+8]
066B0266 8945 FC mov dword ptr [ebp-4], eax
066B0269 C745 F8 4039470>mov dword ptr [ebp-8], 473940
066B0270 C745 F4 538D400>mov dword ptr [ebp-C], 408D53
066B0277 6A 0A push 0A
066B0279 8B45 FC mov eax, dword ptr [ebp-4]
066B027C 50 push eax
066B027D FF55 F8 call dword ptr [ebp-8]
066B0280 83C4 08 add esp, 8
066B0283 5F pop edi
066B0284 5E pop esi
066B0285 5B pop ebx
066B0286 83C4 4C add esp, 4C
066B0289 3BEC cmp ebp, esp
066B028B E8 EB700000 call 066B737B
066B0290 8BE5 mov esp, ebp
066B0292 5D pop ebp
066B0293 C2 0400 retn 4
call dword ptr[ebp-8]就是要调用的函数,能够实现其功能,关键问题就出在才
call 066b737b这个地方 ,执行到这里的时候出现内存访问异常,我不明白的是我的线程函数里
只call了一个函数,注入后怎么会多出一个call 066b737b来,但是我在od中下断,把call 066b737b nop掉,目标程序运行完全正常且能实现相关功能,到底是什么原因呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课