今天突发奇想,不用CreateRemoteThread,只用WriteProcessMemory进行远程注入并执行!
 
原理是修改进程原始代码,但不是什么位置的代码都能利用,因为你不知道这个原始代码是否会被进程调用,所以我们要找一个循环的代码,这就不难了,窗口消息回调就是循环的,拿explorer.exe为例子:
 
用OD附加explorer进程,然后点W按钮显示窗口,看到许多窗口,应该选哪个呢?有不少回调地址都是DLL在处理,我们要选一个进程自己处理的,看下图红框框起来的那个!
 

 
然后点跟随classproc

代码:
01001B1D      8BFF          mov     edi, edi
01001B1F   .  55            push    ebp
01001B20   .  8BEC          mov     ebp, esp
01001B22   .  53            push    ebx
01001B23   .  56            push    esi
01001B24   .  57            push    edi
01001B25   .  8B7D 0C       mov     edi, dword ptr [ebp+C]
01001B28   .  BB 81000000   mov     ebx, 81
01001B2D   .  3BFB          cmp     edi, ebx
01001B2F   .  0F84 3A1F0100 je      01013A6F
01001B35   .  8B5D 08       mov     ebx, dword ptr [ebp+8]
01001B38   .  53            push    ebx
01001B39   .  E8 A8FFFFFF   call    01001AE6
01001B3E   .  8BF0          mov     esi, eax
01001B40   .  85F6          test    esi, esi
01001B42   .  0F84 ED2C0200 je      01024835
01001B48   .  8B06          mov     eax, dword ptr [esi]
01001B4A   .  56            push    esi
01001B4B   .  FF10          call    dword ptr [eax]
01001B4D   .  FF75 14       push    dword ptr [ebp+14]
01001B50   .  8B06          mov     eax, dword ptr [esi]
01001B52   .  FF75 10       push    dword ptr [ebp+10]
01001B55   .  8BCE          mov     ecx, esi
01001B57   .  57            push    edi
01001B58   .  53            push    ebx
01001B59   .  FF50 08       call    dword ptr [eax+8]
01001B5C   .  81FF 82000000 cmp     edi, 82
01001B62   .  8945 14       mov     dword ptr [ebp+14], eax
01001B65   .  0F84 B72C0200 je      01024822
01001B6B   >  8B06          mov     eax, dword ptr [esi]
01001B6D   .  56            push    esi
01001B6E   .  FF50 04       call    dword ptr [eax+4]
01001B71   >  8B45 14       mov     eax, dword ptr [ebp+14]
01001B74   >  5F            pop     edi
01001B75   .  5E            pop     esi
01001B76   .  5B            pop     ebx
01001B77   .  5D            pop     ebp
01001B78   .  C2 1000       retn    10
原理类似HOOK,但只HOOK一次,执行了注入代码之后就马上让他复原了!
因为可以系统版本不一样,会有一点差异,所以在这里,我用特征码搜索的方式来定位要修改的部分(红色加亮部分)把他修改成
 
代码:
mov eax,XXXXXX
call eax
 
XXXXXX 是注入代码地址,原理非常简单,下面是源码,大家可以研究下,代码写的很搓,不好意思了
 
代码是MASM写的,编译后把.text段设置成可写的
上传的附件 远程注入.rar