Arion 1.0.2-alpha
A high-performance C++ framework for emulating executable binaries.
 
Loading...
Searching...
No Matches
elf_loader.hpp File Reference
#include <arion/common/global_defs.hpp>
#include <arion/common/memory_manager.hpp>
#include <arion/platforms/linux/elf_parser.hpp>
#include <arion/platforms/linux/lnx_loader.hpp>
#include <cstdint>
#include <memory>
#include <string>

Go to the source code of this file.

Classes

struct  arion::ARM_TRAP
 Structure representing a kernel trap entry for the 32-bit ARM architecture. More...
 
class  arion::ElfLoader
 A Linux loader implementation responsible for parsing and mapping ELF binaries (executables and dynamic loaders). More...
 

Namespaces

namespace  arion
 

Macros

#define LINUX_64_VVAR_ADDR   0x7ffff7fba000
 
#define LINUX_64_VVAR_SZ   0x4000
 
#define LINUX_64_VDSO_ADDR   0x7ffff7fbe000
 
#define LINUX_64_VDSO_SZ   0x2000
 
#define LINUX_64_INTERP_ADDR   0x7ffff7fc0000
 
#define LINUX_64_VSYSCALL_ADDR   0xffffffffff600000
 
#define LINUX_64_VSYSCALL_ALIGN   0x1000
 
#define LINUX_32_VVAR_ADDR   0xf7fba000
 
#define LINUX_32_VVAR_SZ   0x4000
 
#define LINUX_32_VDSO_ADDR   0xf7fbe000
 
#define LINUX_32_VDSO_SZ   0x2000
 
#define LINUX_32_INTERP_ADDR   0xf7fc0000
 
#define LINUX_32_ARM_TRAPS_ADDR   0xffff0000
 
#define LINUX_32_ARM_TRAPS_SIZE   0x1000
 
#define LINUX_32_ARM_GETTLS_ADDR   0xffff0fe0
 
#define LINUX_VVAR_PERMS   4
 
#define LINUX_VDSO_PERMS   5
 
#define LINUX_VSYSCALL_PERMS   1
 
#define LINUX_ARM_TRAPS_PERMS   5
 
#define HEAP_SZ   0x1000
 
#define HEAP_PERMS   6
 
#define LINUX_VDSO_KERNEL_VSYSCALL_OFF   0x570
 

Variables

char _binary_vdso_bin_start []
 External symbol indicating the start of the embedded VDSO binary data.
 
char _binary_vdso_bin_end []
 External symbol indicating the end of the embedded VDSO binary data.
 

Macro Definition Documentation

◆ HEAP_PERMS

#define HEAP_PERMS   6

◆ HEAP_SZ

#define HEAP_SZ   0x1000

◆ LINUX_32_ARM_GETTLS_ADDR

#define LINUX_32_ARM_GETTLS_ADDR   0xffff0fe0

◆ LINUX_32_ARM_TRAPS_ADDR

#define LINUX_32_ARM_TRAPS_ADDR   0xffff0000

◆ LINUX_32_ARM_TRAPS_SIZE

#define LINUX_32_ARM_TRAPS_SIZE   0x1000

◆ LINUX_32_INTERP_ADDR

#define LINUX_32_INTERP_ADDR   0xf7fc0000

◆ LINUX_32_VDSO_ADDR

#define LINUX_32_VDSO_ADDR   0xf7fbe000

◆ LINUX_32_VDSO_SZ

#define LINUX_32_VDSO_SZ   0x2000

◆ LINUX_32_VVAR_ADDR

#define LINUX_32_VVAR_ADDR   0xf7fba000

◆ LINUX_32_VVAR_SZ

#define LINUX_32_VVAR_SZ   0x4000

◆ LINUX_64_INTERP_ADDR

#define LINUX_64_INTERP_ADDR   0x7ffff7fc0000

◆ LINUX_64_VDSO_ADDR

#define LINUX_64_VDSO_ADDR   0x7ffff7fbe000

◆ LINUX_64_VDSO_SZ

#define LINUX_64_VDSO_SZ   0x2000

◆ LINUX_64_VSYSCALL_ADDR

#define LINUX_64_VSYSCALL_ADDR   0xffffffffff600000

◆ LINUX_64_VSYSCALL_ALIGN

#define LINUX_64_VSYSCALL_ALIGN   0x1000

◆ LINUX_64_VVAR_ADDR

#define LINUX_64_VVAR_ADDR   0x7ffff7fba000

◆ LINUX_64_VVAR_SZ

#define LINUX_64_VVAR_SZ   0x4000

◆ LINUX_ARM_TRAPS_PERMS

#define LINUX_ARM_TRAPS_PERMS   5

◆ LINUX_VDSO_KERNEL_VSYSCALL_OFF

#define LINUX_VDSO_KERNEL_VSYSCALL_OFF   0x570

◆ LINUX_VDSO_PERMS

#define LINUX_VDSO_PERMS   5

◆ LINUX_VSYSCALL_PERMS

#define LINUX_VSYSCALL_PERMS   1

◆ LINUX_VVAR_PERMS

#define LINUX_VVAR_PERMS   4

Variable Documentation

◆ _binary_vdso_bin_end

char _binary_vdso_bin_end[]
extern

External symbol indicating the end of the embedded VDSO binary data.

◆ _binary_vdso_bin_start

char _binary_vdso_bin_start[]
extern

External symbol indicating the start of the embedded VDSO binary data.