package parser.elf; import java.nio.ByteBuffer; public class Program { private static final int P_TYPE = 0x00; private static final int P_OFFSET = 0x04; private static final int P_VADDR = 0x08; private static final int P_PADDR = 0x0C; private static final int P_FILESZ = 0x10; private static final int P_MEMSZ = 0x14; private static final int P_FLAGS = 0x18; private static final int P_ALIGN = 0x1c; ByteBuffer procData; int phoff; int phentsize; int phnum; Program(ByteBuffer data, int phoff) { System.out.println("\nprogram:"); System.out.println("p_type:" + Integer.toHexString(data.getInt(phoff + P_TYPE))); System.out.println("p_offset:" + Integer.toHexString(data.getInt(phoff + P_OFFSET))); System.out.println("p_vaddr:" + Integer.toHexString(data.getInt(phoff + P_VADDR))); System.out.println("p_paddr:" + Integer.toHexString(data.getInt(phoff + P_PADDR))); System.out.println("p_filesz:" + Integer.toHexString(data.getInt(phoff + P_FILESZ))); System.out.println("p_flages:" + Integer.toHexString(data.getInt(phoff + P_FLAGS))); } Program(ByteBuffer data, int phoff, int phentsize, int phnum) { this.procData = data; this.phoff = phoff; this.phentsize = phentsize; this.phnum = phnum; for (int i = 0; i < phnum; i++) { int off = phoff + i * phentsize; // System.out.printf("\nprogram:%d\n", i); // System.out.println("p_type:"+Integer.toHexString(data.getInt(off+P_TYPE))); // System.out.println("p_offset:"+Integer.toHexString(data.getInt(off+P_OFFSET))); // System.out.println("p_vaddr:"+Integer.toHexString(data.getInt(off+P_VADDR))); // System.out.println("p_paddr:"+Integer.toHexString(data.getInt(off+P_PADDR))); // System.out.println("p_filesz:"+Integer.toHexString(data.getInt(off+P_FILESZ))); // System.out.println("p_memsz:"+Integer.toHexString(data.getInt(off+P_MEMSZ))); // System.out.println("p_flages:"+Integer.toHexString(data.getInt(off+P_FLAGS))); } } }