What Architectures and Instruction Sets are Supported?
ARM32
Relyze Desktop supports analyzing, disassembling and assembling 32 bit ARM, including Thumb and Thumb2 modes.
ARM64
Relyze Desktop supports analyzing, disassembling and assembling 64 bit ARM (Refered to as either arm64 or Aarch64).
x86 and x64
Relyze Desktop supports analyzing, disassembling and assembling both x86 and x64 code.
The following instruction set extensions are fully supported:
MMX, FPU (x87), 3DNow, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, FMA, FMA4, F16C, AES, AMD-V, INTEL-VMX, SMX, ADX, AVX, AVX2, XOP, BMI, BMI2, FSGSBASE, ABM/LZCNT, SHA, CLMUL, SGX, RDSEED, SMAP, INVPCID, RTM, XSAVE/XRSTOR, HLE, MPX and TBM.
Plugin Support
Using the plugin framework, you can access an instruction’s raw decoding as shown in the simple examples below:
# Simple example to color an instruction based on its EFLAGS access.
def run
result = cm.synchronize_write do
# Pull out the RVA of the function the user has selected in the GUI
func_rva = @relyze.tab_current_function_rva( cm ) || (break 'No function selected')
# Pull out the corresponding function object
func = cm.function( func_rva ) || (break 'Function not found')
# Iterate over every block in the function
func.blocks do | block |
# Iterate over every instruction in the block
block.instructions do | inst |
# Pull out the instruction raw decoding
raw = inst.to_raw
# Color instruction that modify the ZF flag green
# and color instruction that test the ZF flag blue.
if( raw[:flags][:zf] == :modified )
inst.color = @relyze.rgb( 0, 128, 0 )
elsif( raw[:flags][:zf] == :tested )
inst.color = @relyze.rgb( 0, 0, 128 )
else
inst.color = nil
end
end
end
'Finished'
end
print_message( result )
@relyze.update_gui
end
# Simple example to color every instruction in a function that writes to memory.
def run
result = cm.synchronize_write do
# Pull out the RVA of the function the user has selected in the GUI
func_rva = @relyze.tab_current_function_rva( cm ) || (break 'No function selected')
# Pull out the corresponding function object
func = cm.function( func_rva ) || (break 'Function not found')
# Iterate over every block in the function
func.blocks do | block |
# Iterate over every instruction in the block
block.instructions do | inst |
# Pull out the instruction raw decoding
raw = inst.to_raw
# Clear the instructions existing color
inst.color = nil
# Iterate over each operand looking for a memory write
raw[:operands].each do | operand |
if( operand[:write] and operand[:type] == :memory )
inst.color = @relyze.rgb( 96, 255, 255 )
break
end
end
end
end
'Finished'
end
print_message( result )
@relyze.update_gui
end