Class: Ragweed::Wraposx::ThreadContext::State32
- Includes:
- FFIStructInclude
- Defined in:
- lib/ragweed/wraposx/thread_context.rb
Overview
_STRUCT_X86_THREAD_STATE32
unsigned int eax;
unsigned int ebx;
unsigned int ecx;
unsigned int edx;
unsigned int edi;
unsigned int esi;
unsigned int ebp;
unsigned int esp;
unsigned int ss;
unsigned int eflags;
unsigned int eip;
unsigned int cs;
unsigned int ds;
unsigned int es;
unsigned int fs;
unsigned int gs;
;
Defined Under Namespace
Modules: Flags
Constant Summary collapse
- FLAVOR =
1
Instance Method Summary collapse
- #dump(&block) ⇒ Object
-
#single_step(v = true) ⇒ Object
sets/clears the TRAP flag.
Methods included from FFIStructInclude
#method_missing, #methods, #respond_to?
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Ragweed::FFIStructInclude
Instance Method Details
#dump(&block) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 133 def dump(&block) maybe_hex = lambda {|a| begin; "\n" + (" " * 9) + block.call(a, 16).hexdump(true)[10..-2]; rescue; ""; end } maybe_dis = lambda {|a| begin; "\n" + block.call(a, 16).distorm.map {|i| " " + i.mnem}.join("\n"); rescue; ""; end } string =" -----------------------------------------------------------------------\n CONTEXT:\n EIP: \#{self.eip.to_s(16).rjust(8, \"0\")} \#{maybe_dis.call(self.eip)}\n\n EAX: \#{self.eax.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.eax)}\n EBX: \#{self.ebx.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.ebx)}\n ECX: \#{self.ecx.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.ecx)}\n EDX: \#{self.edx.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.edx)}\n EDI: \#{self.edi.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.edi)}\n ESI: \#{self.esi.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.esi)}\n EBP: \#{self.ebp.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.ebp)}\n ESP: \#{self.esp.to_s(16).rjust(8, \"0\")} \#{maybe_hex.call(self.esp)}\n EFL: \#{self.eflags.to_s(2).rjust(32, \"0\")} \#{Flags.flag_dump(self.eflags)}\n" end |
#single_step(v = true) ⇒ Object
sets/clears the TRAP flag
155 156 157 158 159 160 161 |
# File 'lib/ragweed/wraposx/thread_context.rb', line 155 def single_step(v=true) if v self.eflags |= Flags::TRAP else self.eflags &= ~(Flags::TRAP) end end |