0xDE5

Trying to solve and expand 0xde5 exercises in assembly (or C)
git clone git://git.mdnr.space/0xDE5
Log | Files | Refs | README | LICENSE

elf-struct.s (2788B)


      1 # --------------------- CONSTANTS ------------------------- #
      2 
      3     #---------- ELF header ------------ #
      4 .set elf_header_size, 0x40
      5     .set eh_idx_ident, 0x0
      6     .set eh_idx_type, 0x10
      7     .set eh_idx_machine, 0x12
      8     .set eh_idx_version, 0x14
      9     .set eh_idx_entry, 0x18
     10     .set eh_idx_phoff, 0x20
     11     .set eh_idx_shoff, 0x28
     12     .set eh_idx_flags, 0x30
     13     .set eh_idx_ehsize, 0x34
     14     .set eh_idx_phentsize, 0x36
     15     .set eh_idx_phnum, 0x38
     16     .set eh_idx_shentsize, 0x3A
     17     .set eh_idx_shnum, 0x3C
     18     .set eh_idx_shstrndx, 0x3E
     19 
     20 .set eh_idnet_size, 0x10
     21     .set ei_idx_mag0, 0x0
     22         .set ei_val_mag0, 0x7F
     23     .set ei_idx_mag1, 0x1
     24         .set ei_val_mag1, 'E'
     25     .set ei_idx_mag2, 0x2
     26         .set ei_val_mag2, 'L'
     27     .set ei_idx_mag3, 0x3
     28         .set ei_val_mag3, 'F'
     29     .set ei_idx_class, 0x4
     30         .set ei_val_class_none, 0x0
     31         .set ei_val_class_32, 0x1
     32         .set ei_val_class_64, 0x2
     33     .set ei_idx_data, 0x5
     34         .set ei_val_data_none, 0x0
     35         .set ei_val_data_lsb, 0x1 # little endian
     36         .set ei_val_data_msb, 0x2 # big endian
     37     .set ei_idx_version, 0x6
     38 
     39 .set eh_type_size, 0x2
     40     .set et_val_none, 0x0
     41     .set et_val_rel, 0x1
     42     .set et_val_exec, 0x2
     43     .set et_val_dyn, 0x3
     44     .set et_val_core, 0x4
     45     .set et_val_loproc, 0xFF00
     46     .set et_val_hiproc, 0xFFFF
     47 
     48 .set eh_machine_size, 0x2
     49     .set em_val_none, 0x0
     50     .set em_val_m32, 0x1
     51     .set em_val_sparc, 0x2
     52     .set em_val_386, 0x3
     53     .set em_val_68k, 0x4
     54     .set em_val_88k, 0x5
     55     .set em_val_860, 0x7
     56     .set em_val_mips, 0x8
     57     .set em_val_mips_rs4_be, 0xA
     58     .set em_val_x8664, 0x3E
     59 
     60 .set eh_version_size, 0x4
     61     .set ev_val_none, 0x0
     62     .set ev_val_current, 0x1
     63 
     64 .set eh_entry_size, 0x8
     65 .set eh_phoff_size, 0x8
     66 .set eh_shoff_size, 0x8
     67 .set eh_flags_size, 0x4
     68 .set eh_ehsize_size, 0x2
     69 .set eh_phentsize_size, 0x2
     70 .set eh_phnum_size, 0x2
     71 .set eh_shentsize_size, 0x2
     72 .set eh_shnum_size, 0x2
     73 .set eh_shstrndx_size, 0x2
     74 
     75 .set ei_mag0_idx, 0x0
     76 .set ei_mag1_idx, 0x1
     77 .set ei_mag2_idx, 0x2
     78 .set ei_mag3_idx, 0x3
     79 .set ei_class_idx, 0x4
     80 .set ei_data_idx, 0x5
     81 .set ei_version_idx, 0x6
     82 
     83     #---------- Program header ------------ #
     84 .set p_header_size, 0x38
     85     .set ph_idx_type, 0x0
     86         .set pt_val_null, 0x0
     87         .set pt_val_load, 0x1
     88         .set pt_val_dynamic, 0x2
     89         .set pt_val_interp, 0x3
     90         .set pt_val_note, 0x4
     91         .set pt_val_shlib, 0x5
     92         .set pt_val_phdr, 0x6
     93         .set pt_val_loproc, 0x70000000
     94         .set pt_val_hiproc, 0x7fffffff
     95     .set ph_idx_flags, 0x4
     96     .set ph_idx_offset, 0x8
     97     .set ph_idx_vaddr, 0x10
     98     .set ph_idx_paddr, 0x18
     99     .set ph_idx_filesz, 0x20
    100     .set ph_idx_memsz, 0x28
    101     .set ph_idx_align, 0x30
    102 
    103 .data
    104 .bss
    105 elf_header:
    106     .space elf_header_size
    107 program_header:
    108     .space p_header_size
    109