48 lines
885 B
C
48 lines
885 B
C
#ifndef WOODY_H
|
|
#define WOODY_H
|
|
|
|
#include "../ft_printf/includes/ft_printf.h"
|
|
#include <stdbool.h>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <assert.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/types.h>
|
|
#include <sys/mman.h>
|
|
#include <fcntl.h>
|
|
#include <elf.h>
|
|
#include <stdint.h>
|
|
|
|
#define JUMP "\xe9"
|
|
|
|
typedef struct payload
|
|
{
|
|
char *payload;
|
|
size_t len;
|
|
} t_payload;
|
|
|
|
typedef struct elf_content
|
|
{
|
|
long unsigned int file_size;
|
|
char *file_path;
|
|
char *file;
|
|
Elf64_Ehdr *Ehdr;
|
|
Elf64_Phdr *Phdr;
|
|
Elf64_Shdr *Shdr;
|
|
char *extra_data;
|
|
} t_elf_content;
|
|
|
|
// utils.c
|
|
void *fetch(char *file, unsigned long file_size, unsigned long offset_to_data, unsigned long supposed_data_size);
|
|
int ft_put_error(char *str);
|
|
|
|
// woody.c
|
|
int prepare_injection(t_elf_content *woody);
|
|
|
|
// encrypt.c
|
|
void encrypt(char *file, unsigned long int offset, unsigned long int size);
|
|
|
|
#endif
|
|
|