Frida Docs Unified
    Preparing search index...

    Interface StalkerX86Iterator

    Generates machine code for x86.

    interface StalkerX86Iterator {
        base: NativePointer;
        code: NativePointer;
        dispose(): void;
        flush(): void;
        keep(): void;
        memoryAccess: MemoryAccess;
        next(): X86Instruction;
        offset: number;
        pc: NativePointer;
        putAddRegImm(reg: X86Register, immValue: number | Int64 | UInt64): void;
        putAddRegNearPtr(dstReg: X86Register, srcAddress: NativePointerValue): void;
        putAddRegReg(dstReg: X86Register, srcReg: X86Register): void;
        putAndRegReg(dstReg: X86Register, srcReg: X86Register): void;
        putAndRegU32(reg: X86Register, immValue: number): void;
        putBreakpoint(): void;
        putBytes(data: string | ArrayBuffer | number[]): void;
        putCallAddress(address: NativePointerValue): void;
        putCallAddressWithAlignedArguments(
            func: NativePointerValue,
            args: X86CallArgument[],
        ): void;
        putCallAddressWithArguments(
            func: NativePointerValue,
            args: X86CallArgument[],
        ): void;
        putCallIndirect(addr: NativePointerValue): void;
        putCallIndirectLabel(labelId: string): void;
        putCallNearLabel(labelId: string): void;
        putCallout(callout: StalkerCallout, data?: NativePointerValue): void;
        putCallReg(reg: X86Register): void;
        putCallRegOffsetPtr(
            reg: X86Register,
            offset: number | Int64 | UInt64,
        ): void;
        putCallRegOffsetPtrWithArguments(
            reg: X86Register,
            offset: number | Int64 | UInt64,
            args: X86CallArgument[],
        ): void;
        putCallRegWithAlignedArguments(
            reg: X86Register,
            args: X86CallArgument[],
        ): void;
        putCallRegWithArguments(reg: X86Register, args: X86CallArgument[]): void;
        putChainingReturn(): void;
        putClc(): void;
        putCld(): void;
        putCmpImmPtrImmU32(immPtr: NativePointerValue, immValue: number): void;
        putCmpRegI32(reg: X86Register, immValue: number): void;
        putCmpRegOffsetPtrReg(
            regA: X86Register,
            offset: number | Int64 | UInt64,
            regB: X86Register,
        ): void;
        putCmpRegReg(regA: X86Register, regB: X86Register): void;
        putCpuid(): void;
        putDecReg(reg: X86Register): void;
        putDecRegPtr(target: X86PointerTarget, reg: X86Register): void;
        putFxrstorRegPtr(reg: X86Register): void;
        putFxsaveRegPtr(reg: X86Register): void;
        putIncReg(reg: X86Register): void;
        putIncRegPtr(target: X86PointerTarget, reg: X86Register): void;
        putJccNear(
            instructionId: X86InstructionId,
            target: NativePointerValue,
            hint: X86BranchHint,
        ): void;
        putJccNearLabel(
            instructionId: X86InstructionId,
            labelId: string,
            hint: X86BranchHint,
        ): void;
        putJccShort(
            instructionId: X86InstructionId,
            target: NativePointerValue,
            hint: X86BranchHint,
        ): void;
        putJccShortLabel(
            instructionId: X86InstructionId,
            labelId: string,
            hint: X86BranchHint,
        ): void;
        putJmpAddress(address: NativePointerValue): void;
        putJmpNearLabel(labelId: string): void;
        putJmpNearPtr(address: NativePointerValue): void;
        putJmpReg(reg: X86Register): void;
        putJmpRegOffsetPtr(reg: X86Register, offset: number | Int64 | UInt64): void;
        putJmpRegPtr(reg: X86Register): void;
        putJmpShortLabel(labelId: string): void;
        putLabel(id: string): void;
        putLahf(): void;
        putLeaRegRegOffset(
            dstReg: X86Register,
            srcReg: X86Register,
            srcOffset: number | Int64 | UInt64,
        ): void;
        putLeave(): void;
        putLfence(): void;
        putLockCmpxchgRegPtrReg(dstReg: X86Register, srcReg: X86Register): void;
        putLockDecImm32Ptr(target: NativePointerValue): void;
        putLockIncImm32Ptr(target: NativePointerValue): void;
        putLockXaddRegPtrReg(dstReg: X86Register, srcReg: X86Register): void;
        putMovdquEaxOffsetPtrXmm0(offset: number): void;
        putMovdquXmm0EspOffsetPtr(offset: number): void;
        putMovFsRegPtrReg(fsOffset: X86Register, srcReg: X86Register): void;
        putMovFsU32PtrReg(fsOffset: number, srcReg: X86Register): void;
        putMovGsRegPtrReg(gsOffset: X86Register, srcReg: X86Register): void;
        putMovGsU32PtrReg(fsOffset: number, srcReg: X86Register): void;
        putMovNearPtrReg(dstAddress: NativePointerValue, srcReg: X86Register): void;
        putMovqEaxOffsetPtrXmm0(offset: number): void;
        putMovqXmm0EspOffsetPtr(offset: number): void;
        putMovRegAddress(dstReg: X86Register, address: NativePointerValue): void;
        putMovRegBaseIndexScaleOffsetPtr(
            dstReg: X86Register,
            baseReg: X86Register,
            indexReg: X86Register,
            scale: number,
            offset: number | Int64 | UInt64,
        ): void;
        putMovRegFsRegPtr(dstReg: X86Register, fsOffset: X86Register): void;
        putMovRegFsU32Ptr(dstReg: X86Register, fsOffset: number): void;
        putMovRegGsRegPtr(dstReg: X86Register, gsOffset: X86Register): void;
        putMovRegGsU32Ptr(dstReg: X86Register, fsOffset: number): void;
        putMovRegNearPtr(dstReg: X86Register, srcAddress: NativePointerValue): void;
        putMovRegOffsetPtrReg(
            dstReg: X86Register,
            dstOffset: number | Int64 | UInt64,
            srcReg: X86Register,
        ): void;
        putMovRegOffsetPtrU32(
            dstReg: X86Register,
            dstOffset: number | Int64 | UInt64,
            immValue: number,
        ): void;
        putMovRegPtrReg(dstReg: X86Register, srcReg: X86Register): void;
        putMovRegPtrU32(dstReg: X86Register, immValue: number): void;
        putMovRegReg(dstReg: X86Register, srcReg: X86Register): void;
        putMovRegRegOffsetPtr(
            dstReg: X86Register,
            srcReg: X86Register,
            srcOffset: number | Int64 | UInt64,
        ): void;
        putMovRegRegPtr(dstReg: X86Register, srcReg: X86Register): void;
        putMovRegU32(dstReg: X86Register, immValue: number): void;
        putMovRegU64(dstReg: X86Register, immValue: number | UInt64): void;
        putNop(): void;
        putNopPadding(n: number): void;
        putPadding(n: number): void;
        putPause(): void;
        putPopax(): void;
        putPopfx(): void;
        putPopReg(reg: X86Register): void;
        putPushax(): void;
        putPushfx(): void;
        putPushImmPtr(immPtr: NativePointerValue): void;
        putPushNearPtr(address: NativePointerValue): void;
        putPushReg(reg: X86Register): void;
        putPushU32(immValue: number): void;
        putRdtsc(): void;
        putRet(): void;
        putRetImm(immValue: number): void;
        putS8(value: number): void;
        putSahf(): void;
        putShlRegU8(reg: X86Register, immValue: number): void;
        putShrRegU8(reg: X86Register, immValue: number): void;
        putStc(): void;
        putStd(): void;
        putSubRegImm(reg: X86Register, immValue: number | Int64 | UInt64): void;
        putSubRegNearPtr(dstReg: X86Register, srcAddress: NativePointerValue): void;
        putSubRegReg(dstReg: X86Register, srcReg: X86Register): void;
        putTestRegReg(regA: X86Register, regB: X86Register): void;
        putTestRegU32(reg: X86Register, immValue: number): void;
        putU8(value: number): void;
        putXchgRegRegPtr(leftReg: X86Register, rightReg: X86Register): void;
        putXorRegReg(dstReg: X86Register, srcReg: X86Register): void;
        reset(codeAddress: NativePointerValue, options?: X86WriterOptions): void;
    }

    Hierarchy (View Summary)

    Index

    Properties

    Methods

    dispose flush keep next putAddRegImm putAddRegNearPtr putAddRegReg putAndRegReg putAndRegU32 putBreakpoint putBytes putCallAddress putCallAddressWithAlignedArguments putCallAddressWithArguments putCallIndirect putCallIndirectLabel putCallNearLabel putCallout putCallReg putCallRegOffsetPtr putCallRegOffsetPtrWithArguments putCallRegWithAlignedArguments putCallRegWithArguments putChainingReturn putClc putCld putCmpImmPtrImmU32 putCmpRegI32 putCmpRegOffsetPtrReg putCmpRegReg putCpuid putDecReg putDecRegPtr putFxrstorRegPtr putFxsaveRegPtr putIncReg putIncRegPtr putJccNear putJccNearLabel putJccShort putJccShortLabel putJmpAddress putJmpNearLabel putJmpNearPtr putJmpReg putJmpRegOffsetPtr putJmpRegPtr putJmpShortLabel putLabel putLahf putLeaRegRegOffset putLeave putLfence putLockCmpxchgRegPtrReg putLockDecImm32Ptr putLockIncImm32Ptr putLockXaddRegPtrReg putMovdquEaxOffsetPtrXmm0 putMovdquXmm0EspOffsetPtr putMovFsRegPtrReg putMovFsU32PtrReg putMovGsRegPtrReg putMovGsU32PtrReg putMovNearPtrReg putMovqEaxOffsetPtrXmm0 putMovqXmm0EspOffsetPtr putMovRegAddress putMovRegBaseIndexScaleOffsetPtr putMovRegFsRegPtr putMovRegFsU32Ptr putMovRegGsRegPtr putMovRegGsU32Ptr putMovRegNearPtr putMovRegOffsetPtrReg putMovRegOffsetPtrU32 putMovRegPtrReg putMovRegPtrU32 putMovRegReg putMovRegRegOffsetPtr putMovRegRegPtr putMovRegU32 putMovRegU64 putNop putNopPadding putPadding putPause putPopax putPopfx putPopReg putPushax putPushfx putPushImmPtr putPushNearPtr putPushReg putPushU32 putRdtsc putRet putRetImm putS8 putSahf putShlRegU8 putShrRegU8 putStc putStd putSubRegImm putSubRegNearPtr putSubRegReg putTestRegReg putTestRegU32 putU8 putXchgRegRegPtr putXorRegReg reset

    Properties

    Memory location of the first byte of output.

    Memory location of the next byte of output.

    memoryAccess: MemoryAccess
    offset: number

    Current offset in bytes.

    Program counter at the next byte of output.

    Methods

    • Eagerly cleans up memory.

      Returns void

    • Resolves label references and writes pending data to memory. You should always call this once you've finished generating code. It is usually also desirable to do this between pieces of unrelated code, e.g. when generating multiple functions in one go.

      Returns void

    • Returns void

    • Puts an OS/architecture-specific breakpoint instruction.

      Returns void

    • Puts a CALL instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Puts a CALL instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Returns void

    • Puts a CLC instruction.

      Returns void

    • Puts a CLD instruction.

      Returns void

    • Puts a CPUID instruction.

      Returns void

    • Puts a JMP instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Puts a JMP instruction referencing labelId, defined by a past or future putLabel().

      Parameters

      • labelId: string

      Returns void

    • Puts a label at the current position, where id is an identifier that may be referenced in past and future put*Label() calls.

      Parameters

      • id: string

      Returns void

    • Puts a LAHF instruction.

      Returns void

    • Puts a LEAVE instruction.

      Returns void

    • Puts an LFENCE instruction.

      Returns void

    • Puts a MOVQ EAX XMM0 instruction.

      Parameters

      • offset: number

      Returns void

    • Puts a MOVQ XMM0 ESP instruction.

      Parameters

      • offset: number

      Returns void

    • Puts a NOP instruction.

      Returns void

    • Puts n NOP instructions.

      Parameters

      • n: number

      Returns void

    • Puts n guard instruction.

      Parameters

      • n: number

      Returns void

    • Puts a PAUSE instruction.

      Returns void

    • Puts a POPAX instruction.

      Returns void

    • Puts a POPFX instruction.

      Returns void

    • Puts a PUSHAX instruction.

      Returns void

    • Puts a PUSHFX instruction.

      Returns void

    • Puts a PUSH instruction.

      Parameters

      • immValue: number

      Returns void

    • Puts an RDTSC instruction.

      Returns void

    • Puts a RET instruction.

      Returns void

    • Puts a RET instruction.

      Parameters

      • immValue: number

      Returns void

    • Puts an int8.

      Parameters

      • value: number

      Returns void

    • Puts a SAHF instruction.

      Returns void

    • Puts a STC instruction.

      Returns void

    • Puts a STD instruction.

      Returns void

    • Puts a uint8.

      Parameters

      • value: number

      Returns void