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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
unresolved_block
,litpool_ref
,negative_block_heuristic
,reg_def_use.used
,contains_implausible_instr_seq
,padding_block_candidate
,block_instruction_next
,arm_jump_table_candidate_start
,block_candidate_boundaries
,impossible_block
,arch.reg_relative_load
,wis_schedule
,reg_has_base_image
,split_load_conflict
,possible_target_from
,wis_has_prior
,straight_line_def_used
,__agg_subclause6
,init_symbol_minus_symbol_candidate_arm
,base_relative_operation
,straight_line_last_def
,unresolved_interval_order
,stack_def_use.live_var_used
,unresolved_block_overlap
,reg_def_use.ambiguous_block_last_def
,correlated_live_reg
,litpool_symbolic_operand
,data_in_code_propagate
,split_load_point
,relative_address
,__agg_subclause3
,cmp_reg_to_reg
,plt_block
,compare_and_jump_indirect_op_valid
,data_block_candidate
,reg_def_use.live_var_at_prior_used
,no_return_call
,split_load_operand
,common_tail
,no_return_call_refined
,value_reg_unsupported
,cinf_ldr_add_pc
,stack_def_use.last_def_in_block
,next_start
,block_points_proportional
,tls_desc_call
,code_in_block
,reg_def_use.live_var_used
,data_in_code
,split_load_for_symbolization
,incomplete_block
,base_relative_jump
,unlikely_have_symbolic_immediate
,base_relative_operand
,arm_jump_table_candidate
,jump_table_candidate_refined
,split_load_total_points
,next_block_in_byte_interval
,discarded_block
,reg_def_use.return_val_used
,adrp_used
,indefinite_litpool_ref
,reg_def_use.live_var_def
,relative_address_start
,reg_def_use.ref_in_block
,block_points
,arch.extend_load
,block_boundaries
,data_access
,candidate_block_is_padding
,instruction_memory_access_size
,function_inference.function_entry_initial
,indexed_pc_relative_load
,wis_schedule_iter
,init_ldr_add_pc
,call_tls_get_addr
,unresolved_interval
,data_block_limit
,segment_target_range
,const_value_reg_used
,__agg_single2
,compare_and_jump_register
,is_padding
,jump_table_start
,relocation_adjustment_total
,stack_def_use.live_var_def
,cmp_defines
,after_end
,reg_has_got
,overlap_with_litpool
,no_return_call_propagated
,invalid
,invalid_jump_table_candidate
,data_segment
,inter_procedural_edge
,block_last_instruction
,must_fallthrough
,padding_block_limit
,block_limit
,wis_prior
,block_overlap
,symbol_minus_symbol_litpool_access_pattern
,arm_jump_table_block_start
,no_return_block
,initialized_data_segment
,branch_to_calculated_pc_rel_addr
,litpool_boundaries
,jump_table_target
,arm_jump_table_cmp_limit
,stack_def_use.block_last_def
,no_value_reg_limit
,block_heuristic
,reg_used_for
,possible_target
,reg_def_use.live_var_at_block_end
,hi_load_prop
,indexed_pc_relative_load_relative
,relocation_adjustment
,arm_jump_table_data_block
,composite_data_access
,code_in_block_candidate_refined
,tls_get_addr
,value_reg_edge
,value_reg
,__agg_subclause7
,known_block
,resolved_reaches
,block
,block_next
,gp_relative_operand
,jump_table_signed
,symbolic_expr_from_relocation
,reg_def_use.block_last_def
,__agg_subclause2
,likely_fallthrough
,last_value_reg_limit
,reg_def_use.flow_def
,split_load_candidate
,jump_table_max
,__agg_single3
,jump_table_candidate
,compare_and_jump_indirect
,block_implies_block
,reg_def_use.def_used
,reg_reg_arithmetic_operation_defs
,next_type
,self_contained_segment
,arch.simple_data_load
,block_total_points
,def_used_for_address
,relative_jump_table_entry_candidate
,may_fallthrough
,basic_target
,candidate_block_is_not_padding
,reg_def_use.last_def_in_block
,wis_memo
,block_candidate_dependency_edge
,stack_def_use.used_in_block
,stack_base_reg_move
,inferred_main_dispatch
,reg_def_use.defined_in_block
,stack_def_use.def_used
,code_in_block_candidate
,overlapping_instruction
,arm_jump_table_block_instruction
,first_block_in_byte_interval
,jump_table_prelude
,arm_jump_table_skip_first_entry
,contains_plausible_instr_seq
,stack_def_use.ref_in_block
,transition_block_limit
,inferred_main_in_reg
,reg_def_use.ambiguous_last_def_in_block
,next_end
,stack_def_use.live_var_at_block_end
,discarded_split_load
,simple_data_access_pattern
,start_function
,got_relative_operand
,value_reg_limit
,adjusts_stack_in_block
,split_load
,arm_jump_table_data_block_limit
,flags_and_jump_pair
,stack_def_use.live_var_used_in_block
,litpool_confidence
,reg_def_use.used_in_block
,jump_table_element_access
,__agg_single6
,stack_def_use.defined_in_block
,stack_def_use.live_var_at_prior_used
,plt_entry
,reg_def_use.return_block_end
,nop_in_padding_candidate
,compare_and_jump_immediate
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- string_candidate_refined(EA:address, End:address, Encoding:symbol)
Used by:
string
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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
,code_in_block
,exception_section
,is_padding
,jump_table_start
,litpool_ref
,loaded_section
,may_have_symbolic_immediate
,npad
,relocation
,special_data_section
,symbol_minus_symbol_litpool_access_pattern
,symbolic_operand_candidate
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- data_object_conflict(ea:address, size:unsigned, type:symbol, ea2:address, size2:unsigned, type2:symbol)
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- discarded_data_object(ea:address, size:unsigned, type:symbol)
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- data_object(ea:address, size:unsigned, type:symbol)
Used by:
string
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- after_address_in_data(EA:address, EA_next:address)
Uses:
address_in_data_refined
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- next_address_in_data(EA:address, EA_next:address)
Uses:
address_in_data_refined
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- 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:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- label_conflict(EA:address, Size:unsigned, Kind:symbol)
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol
- data_object_total_points(EA:address, Size:unsigned, Type:symbol, Points:number)
Recursive:
resolved_transfer
,+disconnected6
,data_limit_after_access
,jump_table
,symbol_score
,discarded_data_object
,symbolic_expr_attribute
,split_block
,labeled_data_candidate
,data_limit
,code_in_split_block
,symbolic_operand
,best_func_symbol
,code_in_refined_block
,after_address_in_data
,refined_block
,inferred_special_symbol
,got_reference
,data_object
,address_array_aux
,symbolic_operand_attribute
,+disconnected3
,preferred_data_access
,string_candidate
,moved_displacement_candidate
,+disconnected2
,address_array
,discarded_jump_table_entry
,data_object_point
,moved_label
,moved_data_label
,symbol_minus_symbol_candidate
,function_inference.function_entry
,data_object_conflict
,relative_jump_table_entry
,base_relative_symbolic_operand
,data_object_candidate
,string_candidate_refined
,value_reg_address_before
,moved_label_candidate
,+disconnected1
,block_needs_merging
,data_access_limit
,symbolic_data
,boundary_sym_expr
,symbolic_operand_point
,symbolic_expr
,moved_pc_relative_candidate
,block_needs_splitting_at
,labeled_ea
,label_conflict
,data_object_total_points
,next_address_in_data
,code_pointer_in_data
,inferred_main_function
,symbolic_expr_symbol_minus_symbol
,main_function
,symbol_minus_symbol_from_relocation
,symbol_minus_symbol
,next_data_limit
,best_symexpr_symbol