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