下列代码显示了怎么对shellcode进行内存复制,只弹出了一个dos框,只是简单的了解一下内存复制,在此不做过多解释,欢迎留言:
#include "windows.h"
#include "stdio.h"
char shellcode[]="\x55\x8B\xEC\x33\xC0\x68\x65\x78\x65\x3F\x68\x63\x6D\x64\x2E\x89\x44\x24\x07\x8B\xDC\x53\xBB\xAD\x23\x86\x7C\xFF\xD3\x33\xDB\x53\xBB\xFA\xCA\x81\x7C\xFF\xD3\x8B\xE5\x5D\xc3";
int main(int argc, char* argv[])
{
HINSTANCE libHandle;
char *dll="kernel.dll";
libHandle=LoadLibrary(dll);
//WinExec("cmd.exe",5);
//ExitProcess(0);
__asm
{
lea eax,shellcode
New: push eax
call eax
pop eax
xor edx,edx
chong: mov bl, [eax+edx]
mov [eax+edx+42],bl
mov [eax+edx],0x90
inc edx
cmp edx,42
je next
jmp chong
next:
add eax,42
jmp New
}
return 0;
}