/// <summary> /// Sets the requested register value for the current context. /// </summary> /// <param name="reg">The register.</param> /// <param name="value">The new register value.</param> /// <returns>Reference to the NIDebugger object</returns> public static void SetRegister(this Win32.CONTEXT ctx, NIRegister reg, uint value) { switch (reg) { case NIRegister.EAX: ctx.Eax = value; break; case NIRegister.ECX: ctx.Ecx = value; break; case NIRegister.EDX: ctx.Edx = value; break; case NIRegister.EBX: ctx.Ebx = value; break; case NIRegister.ESP: ctx.Esp = value; break; case NIRegister.EBP: ctx.Ebp = value; break; case NIRegister.ESI: ctx.Esi = value; break; case NIRegister.EDI: ctx.Edi = value; break; case NIRegister.EIP: ctx.Eip = value; break; default: break; } }
/// <summary> /// Gets the requested register value from the current context. /// </summary> /// <param name="reg">The register.</param> /// <param name="value">Output variable that will contain the requested value.</param> /// <returns>Reference to the NIDebugger object</returns> public static uint GetRegister(this Win32.CONTEXT ctx, NIRegister reg) { switch (reg) { case NIRegister.EAX: return ctx.Eax; case NIRegister.ECX: return ctx.Ecx; case NIRegister.EDX: return ctx.Edx; case NIRegister.EBX: return ctx.Ebx; case NIRegister.ESP: return ctx.Esp; case NIRegister.EBP: return ctx.Ebp; case NIRegister.ESI: return ctx.Esi; case NIRegister.EDI: return ctx.Edi; case NIRegister.EIP: return ctx.Eip; default: return 0; } }
/// <summary> /// Sets the requested register value for the current context. /// </summary> /// <param name="reg">The register.</param> /// <param name="value">The new register value.</param> /// <returns>Reference to the NIDebugger object</returns> public NIDebugger SetRegister(NIRegister reg, uint value) { switch (reg) { case NIRegister.EAX: Context.Eax = value; break; case NIRegister.ECX: Context.Ecx = value; break; case NIRegister.EDX: Context.Edx = value; break; case NIRegister.EBX: Context.Ebx = value; break; case NIRegister.ESP: Context.Esp = value; break; case NIRegister.EBP: Context.Ebp = value; break; case NIRegister.ESI: Context.Esi = value; break; case NIRegister.EDI: Context.Edi = value; break; case NIRegister.EIP: Context.Eip = value; break; default: value = 0; break; } return this; }
/// <summary> /// Gets the requested register value from the current context. /// </summary> /// <param name="reg">The register.</param> /// <param name="value">Output variable that will contain the requested value.</param> /// <returns>Reference to the NIDebugger object</returns> public NIDebugger GetRegister(NIRegister reg, out uint value) { switch(reg) { case NIRegister.EAX: value = Context.Eax; break; case NIRegister.ECX: value = Context.Ecx; break; case NIRegister.EDX: value = Context.Edx; break; case NIRegister.EBX: value = Context.Ebx; break; case NIRegister.ESP: value = Context.Esp; break; case NIRegister.EBP: value = Context.Ebp; break; case NIRegister.ESI: value = Context.Esi; break; case NIRegister.EDI: value = Context.Edi; break; case NIRegister.EIP: value = Context.Eip; break; default: value = 0; break; } return this; }