Module: OneGadget::ABI
- Defined in:
- lib/one_gadget/abi.rb
Overview
Defines the ABI of different architectures.
Constant Summary collapse
- X86_32 =
Registers of i386.
%w[eax ebx ecx edx edi esi ebp esp] + 0.upto(7).map { |i| "xmm#{i}" }
- X86_64 =
Registers of x86_64.
X86_32 + %w[rax rbx rcx rdx rdi rsi rbp rsp] + 8.upto(15).map { |i| "r#{i}" } + 8.upto(15).map { |i| "xmm#{i}" }
- AARCH64 =
Registers of AArch64.
%w[xzr wzr sp] + 0.upto(30).map { |i| ["x#{i}", "w#{i}"] }.flatten
Class Method Summary collapse
-
.aarch64 ⇒ Array<String>
Registers’ name of aarch64.
-
.all ⇒ Array<String>
Returns all names of registers.
-
.amd64 ⇒ Array<String>
Registers’ name of amd64.
-
.i386 ⇒ Array<String>
Registers’ name of i386.
-
.stack_register?(reg) ⇒ Boolean
Checks if the register is a stack-related pointer.
Class Method Details
.aarch64 ⇒ Array<String>
Registers’ name of aarch64.
33 34 35 |
# File 'lib/one_gadget/abi.rb', line 33 def aarch64 AARCH64 end |
.all ⇒ Array<String>
Returns all names of registers.
39 40 41 |
# File 'lib/one_gadget/abi.rb', line 39 def all amd64 + aarch64 end |
.amd64 ⇒ Array<String>
Registers’ name of amd64.
21 22 23 |
# File 'lib/one_gadget/abi.rb', line 21 def amd64 X86_64 end |
.i386 ⇒ Array<String>
Registers’ name of i386.
27 28 29 |
# File 'lib/one_gadget/abi.rb', line 27 def i386 X86_32 end |
.stack_register?(reg) ⇒ Boolean
Checks if the register is a stack-related pointer.
47 48 49 |
# File 'lib/one_gadget/abi.rb', line 47 def stack_register?(reg) %w[esp ebp rsp rbp sp x29].include?(reg) end |