symbolization
This module performs symbolization. It uses the results of several analysis:
-use_def -value -data_access
Part of symbolization is pointer reattribution, that is detecting cases where a number is the result of a symbol+constant. This is done in an independent module ‘pointer_reattribution’ which also uses the results of these analyses.
The data symbolization itself uses the following heuristics:
address_array: whether we have potential symbols evenly spaced. The more symbols the less likely they are all value collisions. We require at least 3 symbols evenly spaced to consider it an array.
preferred_data_access and data_access_patterns (from the data_access analysis): - if an address is accessed with the size of the pointer, it is more likely to be a pointer. - if an address is accessed with a size other than the size of the pointers, it is almost
certainly not a pointer.
strings: if we have a pointer candidate in what seems to be a string, it is less likely to be a pointer.
aligned location: if a pointer candidate is aligned, it is more likely to be a pointer. Compilers usually (but not always) store pointers aligned.
This module also computes and symbol_minus_symbol.
- symbolic_operand(EA:address, Index:operand_index, Value:address, Type:symbol)
Instruction at address ‘EA’ has a symbolic operand with value ‘Value’. ‘Value’ is given as an address. The field ‘Index’ identifies which operand is symbolic and ‘Type’ specifies if the target is “data” or “code”. This predicate only supports symbolic expressions with one symbol and no offset. For symbolic operands with offset see
moved_label
.Used by:
bad_symbol_constant
,false_negative
,false_positive
,moved_label_class
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_data(EA:address, Size:unsigned, Value:address)
There is a symbolic expression in the data at address ‘EA’ of size ‘Size’ pointing to ‘Value’. ‘Value’ is given as an address. This predicate only supports symbolic expressions with one symbol and no offset. For symbolic expressions in data with offset see
moved_data_label
and for symbol-symbol expressions seesymbol_minus_symbol
.Uses:
address_in_data_refined
,cie_encoding
,cie_personality
,dwarf_encoding_size
,fde_entry
,fde_pointer_locations
,litpool_symbolic_operand
,loaded_section
,lsda
,lsda_type_entry
,option
,relocation
,symbol
Used by:
data_object_boundary
,false_negative
,false_positive
,moved_label_class
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbol_minus_symbol(EA:address, Size:unsigned, Symbol1:address, Symbol2:address, Scale:unsigned, Offset:number)
There is a symbolic expression in data at address ‘EA’ of size ‘Size’ of the form:
’(Symbol2-Symbol1)*Scale+Offset’
Both symbols are given as addresses.
Uses:
base_address
,base_relative_operand
,cie_encoding
,cie_entry
,code_in_block
,data_segment
,fde_entry
,fde_instruction
,fde_instruction_ref
,fde_pointer_locations
,got_reference_pointer
,instruction
,instruction_displacement_offset
,instruction_get_op
,instruction_immediate_offset
,invalid
,last_fde
,litpool_symbolic_operand
,loaded_section
,lsda_symbol_minus_symbol
,op_immediate_and_reg
,op_indirect
,option
,pc_relative_operand
,reg_def_use.def_used
,reg_has_got
,relocation
,seh_handler_entry
,split_load
,symbol
,tls_index
,tls_segment
Used by:
data_object_boundary
,false_negative
,false_positive
,moved_label_class
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_expr_from_relocation(EA:address, Size:unsigned, Symbol:symbol, Offset:number, TargetEA:address)
There is a symbolic expression at address ‘EA’ of size ‘Size’ of the form:
Symbol+Offset
This symbolic expression corresponds to a relocation and the symbol
is referenced by name.
Uses:
arch.memory_access
,base_address
,binary_format
,binary_type
,elf_relocation_size
,instruction_displacement_offset
,instruction_get_op
,instruction_immediate_offset
,lo_reloc_index
,op_immediate
,op_indirect
,pc_relative_operand
,reg_def_use.def
,reloc_type_nameless
,reloc_type_with_name
,relocation
,relocation_size
,section
,symbol
,tls_operand_attribute
,tls_segment
Used by:
data_object_boundary
,labeled_ea
,resolved_transfer
,symbolic_expr
,symbolic_expr_symbol_minus_symbol
,symbolic_operand_attribute
Recursive:
const_value_reg_used
,function_inference.function_entry_initial
,no_return_call_propagated
,next_end
,may_fallthrough
,jump_table_candidate
,block_candidate_boundaries
,unresolved_interval_order
,inferred_main_in_reg
,reg_def_use.return_val_used
,inter_procedural_edge
,compare_and_jump_immediate
,block_limit
,value_reg_edge
,block_next
,reg_has_base_image
,stack_def_use.block_last_def
,possible_target_from
,no_return_block
,indefinite_litpool_ref
,stack_def_use.used_in_block
,adjusts_stack_in_block
,split_load_total_points
,jump_table_candidate_refined
,overlap_with_litpool
,value_reg_limit
,code_in_block_candidate
,candidate_block_is_not_padding
,likely_fallthrough
,arch.reg_relative_load
,arm_jump_table_cmp_limit
,value_reg_unsupported
,nop_in_padding_candidate
,arm_jump_table_block_start
,__agg_subclause2
,transition_block_limit
,block_overlap
,no_return_call
,data_segment
,jump_table_element_access
,reg_def_use.flow_def
,arm_jump_table_skip_first_entry
,block_total_points
,stack_def_use.defined_in_block
,reg_def_use.ambiguous_last_def_in_block
,straight_line_def_used
,basic_target
,symbol_minus_symbol_litpool_access_pattern
,value_reg
,reg_def_use.live_var_used
,compare_and_jump_indirect_op_valid
,litpool_ref
,padding_block_candidate
,self_contained_segment
,data_in_code_propagate
,unresolved_interval
,unlikely_have_symbolic_immediate
,symbolic_expr_from_relocation
,hi_load_prop
,block_points
,wis_memo
,split_load_for_symbolization
,arm_jump_table_data_block_limit
,adrp_used
,known_block
,wis_has_prior
,candidate_block_is_padding
,no_return_call_refined
,data_in_code
,reg_def_use.used
,is_padding
,reg_def_use.ref_in_block
,base_relative_operand
,def_used_for_address
,reg_def_use.live_var_at_prior_used
,block_heuristic
,relative_address_start
,tls_get_addr
,__agg_subclause6
,instruction_memory_access_size
,start_function
,arm_jump_table_candidate
,first_block_in_byte_interval
,stack_base_reg_move
,__agg_subclause3
,jump_table_target
,base_relative_operation
,resolved_reaches
,next_start
,reg_def_use.live_var_def
,must_fallthrough
,next_type
,arm_jump_table_candidate_start
,next_block_in_byte_interval
,__agg_single3
,split_load
,indexed_pc_relative_load_relative
,block_instruction_next
,stack_def_use.live_var_used_in_block
,cmp_defines
,block
,reg_def_use.block_last_def
,overlapping_instruction
,code_in_block
,no_value_reg_limit
,jump_table_signed
,impossible_block
,block_boundaries
,wis_prior
,composite_data_access
,relocation_adjustment_total
,discarded_block
,stack_def_use.last_def_in_block
,indexed_pc_relative_load
,__agg_single6
,stack_def_use.live_var_at_block_end
,after_end
,split_load_candidate
,incomplete_block
,straight_line_last_def
,jump_table_max
,block_points_proportional
,wis_schedule
,arm_jump_table_data_block
,compare_and_jump_register
,block_candidate_dependency_edge
,reg_has_got
,data_block_candidate
,got_relative_operand
,contains_plausible_instr_seq
,reg_def_use.ambiguous_block_last_def
,invalid_jump_table_candidate
,possible_target
,relative_address
,cmp_reg_to_reg
,reg_def_use.def_used
,cinf_ldr_add_pc
,block_implies_block
,contains_implausible_instr_seq
,split_load_point
,call_tls_get_addr
,unresolved_block
,split_load_operand
,inferred_main_dispatch
,gp_relative_operand
,code_in_block_candidate_refined
,reg_reg_arithmetic_operation_defs
,litpool_symbolic_operand
,data_access
,init_symbol_minus_symbol_candidate_arm
,plt_block
,invalid
,litpool_boundaries
,segment_target_range
,correlated_live_reg
,arm_jump_table_block_instruction
,simple_data_access_pattern
,reg_def_use.live_var_at_block_end
,reg_def_use.defined_in_block
,block_last_instruction
,flags_and_jump_pair
,split_load_conflict
,data_block_limit
,last_value_reg_limit
,reg_used_for
,initialized_data_segment
,__agg_subclause7
,stack_def_use.live_var_at_prior_used
,jump_table_start
,unresolved_block_overlap
,arch.extend_load
,stack_def_use.def_used
,init_ldr_add_pc
,litpool_confidence
,tls_desc_call
,common_tail
,stack_def_use.ref_in_block
,arch.simple_data_load
,reg_def_use.used_in_block
,base_relative_jump
,branch_to_calculated_pc_rel_addr
,stack_def_use.live_var_def
,wis_schedule_iter
,jump_table_prelude
,negative_block_heuristic
,relocation_adjustment
,compare_and_jump_indirect
,reg_def_use.last_def_in_block
,relative_jump_table_entry_candidate
,discarded_split_load
,__agg_single2
,padding_block_limit
,reg_def_use.return_block_end
,plt_entry
,stack_def_use.live_var_used
- symbol_minus_symbol_from_relocation(EA:address, Size:unsigned, Symbol1:symbol, Symbol2:symbol, Scale:unsigned, Offset:number)
There is a symbolic expression at address ‘EA’ of size ‘Size’ of the form:
(Symbol2-Symbol1)*Scale+Offset
This symbolic expression corresponds to a relocation and the symbol is referenced by name.
Uses:
binary_type
,relocation
,symbol_minus_symbol_litpool_access_pattern
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_expr(EA:address, Size:unsigned, Symbol:symbol, Offset:number)
There is a symbolic expression at address ‘EA’ of size ‘Size’ of the form:
’Symbol+Offset’
In contrast to
symbolic_operand
andsymbolic_data
, the symbol in this predicate is referred by name. This allows us to include symbolic expressions from relocations and to choose between multiple symbols at the same location. This predicate captures all symbolic expressions fromsymbolic_operand
,moved_label
,symbolic_data
,moved_data_label
, andsymbolic_expr_from_relocation
.Uses:
got_reference_pointer
,instruction_displacement_offset
,instruction_immediate_offset
,op_immediate_and_reg
,reg_has_got
,relocation
,symbolic_expr_from_relocation
Used by:
missing_relocation_handling
,pointer_to_external_symbol
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_expr_symbol_minus_symbol(EA:address, Size:unsigned, Symbol:symbol, Symbol2:symbol, Scale:unsigned, Offset:number)
- There is a symbolic expression at address ‘EA’ of size ‘Size’ of the form:
’(Symbol2-Symbol1)*Scale+Offset’
The symbols in this predicate are referred by name.
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_operand_attribute(EA:address, Index:unsigned, Attribute:symbol)
The symbolic operand at address ‘EA’ and ‘Index’ has a symbolic expression attribute ‘Attribute’. Note that some attributes may be inferred but not used, if the corresponding
symbolic_operand
is not selected.Uses:
base_addr_offset_operand
,binary_format
,binary_type
,code_in_block
,const_value_reg_used
,data_segment
,direct_call
,direct_jump
,elf_relocation_size
,got_reference_pointer
,got_relative_operand
,indirect_call
,instruction_displacement_offset
,instruction_has_relocation
,instruction_immediate_offset
,litpool_ref
,lo_reloc_index
,loaded_section
,movw_movt_pair
,op_immediate_and_reg
,pc_relative_operand
,plt_block
,reg_def_use.def_used
,reg_has_got
,relocation
,split_load
,split_load_for_symbolization
,split_loadstore
,symbol
,symbolic_expr_from_relocation
,symbolic_operand_candidate
,symbolic_operand_mips_candidate
,tls_descriptor
,tls_global_dynamic
,tls_index
,tls_local_dynamic
,tls_operand_attribute
,tls_relative_operand
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_expr_attribute(ea:address, attribute:symbol)
The symbolic expression at address ‘EA’ has a symbolic expression attribute ‘Attribute’.
Uses:
binary_type
,instruction_displacement_offset
,instruction_immediate_offset
,litpool_symbolic_operand
,loaded_section
,relocation
,symbol
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- code_pointer_in_data(EA:address, Val:address)
There is a symbolic expression in data at address ‘EA’ pointing to a code block at address ‘Val’.
Uses:
block
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- labeled_ea(Ea:address)
The address ‘Ea’ needs to be labeled so it can be referred in symbolic expressions.
Uses:
cie_personality
,data_sym
,defined_symbol
,fde_entry
,symbolic_expr_from_relocation
,thumb_sym
Used by:
bss_data
,data_object_boundary
,inferred_symbol
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object_boundary(EA:address)
- bss_data(ea:address)
Uses:
bss_section
,labeled_ea
,loaded_section
- symbolic_operand_candidate(ea:address, operand_index:operand_index, Dest:address, Type:symbol)
Uses:
address_in_data
,arch.call
,arch.jump_operation_op_index
,arch.pc_relative_addr
,base_addr_offset_operand
,base_address
,binary_format
,binary_type
,code_in_block
,const_value_reg_used
,data_segment
,direct_call
,direct_jump
,function_symbol
,got_relative_operand
,indirect_call
,indirect_jump
,instruction
,instruction_displacement_offset
,instruction_get_op
,instruction_has_loop_prefix
,instruction_immediate_offset
,litpool_ref
,movw_movt_pair
,op_immediate
,op_indirect
,pc_relative_operand
,relocation
,split_load_operand
,symbol
,symbolic_operand_mips_candidate
,tls_descriptor
,tls_relative_operand
,tls_segment
Used by:
data_object_candidate
,data_object_point
,def_register_is_not_base_address
,symbolic_operand
,symbolic_operand_attribute
,symbolic_operand_point
- symbolic_operand_point(ea:address, operand_index:operand_index, points:number, why:symbol)
Uses:
arch.cmp_operation
,arch.jump
,arch.logic_operation
,binary_format
,binary_type
,cmp_immediate_to_reg
,def_register_is_not_base_address
,def_used_for_address
,exception_section
,instruction
,instruction_get_op
,is_xor_reset
,loaded_section
,low_pass_filter
,op_immediate
,op_immediate_and_reg
,op_indirect
,op_regdirect_contains_reg
,pc_relative_operand
,reg_def_use.def_used
,relocation
,symbolic_operand_candidate
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbolic_operand_total_points(ea:address, operand_index:operand_index, points:number)
WARNING: Predicate not present in compiled Datalog program (Dead Code)
- labeled_data_candidate(EA:address)
Uses:
address_in_data_refined
,arm_sym
,base_address
,cinf_symbol_minus_symbol_candidate_arm
,data_segment
,symbol
,symbol_minus_symbol_litpool_access_pattern
,thumb_sym
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- symbol_minus_symbol_candidate(EA:address, Size:unsigned, Symbol1:address, Symbol2:address, Scale:unsigned, Offset:number)
A candidate for a symbol-symbol in data (includes jump tables and other relative symbols)
Uses:
cinf_symbol_minus_symbol_candidate_arm
,code_in_block
,instruction_displacement_offset
,instruction_get_op
,instruction_has_relocation
,op_indirect_mapped
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- address_in_data_is_printable(EA:address)
The address appearing at ‘EA’ is within a potential
ascii_string
and therefore more likely to be spurious.
WARNING: Predicate not present in compiled Datalog program (Dead Code)
- address_in_data_refined(EA:address, Val:address)
- string(EA:address, End:address, Encoding:symbol)
Data-object analysis for string encodings.
Possible string of some ‘Encoding’ at interval [‘EA’,’End’).
Used by:
data_object_boundary
- string_candidate(EA:address, End:address, Encoding:symbol)
Uses:
ascii_string
,data_segment
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- string_candidate_refined(EA:address, End:address, Encoding:symbol)
Used by:
string
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object_candidate(ea:address, size:unsigned, type:symbol)
Uses:
address_in_data_refined
,arm_jump_table_candidate
,arm_jump_table_data_block
,impossible_jump_target
,litpool_ref
,symbol_minus_symbol_litpool_access_pattern
,symbolic_operand_candidate
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object_point(ea:address, size:unsigned, type:symbol, points:number, why:symbol)
Uses:
address_in_data
,address_in_data_refined
,arm_jump_table_candidate
,arm_jump_table_data_block
,binary_type
,exception_section
,is_padding
,jump_table_start
,litpool_ref
,loaded_section
,npad
,relocation
,special_data_section
,symbol_minus_symbol_litpool_access_pattern
,symbolic_operand_candidate
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object_conflict(ea:address, size:unsigned, type:symbol, ea2:address, size2:unsigned, type2:symbol)
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- discarded_data_object(ea:address, size:unsigned, type:symbol)
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object(ea:address, size:unsigned, type:symbol)
Used by:
string
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- after_address_in_data(EA:address, EA_next:address)
Uses:
address_in_data_refined
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- next_address_in_data(EA:address, EA_next:address)
Uses:
address_in_data_refined
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- address_array_aux(EA:address, Distance:unsigned, type:symbol, InitialEA:address)
Auxiliary predicate to compute
address_array
.Uses:
address_in_data_refined
,binary_format
,code_in_block
,data_segment
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- address_array(EA:address, Distance:unsigned, InitialEA:address)
This predicate is used for the symbolization heuristics. The pointer candidate at address ‘EA’ belongs to a sequence of evenly spaced pointer candidates starting at address ‘InitialEA’. The space between pointers is ‘Distance’. This sequence has at least three pointers. All the pointers in a sequence either point to code or to the same
data_segment
.Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- label_conflict(EA:address, Size:unsigned, Kind:symbol)
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function
- data_object_total_points(EA:address, Size:unsigned, Type:symbol, Points:number)
Recursive:
data_object_conflict
,labeled_data_candidate
,boundary_sym_expr
,symbolic_expr_symbol_minus_symbol
,data_object
,resolved_transfer
,function_inference.function_entry
,string_candidate
,moved_data_label
,labeled_ea
,value_reg_address_before
,code_pointer_in_data
,moved_label_candidate
,symbolic_operand_point
,discarded_jump_table_entry
,data_object_total_points
,inferred_special_symbol
,data_limit
,next_data_limit
,code_in_refined_block
,data_access_limit
,symbol_minus_symbol_from_relocation
,+disconnected3
,moved_displacement_candidate
,best_func_symbol
,main_function
,data_object_point
,data_limit_after_access
,symbolic_data
,string_candidate_refined
,preferred_data_access
,address_array
,symbolic_expr
,split_block
,refined_block
,moved_label
,moved_pc_relative_candidate
,+disconnected6
,code_in_split_block
,+disconnected2
,after_address_in_data
,address_array_aux
,next_address_in_data
,best_symexpr_symbol
,data_object_candidate
,symbolic_expr_attribute
,+disconnected1
,symbolic_operand_attribute
,symbolic_operand
,got_reference
,block_needs_splitting_at
,jump_table
,label_conflict
,symbol_minus_symbol
,block_needs_merging
,relative_jump_table_entry
,base_relative_symbolic_operand
,symbol_minus_symbol_candidate
,discarded_data_object
,symbol_score
,inferred_main_function