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 =<<EOM ----------------------------------------------------------------------- CONTEXT: EIP: #{self.eip.to_s(16).rjust(8, "0")} #{maybe_dis.call(self.eip)} EAX: #{self.eax.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.eax)} EBX: #{self.ebx.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.ebx)} ECX: #{self.ecx.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.ecx)} EDX: #{self.edx.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.edx)} EDI: #{self.edi.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.edi)} ESI: #{self.esi.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.esi)} EBP: #{self.ebp.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.ebp)} ESP: #{self.esp.to_s(16).rjust(8, "0")} #{maybe_hex.call(self.esp)} EFL: #{self.eflags.to_s(2).rjust(32, "0")} #{Flags.flag_dump(self.eflags)} EOM end |