All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.fornwall.jelf.DwarfCursor64 Maven / Gradle / Ivy

package net.fornwall.jelf;

import com.github.unidbg.Emulator;
import com.github.unidbg.pointer.UnidbgPointer;
import unicorn.Arm64Const;

public class DwarfCursor64 extends DwarfCursor {

    public DwarfCursor64(Emulator emulator) {
        super(new Long[100]);

        for (int i = Arm64Const.UC_ARM64_REG_X0; i <= Arm64Const.UC_ARM64_REG_X28; i++) {
            UnidbgPointer pointer = UnidbgPointer.register(emulator, i);
            loc[i-Arm64Const.UC_ARM64_REG_X0] = pointer == null ? 0 : pointer.peer;
        }
        UnidbgPointer x29 = UnidbgPointer.register(emulator, Arm64Const.UC_ARM64_REG_FP);
        UnidbgPointer x30 = UnidbgPointer.register(emulator, Arm64Const.UC_ARM64_REG_LR);
        UnidbgPointer x31 = UnidbgPointer.register(emulator, Arm64Const.UC_ARM64_REG_SP);
        loc[29] = x29 == null ? 0 : x29.peer;
        loc[30] = x30 == null ? 0 : x30.peer;
        loc[31] = x31 == null ? 0 : x31.peer;

        this.cfa = loc[31];
        this.ip = UnidbgPointer.register(emulator, Arm64Const.UC_ARM64_REG_PC).peer;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy