52 lines
		
	
	
		
			942 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			942 B
		
	
	
	
		
			C
		
	
	
	
#ifndef WOODY_H
 | 
						|
# define WOODY_H
 | 
						|
 | 
						|
# include "ft_printf.h"
 | 
						|
# include <stdio.h>
 | 
						|
# include <fcntl.h>
 | 
						|
# include <sys/mman.h>
 | 
						|
# include <elf.h>
 | 
						|
 | 
						|
# define RET_ERR 1
 | 
						|
# define RET_OK 0
 | 
						|
 | 
						|
# define PL_XOR 0
 | 
						|
# define PL_RSA 1
 | 
						|
# define PL_DEBUG 2
 | 
						|
 | 
						|
typedef struct s_map {
 | 
						|
	void *data;
 | 
						|
	off_t size;
 | 
						|
} t_map;
 | 
						|
 | 
						|
typedef struct s_payload64 {
 | 
						|
	int		(*encrypt)(t_map, void *, Elf64_Phdr);
 | 
						|
	int		(*gen_key)(void **);
 | 
						|
	char	*algo_name;
 | 
						|
	size_t	jump_offset;
 | 
						|
	size_t	woody_offset;
 | 
						|
	size_t	load_ptr_offset;
 | 
						|
	size_t	load_size_offset;
 | 
						|
	size_t	private_key_offset;
 | 
						|
	size_t	len;
 | 
						|
	unsigned char *data;
 | 
						|
} t_payload64;
 | 
						|
 | 
						|
int woody_woodpacker(char *path);
 | 
						|
 | 
						|
 | 
						|
void *fetch(t_map map, size_t offset, size_t len);
 | 
						|
 | 
						|
int wdy_error(char *str);
 | 
						|
int wdy_perror(char *path);
 | 
						|
 | 
						|
int check_ident(t_map file);
 | 
						|
 | 
						|
t_payload64 get_debug_payload64(void);
 | 
						|
 | 
						|
int gen_key_xor(void **key);
 | 
						|
int encrypt_xor(t_map file, void *key_ptr, Elf64_Phdr load_segment);
 | 
						|
t_payload64 get_xor_payload64(void);
 | 
						|
 | 
						|
#endif
 |