angr 9.2.118__py3-none-manylinux2014_x86_64.whl → 9.2.120__py3-none-manylinux2014_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of angr might be problematic. Click here for more details.
- angr/__init__.py +217 -2
- angr/__main__.py +14 -4
- angr/analyses/__init__.py +54 -0
- angr/analyses/analysis.py +47 -5
- angr/analyses/backward_slice.py +4 -4
- angr/analyses/bindiff.py +2 -2
- angr/analyses/callee_cleanup_finder.py +1 -1
- angr/analyses/calling_convention.py +21 -15
- angr/analyses/cdg.py +1 -1
- angr/analyses/cfg/__init__.py +12 -1
- angr/analyses/cfg/cfb.py +2 -2
- angr/analyses/cfg/cfg.py +1 -1
- angr/analyses/cfg/cfg_base.py +28 -11
- angr/analyses/cfg/cfg_emulated.py +18 -18
- angr/analyses/cfg/cfg_fast.py +136 -24
- angr/analyses/cfg/cfg_fast_soot.py +5 -5
- angr/analyses/cfg/cfg_job_base.py +3 -3
- angr/analyses/cfg/indirect_jump_resolvers/__init__.py +13 -0
- angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +1 -1
- angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +2 -2
- angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +4 -4
- angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +21 -18
- angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +5 -5
- angr/analyses/cfg/indirect_jump_resolvers/resolver.py +2 -2
- angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +1 -1
- angr/analyses/cfg_slice_to_sink/__init__.py +8 -0
- angr/analyses/class_identifier.py +2 -2
- angr/analyses/code_tagging.py +2 -2
- angr/analyses/complete_calling_conventions.py +3 -3
- angr/analyses/congruency_check.py +1 -2
- angr/analyses/data_dep/__init__.py +13 -0
- angr/analyses/data_dep/data_dependency_analysis.py +5 -5
- angr/analyses/datagraph_meta.py +1 -1
- angr/analyses/ddg.py +3 -3
- angr/analyses/decompiler/__init__.py +25 -0
- angr/analyses/decompiler/ail_simplifier.py +9 -9
- angr/analyses/decompiler/block_simplifier.py +3 -3
- angr/analyses/decompiler/callsite_maker.py +5 -3
- angr/analyses/decompiler/clinic.py +46 -36
- angr/analyses/decompiler/condition_processor.py +48 -21
- angr/analyses/decompiler/counters/__init__.py +11 -0
- angr/analyses/decompiler/decompiler.py +27 -10
- angr/analyses/decompiler/dephication/seqnode_dephication.py +19 -1
- angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +1 -1
- angr/analyses/decompiler/optimization_passes/__init__.py +66 -54
- angr/analyses/decompiler/optimization_passes/const_derefs.py +1 -1
- angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +3 -3
- angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +1 -1
- angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +3 -0
- angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +7 -4
- angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +13 -9
- angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +1 -1
- angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +1 -1
- angr/analyses/decompiler/optimization_passes/engine_base.py +2 -2
- angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +2 -2
- angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +4 -4
- angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +19 -19
- angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +6 -6
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py +2 -2
- angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +7 -3
- angr/analyses/decompiler/optimization_passes/optimization_pass.py +34 -28
- angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +2 -2
- angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +1 -1
- angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -3
- angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +5 -5
- angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -1
- angr/analyses/decompiler/peephole_optimizations/__init__.py +61 -19
- angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +1 -1
- angr/analyses/decompiler/presets/__init__.py +20 -0
- angr/analyses/decompiler/presets/basic.py +30 -0
- angr/analyses/decompiler/presets/fast.py +54 -0
- angr/analyses/decompiler/presets/full.py +64 -0
- angr/analyses/decompiler/presets/preset.py +37 -0
- angr/analyses/decompiler/region_identifier.py +21 -7
- angr/analyses/decompiler/region_simplifiers/__init__.py +3 -0
- angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +3 -3
- angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +3 -3
- angr/analyses/decompiler/region_simplifiers/expr_folding.py +2 -2
- angr/analyses/decompiler/region_simplifiers/goto.py +3 -3
- angr/analyses/decompiler/region_simplifiers/if_.py +2 -2
- angr/analyses/decompiler/region_simplifiers/ifelse.py +4 -4
- angr/analyses/decompiler/region_simplifiers/loop.py +4 -4
- angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -1
- angr/analyses/decompiler/region_simplifiers/region_simplifier.py +6 -6
- angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -5
- angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +3 -3
- angr/analyses/decompiler/sequence_walker.py +11 -12
- angr/analyses/decompiler/structured_codegen/__init__.py +14 -0
- angr/analyses/decompiler/structured_codegen/base.py +1 -1
- angr/analyses/decompiler/structured_codegen/c.py +22 -15
- angr/analyses/decompiler/structured_codegen/dwarf_import.py +2 -2
- angr/analyses/decompiler/structuring/__init__.py +11 -1
- angr/analyses/decompiler/structuring/dream.py +16 -15
- angr/analyses/decompiler/structuring/phoenix.py +9 -9
- angr/analyses/decompiler/structuring/recursive_structurer.py +7 -7
- angr/analyses/decompiler/structuring/sailr.py +2 -2
- angr/analyses/decompiler/structuring/structurer_base.py +9 -4
- angr/analyses/decompiler/structuring/structurer_nodes.py +18 -9
- angr/analyses/decompiler/utils.py +4 -2
- angr/analyses/disassembly.py +6 -6
- angr/analyses/disassembly_utils.py +1 -1
- angr/analyses/dominance_frontier.py +1 -1
- angr/analyses/find_objects_static.py +5 -5
- angr/analyses/flirt.py +3 -3
- angr/analyses/forward_analysis/__init__.py +9 -0
- angr/analyses/forward_analysis/forward_analysis.py +4 -4
- angr/analyses/forward_analysis/job_info.py +1 -1
- angr/analyses/forward_analysis/visitors/__init__.py +9 -0
- angr/analyses/forward_analysis/visitors/graph.py +2 -2
- angr/analyses/identifier/__init__.py +3 -0
- angr/analyses/identifier/custom_callable.py +2 -3
- angr/analyses/identifier/errors.py +1 -1
- angr/analyses/identifier/functions/__init__.py +4 -4
- angr/analyses/identifier/functions/atoi.py +1 -1
- angr/analyses/identifier/functions/based_atoi.py +1 -1
- angr/analyses/identifier/functions/fdprintf.py +1 -1
- angr/analyses/identifier/functions/free.py +2 -2
- angr/analyses/identifier/functions/int2str.py +1 -1
- angr/analyses/identifier/functions/malloc.py +2 -2
- angr/analyses/identifier/functions/memcmp.py +1 -1
- angr/analyses/identifier/functions/memcpy.py +3 -3
- angr/analyses/identifier/functions/memset.py +1 -1
- angr/analyses/identifier/functions/printf.py +1 -1
- angr/analyses/identifier/functions/recv_until.py +2 -2
- angr/analyses/identifier/functions/skip_calloc.py +2 -2
- angr/analyses/identifier/functions/skip_realloc.py +2 -2
- angr/analyses/identifier/functions/skip_recv_n.py +1 -1
- angr/analyses/identifier/functions/snprintf.py +1 -1
- angr/analyses/identifier/functions/sprintf.py +1 -1
- angr/analyses/identifier/functions/strcmp.py +1 -1
- angr/analyses/identifier/functions/strcpy.py +1 -1
- angr/analyses/identifier/functions/strlen.py +1 -1
- angr/analyses/identifier/functions/strncmp.py +1 -1
- angr/analyses/identifier/functions/strncpy.py +1 -1
- angr/analyses/identifier/functions/strtol.py +1 -1
- angr/analyses/identifier/identify.py +3 -3
- angr/analyses/identifier/runner.py +6 -6
- angr/analyses/init_finder.py +1 -1
- angr/analyses/loop_analysis.py +2 -2
- angr/analyses/propagator/__init__.py +3 -0
- angr/analyses/propagator/engine_ail.py +6 -5
- angr/analyses/propagator/engine_base.py +2 -2
- angr/analyses/propagator/engine_vex.py +2 -2
- angr/analyses/propagator/outdated_definition_walker.py +3 -3
- angr/analyses/propagator/propagator.py +3 -3
- angr/analyses/propagator/top_checker_mixin.py +1 -1
- angr/analyses/proximity_graph.py +3 -3
- angr/analyses/reaching_definitions/__init__.py +6 -6
- angr/analyses/reaching_definitions/dep_graph.py +5 -5
- angr/analyses/reaching_definitions/engine_ail.py +8 -8
- angr/analyses/reaching_definitions/engine_vex.py +18 -13
- angr/analyses/reaching_definitions/function_handler.py +6 -2
- angr/analyses/reaching_definitions/heap_allocator.py +3 -3
- angr/analyses/reaching_definitions/rd_state.py +4 -10
- angr/analyses/reaching_definitions/reaching_definitions.py +11 -11
- angr/analyses/reaching_definitions/subject.py +3 -3
- angr/analyses/reassembler.py +5 -5
- angr/analyses/{s_propagator/s_propagator.py → s_propagator.py} +1 -1
- angr/analyses/s_reaching_definitions/__init__.py +11 -1
- angr/analyses/s_reaching_definitions/s_rda_model.py +117 -0
- angr/analyses/s_reaching_definitions/s_rda_view.py +213 -0
- angr/analyses/s_reaching_definitions/s_reaching_definitions.py +159 -0
- angr/analyses/stack_pointer_tracker.py +34 -16
- angr/analyses/static_hooker.py +2 -2
- angr/analyses/typehoon/__init__.py +3 -0
- angr/analyses/typehoon/lifter.py +1 -1
- angr/analyses/typehoon/translator.py +21 -4
- angr/analyses/typehoon/typeconsts.py +8 -0
- angr/analyses/typehoon/typehoon.py +3 -3
- angr/analyses/variable_recovery/__init__.py +6 -0
- angr/analyses/variable_recovery/engine_ail.py +5 -5
- angr/analyses/variable_recovery/engine_base.py +7 -7
- angr/analyses/variable_recovery/engine_vex.py +14 -17
- angr/analyses/variable_recovery/variable_recovery.py +5 -5
- angr/analyses/variable_recovery/variable_recovery_base.py +7 -7
- angr/analyses/variable_recovery/variable_recovery_fast.py +7 -7
- angr/analyses/veritesting.py +8 -8
- angr/analyses/vfg.py +13 -13
- angr/analyses/vsa_ddg.py +3 -3
- angr/analyses/vtable.py +1 -1
- angr/analyses/xrefs.py +3 -3
- angr/angrdb/__init__.py +3 -0
- angr/angrdb/db.py +2 -2
- angr/angrdb/serializers/__init__.py +7 -0
- angr/angrdb/serializers/cfg_model.py +2 -2
- angr/angrdb/serializers/comments.py +2 -2
- angr/angrdb/serializers/funcs.py +2 -2
- angr/angrdb/serializers/kb.py +2 -2
- angr/angrdb/serializers/labels.py +2 -2
- angr/angrdb/serializers/loader.py +2 -2
- angr/angrdb/serializers/structured_code.py +4 -4
- angr/angrdb/serializers/variables.py +3 -3
- angr/angrdb/serializers/xrefs.py +2 -2
- angr/calling_conventions.py +69 -24
- angr/concretization_strategies/__init__.py +17 -0
- angr/concretization_strategies/max.py +1 -1
- angr/concretization_strategies/norepeats.py +3 -3
- angr/concretization_strategies/norepeats_range.py +1 -1
- angr/distributed/__init__.py +6 -1
- angr/distributed/server.py +0 -1
- angr/distributed/worker.py +6 -4
- angr/engines/__init__.py +25 -0
- angr/engines/concrete.py +2 -3
- angr/engines/engine.py +3 -3
- angr/engines/failure.py +2 -2
- angr/engines/light/__init__.py +12 -0
- angr/engines/light/data.py +1 -1
- angr/engines/light/engine.py +12 -17
- angr/engines/pcode/__init__.py +7 -1
- angr/engines/pcode/behavior.py +1 -1
- angr/engines/pcode/cc.py +1 -1
- angr/engines/pcode/emulate.py +4 -4
- angr/engines/pcode/engine.py +5 -5
- angr/engines/pcode/lifter.py +7 -7
- angr/engines/procedure.py +3 -3
- angr/engines/soot/__init__.py +3 -0
- angr/engines/soot/engine.py +13 -13
- angr/engines/soot/expressions/__init__.py +33 -0
- angr/engines/soot/expressions/arrayref.py +1 -1
- angr/engines/soot/expressions/base.py +1 -1
- angr/engines/soot/expressions/cast.py +1 -1
- angr/engines/soot/expressions/condition.py +2 -2
- angr/engines/soot/expressions/constants.py +1 -1
- angr/engines/soot/expressions/invoke.py +2 -2
- angr/engines/soot/expressions/new.py +1 -1
- angr/engines/soot/expressions/newArray.py +1 -1
- angr/engines/soot/expressions/newMultiArray.py +1 -1
- angr/engines/soot/statements/__init__.py +16 -0
- angr/engines/soot/statements/assign.py +1 -1
- angr/engines/soot/statements/base.py +3 -3
- angr/engines/soot/statements/goto.py +1 -1
- angr/engines/soot/statements/if_.py +1 -1
- angr/engines/soot/statements/throw.py +1 -1
- angr/engines/soot/values/__init__.py +14 -0
- angr/engines/soot/values/arrayref.py +1 -1
- angr/engines/soot/values/instancefieldref.py +1 -1
- angr/engines/soot/values/staticfieldref.py +1 -1
- angr/engines/soot/values/thisref.py +2 -2
- angr/engines/successors.py +8 -8
- angr/engines/syscall.py +1 -1
- angr/engines/unicorn.py +13 -13
- angr/engines/vex/__init__.py +18 -3
- angr/engines/vex/claripy/__init__.py +3 -0
- angr/engines/vex/claripy/ccall.py +1 -2
- angr/engines/vex/claripy/datalayer.py +3 -3
- angr/engines/vex/heavy/__init__.py +11 -1
- angr/engines/vex/heavy/heavy.py +8 -8
- angr/engines/vex/heavy/inspect.py +2 -2
- angr/engines/vex/heavy/resilience.py +2 -2
- angr/engines/vex/heavy/super_fastpath.py +3 -3
- angr/engines/vex/lifter.py +5 -5
- angr/engines/vex/light/__init__.py +7 -0
- angr/engines/vex/light/light.py +2 -2
- angr/engines/vex/light/slicing.py +1 -1
- angr/errors.py +4 -4
- angr/exploration_techniques/__init__.py +0 -1
- angr/exploration_techniques/bucketizer.py +9 -10
- angr/exploration_techniques/common.py +2 -2
- angr/exploration_techniques/director.py +4 -4
- angr/exploration_techniques/driller_core.py +2 -3
- angr/exploration_techniques/explorer.py +3 -3
- angr/exploration_techniques/loop_seer.py +3 -3
- angr/exploration_techniques/oppologist.py +3 -3
- angr/exploration_techniques/slicecutor.py +1 -1
- angr/exploration_techniques/spiller.py +1 -1
- angr/exploration_techniques/suggestions.py +6 -6
- angr/exploration_techniques/symbion.py +0 -1
- angr/exploration_techniques/threading.py +2 -2
- angr/exploration_techniques/tracer.py +3 -3
- angr/exploration_techniques/veritesting.py +1 -1
- angr/flirt/__init__.py +0 -1
- angr/{knowledge_base/knowledge_base.py → knowledge_base.py} +13 -15
- angr/knowledge_plugins/__init__.py +23 -1
- angr/knowledge_plugins/callsite_prototypes.py +2 -2
- angr/knowledge_plugins/cfg/cfg_manager.py +1 -1
- angr/knowledge_plugins/cfg/cfg_model.py +8 -7
- angr/knowledge_plugins/cfg/indirect_jump.py +1 -1
- angr/knowledge_plugins/cfg/memory_data.py +3 -2
- angr/knowledge_plugins/debug_variables.py +2 -2
- angr/knowledge_plugins/functions/__init__.py +6 -0
- angr/knowledge_plugins/functions/function.py +21 -16
- angr/knowledge_plugins/functions/function_manager.py +2 -2
- angr/knowledge_plugins/functions/function_parser.py +3 -3
- angr/knowledge_plugins/functions/soot_function.py +2 -2
- angr/knowledge_plugins/key_definitions/atoms.py +2 -2
- angr/knowledge_plugins/key_definitions/definition.py +3 -3
- angr/knowledge_plugins/key_definitions/key_definition_manager.py +2 -2
- angr/knowledge_plugins/key_definitions/uses.py +2 -2
- angr/knowledge_plugins/propagations/__init__.py +7 -0
- angr/knowledge_plugins/propagations/prop_value.py +1 -1
- angr/knowledge_plugins/{structured_code/manager.py → structured_code.py} +6 -3
- angr/knowledge_plugins/types.py +1 -1
- angr/knowledge_plugins/variables/__init__.py +6 -0
- angr/knowledge_plugins/variables/variable_access.py +3 -3
- angr/knowledge_plugins/variables/variable_manager.py +7 -7
- angr/knowledge_plugins/xrefs/__init__.py +9 -1
- angr/knowledge_plugins/xrefs/xref.py +5 -5
- angr/knowledge_plugins/xrefs/xref_manager.py +3 -3
- angr/misc/__init__.py +12 -2
- angr/misc/loggers.py +2 -2
- angr/misc/telemetry.py +54 -0
- angr/procedures/__init__.py +9 -0
- angr/procedures/cgc/receive.py +2 -2
- angr/procedures/cgc/transmit.py +1 -1
- angr/procedures/definitions/__init__.py +8 -8
- angr/procedures/definitions/cgc.py +1 -1
- angr/procedures/definitions/glibc.py +2 -15
- angr/procedures/definitions/gnulib.py +2 -6
- angr/procedures/definitions/libstdcpp.py +2 -2
- angr/procedures/definitions/linux_kernel.py +2 -3
- angr/procedures/definitions/linux_loader.py +1 -1
- angr/procedures/definitions/msvcr.py +2 -2
- angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +3 -18
- angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +3 -18
- angr/procedures/definitions/wdk_clfs.py +3 -18
- angr/procedures/definitions/wdk_fltmgr.py +3 -18
- angr/procedures/definitions/wdk_fwpkclnt.py +3 -18
- angr/procedures/definitions/wdk_fwpuclnt.py +3 -18
- angr/procedures/definitions/wdk_gdi32.py +3 -18
- angr/procedures/definitions/wdk_hal.py +3 -18
- angr/procedures/definitions/wdk_ksecdd.py +3 -18
- angr/procedures/definitions/wdk_ndis.py +3 -18
- angr/procedures/definitions/wdk_ntoskrnl.py +3 -18
- angr/procedures/definitions/wdk_offreg.py +3 -18
- angr/procedures/definitions/wdk_pshed.py +3 -18
- angr/procedures/definitions/wdk_secur32.py +3 -18
- angr/procedures/definitions/wdk_vhfum.py +3 -18
- angr/procedures/definitions/win32_aclui.py +3 -18
- angr/procedures/definitions/win32_activeds.py +3 -18
- angr/procedures/definitions/win32_advapi32.py +3 -18
- angr/procedures/definitions/win32_advpack.py +3 -18
- angr/procedures/definitions/win32_amsi.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +3 -18
- angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +3 -3
- angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +3 -18
- angr/procedures/definitions/win32_apphelp.py +3 -18
- angr/procedures/definitions/win32_authz.py +3 -18
- angr/procedures/definitions/win32_avicap32.py +3 -18
- angr/procedures/definitions/win32_avifil32.py +3 -18
- angr/procedures/definitions/win32_avrt.py +3 -18
- angr/procedures/definitions/win32_bcp47mrm.py +3 -18
- angr/procedures/definitions/win32_bcrypt.py +3 -18
- angr/procedures/definitions/win32_bcryptprimitives.py +3 -18
- angr/procedures/definitions/win32_bluetoothapis.py +3 -18
- angr/procedures/definitions/win32_bthprops.py +3 -3
- angr/procedures/definitions/win32_bthprops_cpl.py +3 -18
- angr/procedures/definitions/win32_cabinet.py +3 -18
- angr/procedures/definitions/win32_certadm.py +3 -18
- angr/procedures/definitions/win32_certpoleng.py +3 -18
- angr/procedures/definitions/win32_cfgmgr32.py +3 -18
- angr/procedures/definitions/win32_chakra.py +3 -18
- angr/procedures/definitions/win32_cldapi.py +3 -18
- angr/procedures/definitions/win32_clfsw32.py +3 -18
- angr/procedures/definitions/win32_clusapi.py +3 -18
- angr/procedures/definitions/win32_comctl32.py +3 -18
- angr/procedures/definitions/win32_comdlg32.py +3 -18
- angr/procedures/definitions/win32_compstui.py +3 -18
- angr/procedures/definitions/win32_computecore.py +3 -18
- angr/procedures/definitions/win32_computenetwork.py +3 -18
- angr/procedures/definitions/win32_computestorage.py +3 -18
- angr/procedures/definitions/win32_comsvcs.py +3 -18
- angr/procedures/definitions/win32_coremessaging.py +3 -3
- angr/procedures/definitions/win32_credui.py +3 -18
- angr/procedures/definitions/win32_crypt32.py +3 -18
- angr/procedures/definitions/win32_cryptnet.py +3 -18
- angr/procedures/definitions/win32_cryptui.py +3 -18
- angr/procedures/definitions/win32_cryptxml.py +3 -18
- angr/procedures/definitions/win32_cscapi.py +3 -18
- angr/procedures/definitions/win32_d2d1.py +3 -18
- angr/procedures/definitions/win32_d3d10.py +3 -18
- angr/procedures/definitions/win32_d3d10_1.py +3 -18
- angr/procedures/definitions/win32_d3d11.py +3 -18
- angr/procedures/definitions/win32_d3d12.py +3 -18
- angr/procedures/definitions/win32_d3d9.py +3 -18
- angr/procedures/definitions/win32_d3dcompiler_47.py +3 -18
- angr/procedures/definitions/win32_d3dcsx.py +3 -18
- angr/procedures/definitions/win32_davclnt.py +3 -18
- angr/procedures/definitions/win32_dbgeng.py +3 -18
- angr/procedures/definitions/win32_dbghelp.py +3 -18
- angr/procedures/definitions/win32_dbgmodel.py +3 -18
- angr/procedures/definitions/win32_dciman32.py +3 -18
- angr/procedures/definitions/win32_dcomp.py +3 -18
- angr/procedures/definitions/win32_ddraw.py +3 -18
- angr/procedures/definitions/win32_deviceaccess.py +3 -18
- angr/procedures/definitions/win32_dflayout.py +3 -18
- angr/procedures/definitions/win32_dhcpcsvc.py +3 -18
- angr/procedures/definitions/win32_dhcpcsvc6.py +3 -18
- angr/procedures/definitions/win32_dhcpsapi.py +3 -18
- angr/procedures/definitions/win32_diagnosticdataquery.py +3 -18
- angr/procedures/definitions/win32_dinput8.py +3 -18
- angr/procedures/definitions/win32_directml.py +3 -18
- angr/procedures/definitions/win32_dmprocessxmlfiltered.py +3 -18
- angr/procedures/definitions/win32_dnsapi.py +3 -18
- angr/procedures/definitions/win32_drt.py +3 -18
- angr/procedures/definitions/win32_drtprov.py +3 -18
- angr/procedures/definitions/win32_drttransport.py +3 -18
- angr/procedures/definitions/win32_dsound.py +3 -18
- angr/procedures/definitions/win32_dsparse.py +3 -18
- angr/procedures/definitions/win32_dsprop.py +3 -18
- angr/procedures/definitions/win32_dssec.py +3 -18
- angr/procedures/definitions/win32_dsuiext.py +3 -18
- angr/procedures/definitions/win32_dwmapi.py +3 -18
- angr/procedures/definitions/win32_dwrite.py +3 -18
- angr/procedures/definitions/win32_dxcompiler.py +3 -18
- angr/procedures/definitions/win32_dxcore.py +3 -18
- angr/procedures/definitions/win32_dxgi.py +3 -18
- angr/procedures/definitions/win32_dxva2.py +3 -18
- angr/procedures/definitions/win32_eappcfg.py +3 -18
- angr/procedures/definitions/win32_eappprxy.py +3 -18
- angr/procedures/definitions/win32_efswrt.py +3 -18
- angr/procedures/definitions/win32_elscore.py +3 -18
- angr/procedures/definitions/win32_esent.py +3 -18
- angr/procedures/definitions/win32_evr.py +3 -18
- angr/procedures/definitions/win32_faultrep.py +3 -18
- angr/procedures/definitions/win32_fhsvcctl.py +3 -18
- angr/procedures/definitions/win32_firewallapi.py +3 -18
- angr/procedures/definitions/win32_fltlib.py +3 -18
- angr/procedures/definitions/win32_fontsub.py +3 -18
- angr/procedures/definitions/win32_forceinline.py +3 -18
- angr/procedures/definitions/win32_fwpuclnt.py +3 -18
- angr/procedures/definitions/win32_fxsutility.py +3 -18
- angr/procedures/definitions/win32_gdi32.py +3 -18
- angr/procedures/definitions/win32_gdiplus.py +3 -18
- angr/procedures/definitions/win32_glu32.py +3 -18
- angr/procedures/definitions/win32_gpedit.py +3 -18
- angr/procedures/definitions/win32_hhctrl_ocx.py +3 -18
- angr/procedures/definitions/win32_hid.py +3 -18
- angr/procedures/definitions/win32_hlink.py +3 -18
- angr/procedures/definitions/win32_hrtfapo.py +3 -18
- angr/procedures/definitions/win32_httpapi.py +3 -18
- angr/procedures/definitions/win32_icm32.py +3 -18
- angr/procedures/definitions/win32_icmui.py +3 -18
- angr/procedures/definitions/win32_icu.py +3 -18
- angr/procedures/definitions/win32_ieframe.py +3 -18
- angr/procedures/definitions/win32_imagehlp.py +3 -18
- angr/procedures/definitions/win32_imgutil.py +3 -18
- angr/procedures/definitions/win32_imm32.py +3 -18
- angr/procedures/definitions/win32_infocardapi.py +3 -18
- angr/procedures/definitions/win32_inkobjcore.py +3 -18
- angr/procedures/definitions/win32_iphlpapi.py +3 -18
- angr/procedures/definitions/win32_iscsidsc.py +3 -18
- angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +3 -18
- angr/procedures/definitions/win32_kernel32.py +3 -18
- angr/procedures/definitions/win32_kernelbase.py +3 -18
- angr/procedures/definitions/win32_keycredmgr.py +3 -18
- angr/procedures/definitions/win32_ksproxy_ax.py +3 -18
- angr/procedures/definitions/win32_ksuser.py +3 -18
- angr/procedures/definitions/win32_ktmw32.py +3 -18
- angr/procedures/definitions/win32_licenseprotection.py +3 -18
- angr/procedures/definitions/win32_loadperf.py +3 -18
- angr/procedures/definitions/win32_magnification.py +3 -18
- angr/procedures/definitions/win32_mapi32.py +3 -18
- angr/procedures/definitions/win32_mdmlocalmanagement.py +3 -18
- angr/procedures/definitions/win32_mdmregistration.py +3 -18
- angr/procedures/definitions/win32_mf.py +3 -18
- angr/procedures/definitions/win32_mfcore.py +3 -18
- angr/procedures/definitions/win32_mfplat.py +3 -18
- angr/procedures/definitions/win32_mfplay.py +3 -18
- angr/procedures/definitions/win32_mfreadwrite.py +3 -18
- angr/procedures/definitions/win32_mfsensorgroup.py +3 -18
- angr/procedures/definitions/win32_mfsrcsnk.py +3 -18
- angr/procedures/definitions/win32_mgmtapi.py +3 -18
- angr/procedures/definitions/win32_mi.py +3 -18
- angr/procedures/definitions/win32_mmdevapi.py +3 -18
- angr/procedures/definitions/win32_mpr.py +3 -18
- angr/procedures/definitions/win32_mprapi.py +3 -18
- angr/procedures/definitions/win32_mqrt.py +3 -18
- angr/procedures/definitions/win32_mrmsupport.py +3 -18
- angr/procedures/definitions/win32_msacm32.py +3 -18
- angr/procedures/definitions/win32_msajapi.py +3 -18
- angr/procedures/definitions/win32_mscms.py +3 -18
- angr/procedures/definitions/win32_mscoree.py +3 -18
- angr/procedures/definitions/win32_msctfmonitor.py +3 -18
- angr/procedures/definitions/win32_msdelta.py +3 -18
- angr/procedures/definitions/win32_msdmo.py +3 -18
- angr/procedures/definitions/win32_msdrm.py +3 -18
- angr/procedures/definitions/win32_msi.py +3 -18
- angr/procedures/definitions/win32_msimg32.py +3 -18
- angr/procedures/definitions/win32_mspatcha.py +3 -18
- angr/procedures/definitions/win32_mspatchc.py +3 -18
- angr/procedures/definitions/win32_msports.py +3 -18
- angr/procedures/definitions/win32_msrating.py +3 -18
- angr/procedures/definitions/win32_mssign32.py +3 -18
- angr/procedures/definitions/win32_mstask.py +3 -18
- angr/procedures/definitions/win32_msvfw32.py +3 -18
- angr/procedures/definitions/win32_mswsock.py +3 -18
- angr/procedures/definitions/win32_mtxdm.py +3 -18
- angr/procedures/definitions/win32_ncrypt.py +3 -18
- angr/procedures/definitions/win32_ndfapi.py +3 -18
- angr/procedures/definitions/win32_netapi32.py +3 -18
- angr/procedures/definitions/win32_netsh.py +3 -18
- angr/procedures/definitions/win32_netshell.py +3 -18
- angr/procedures/definitions/win32_newdev.py +3 -18
- angr/procedures/definitions/win32_ninput.py +3 -18
- angr/procedures/definitions/win32_normaliz.py +3 -18
- angr/procedures/definitions/win32_ntdll.py +3 -18
- angr/procedures/definitions/win32_ntdllk.py +3 -18
- angr/procedures/definitions/win32_ntdsapi.py +3 -18
- angr/procedures/definitions/win32_ntlanman.py +3 -18
- angr/procedures/definitions/win32_odbc32.py +3 -18
- angr/procedures/definitions/win32_odbcbcp.py +3 -18
- angr/procedures/definitions/win32_ole32.py +3 -18
- angr/procedures/definitions/win32_oleacc.py +3 -18
- angr/procedures/definitions/win32_oleaut32.py +3 -18
- angr/procedures/definitions/win32_oledlg.py +3 -18
- angr/procedures/definitions/win32_ondemandconnroutehelper.py +3 -18
- angr/procedures/definitions/win32_opengl32.py +3 -18
- angr/procedures/definitions/win32_opmxbox.py +3 -18
- angr/procedures/definitions/win32_p2p.py +3 -18
- angr/procedures/definitions/win32_p2pgraph.py +3 -18
- angr/procedures/definitions/win32_pdh.py +3 -18
- angr/procedures/definitions/win32_peerdist.py +3 -18
- angr/procedures/definitions/win32_powrprof.py +3 -18
- angr/procedures/definitions/win32_prntvpt.py +3 -18
- angr/procedures/definitions/win32_projectedfslib.py +3 -18
- angr/procedures/definitions/win32_propsys.py +3 -18
- angr/procedures/definitions/win32_psapi.py +3 -18
- angr/procedures/definitions/win32_quartz.py +3 -18
- angr/procedures/definitions/win32_query.py +3 -18
- angr/procedures/definitions/win32_qwave.py +3 -18
- angr/procedures/definitions/win32_rasapi32.py +3 -18
- angr/procedures/definitions/win32_rasdlg.py +3 -18
- angr/procedures/definitions/win32_resutils.py +3 -18
- angr/procedures/definitions/win32_rometadata.py +3 -3
- angr/procedures/definitions/win32_rpcns4.py +3 -18
- angr/procedures/definitions/win32_rpcproxy.py +3 -18
- angr/procedures/definitions/win32_rpcrt4.py +3 -18
- angr/procedures/definitions/win32_rstrtmgr.py +3 -18
- angr/procedures/definitions/win32_rtm.py +3 -18
- angr/procedures/definitions/win32_rtutils.py +3 -18
- angr/procedures/definitions/win32_rtworkq.py +3 -18
- angr/procedures/definitions/win32_sas.py +3 -18
- angr/procedures/definitions/win32_scarddlg.py +3 -18
- angr/procedures/definitions/win32_schannel.py +3 -18
- angr/procedures/definitions/win32_sechost.py +3 -18
- angr/procedures/definitions/win32_secur32.py +3 -18
- angr/procedures/definitions/win32_sensapi.py +3 -18
- angr/procedures/definitions/win32_sensorsutilsv2.py +3 -18
- angr/procedures/definitions/win32_setupapi.py +3 -18
- angr/procedures/definitions/win32_sfc.py +3 -18
- angr/procedures/definitions/win32_shdocvw.py +3 -18
- angr/procedures/definitions/win32_shell32.py +3 -18
- angr/procedures/definitions/win32_shlwapi.py +3 -18
- angr/procedures/definitions/win32_slc.py +3 -18
- angr/procedures/definitions/win32_slcext.py +3 -18
- angr/procedures/definitions/win32_slwga.py +3 -18
- angr/procedures/definitions/win32_snmpapi.py +3 -18
- angr/procedures/definitions/win32_spoolss.py +3 -18
- angr/procedures/definitions/win32_srclient.py +3 -18
- angr/procedures/definitions/win32_srpapi.py +3 -18
- angr/procedures/definitions/win32_sspicli.py +3 -18
- angr/procedures/definitions/win32_sti.py +3 -18
- angr/procedures/definitions/win32_t2embed.py +3 -18
- angr/procedures/definitions/win32_tapi32.py +3 -18
- angr/procedures/definitions/win32_tbs.py +3 -18
- angr/procedures/definitions/win32_tdh.py +3 -18
- angr/procedures/definitions/win32_tokenbinding.py +3 -18
- angr/procedures/definitions/win32_traffic.py +3 -18
- angr/procedures/definitions/win32_txfw32.py +3 -18
- angr/procedures/definitions/win32_ualapi.py +3 -18
- angr/procedures/definitions/win32_uiautomationcore.py +3 -18
- angr/procedures/definitions/win32_urlmon.py +3 -18
- angr/procedures/definitions/win32_user32.py +4 -19
- angr/procedures/definitions/win32_userenv.py +3 -18
- angr/procedures/definitions/win32_usp10.py +3 -18
- angr/procedures/definitions/win32_uxtheme.py +3 -18
- angr/procedures/definitions/win32_verifier.py +3 -18
- angr/procedures/definitions/win32_version.py +3 -18
- angr/procedures/definitions/win32_vertdll.py +3 -18
- angr/procedures/definitions/win32_virtdisk.py +3 -18
- angr/procedures/definitions/win32_vmdevicehost.py +3 -18
- angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +3 -18
- angr/procedures/definitions/win32_vssapi.py +3 -18
- angr/procedures/definitions/win32_wcmapi.py +3 -18
- angr/procedures/definitions/win32_wdsbp.py +3 -18
- angr/procedures/definitions/win32_wdsclientapi.py +3 -18
- angr/procedures/definitions/win32_wdsmc.py +3 -18
- angr/procedures/definitions/win32_wdspxe.py +3 -18
- angr/procedures/definitions/win32_wdstptc.py +3 -18
- angr/procedures/definitions/win32_webauthn.py +3 -18
- angr/procedures/definitions/win32_webservices.py +3 -18
- angr/procedures/definitions/win32_websocket.py +3 -18
- angr/procedures/definitions/win32_wecapi.py +3 -18
- angr/procedures/definitions/win32_wer.py +3 -18
- angr/procedures/definitions/win32_wevtapi.py +3 -18
- angr/procedures/definitions/win32_winbio.py +3 -18
- angr/procedures/definitions/win32_windows_ai_machinelearning.py +3 -18
- angr/procedures/definitions/win32_windows_data_pdf.py +3 -3
- angr/procedures/definitions/win32_windows_media_mediacontrol.py +3 -18
- angr/procedures/definitions/win32_windows_networking.py +3 -18
- angr/procedures/definitions/win32_windows_ui_xaml.py +3 -18
- angr/procedures/definitions/win32_windowscodecs.py +3 -18
- angr/procedures/definitions/win32_winfax.py +3 -18
- angr/procedures/definitions/win32_winhttp.py +3 -18
- angr/procedures/definitions/win32_winhvemulation.py +3 -18
- angr/procedures/definitions/win32_winhvplatform.py +3 -18
- angr/procedures/definitions/win32_wininet.py +3 -18
- angr/procedures/definitions/win32_winml.py +3 -18
- angr/procedures/definitions/win32_winmm.py +3 -18
- angr/procedures/definitions/win32_winscard.py +3 -18
- angr/procedures/definitions/win32_winspool.py +3 -3
- angr/procedures/definitions/win32_winspool_drv.py +3 -18
- angr/procedures/definitions/win32_wintrust.py +3 -18
- angr/procedures/definitions/win32_winusb.py +3 -18
- angr/procedures/definitions/win32_wlanapi.py +3 -18
- angr/procedures/definitions/win32_wlanui.py +3 -18
- angr/procedures/definitions/win32_wldap32.py +3 -18
- angr/procedures/definitions/win32_wldp.py +3 -18
- angr/procedures/definitions/win32_wmvcore.py +3 -18
- angr/procedures/definitions/win32_wnvapi.py +3 -18
- angr/procedures/definitions/win32_wofutil.py +3 -18
- angr/procedures/definitions/win32_ws2_32.py +3 -18
- angr/procedures/definitions/win32_wscapi.py +3 -18
- angr/procedures/definitions/win32_wsclient.py +3 -18
- angr/procedures/definitions/win32_wsdapi.py +3 -18
- angr/procedures/definitions/win32_wsmsvc.py +3 -18
- angr/procedures/definitions/win32_wsnmp32.py +3 -18
- angr/procedures/definitions/win32_wtsapi32.py +3 -18
- angr/procedures/definitions/win32_xaudio2_8.py +3 -18
- angr/procedures/definitions/win32_xinput1_4.py +3 -18
- angr/procedures/definitions/win32_xinputuap.py +3 -3
- angr/procedures/definitions/win32_xmllite.py +3 -18
- angr/procedures/definitions/win32_xolehlp.py +3 -18
- angr/procedures/definitions/win32_xpsprint.py +3 -18
- angr/procedures/glibc/scanf.py +2 -2
- angr/procedures/glibc/sscanf.py +1 -1
- angr/procedures/java/__init__.py +6 -3
- angr/procedures/java/unconstrained.py +4 -4
- angr/procedures/java_io/read.py +1 -1
- angr/procedures/java_io/write.py +1 -1
- angr/procedures/java_jni/__init__.py +25 -17
- angr/procedures/java_jni/array_operations.py +2 -2
- angr/procedures/java_jni/field_access.py +3 -3
- angr/procedures/java_jni/method_calls.py +2 -2
- angr/procedures/java_jni/object_operations.py +1 -1
- angr/procedures/java_jni/string_operations.py +2 -2
- angr/procedures/java_lang/character.py +1 -1
- angr/procedures/java_lang/double.py +2 -2
- angr/procedures/java_lang/exit.py +1 -1
- angr/procedures/java_lang/getsimplename.py +1 -1
- angr/procedures/java_lang/integer.py +2 -2
- angr/procedures/java_lang/load_library.py +1 -1
- angr/procedures/java_lang/math.py +1 -1
- angr/procedures/java_lang/string.py +4 -4
- angr/procedures/java_lang/stringbuilder.py +2 -2
- angr/procedures/java_lang/system.py +1 -1
- angr/procedures/java_util/collection.py +2 -2
- angr/procedures/java_util/iterator.py +2 -2
- angr/procedures/java_util/list.py +3 -3
- angr/procedures/java_util/map.py +3 -3
- angr/procedures/java_util/random.py +1 -1
- angr/procedures/java_util/scanner_nextline.py +3 -3
- angr/procedures/libc/fseek.py +1 -1
- angr/procedures/libc/memcpy.py +1 -1
- angr/procedures/libc/strlen.py +12 -4
- angr/procedures/libc/strncmp.py +9 -4
- angr/procedures/linux_kernel/iovec.py +3 -3
- angr/procedures/linux_kernel/mmap.py +1 -1
- angr/procedures/linux_kernel/stat.py +1 -1
- angr/procedures/linux_kernel/sysinfo.py +1 -1
- angr/procedures/linux_kernel/vsyscall.py +1 -1
- angr/procedures/posix/bzero.py +1 -1
- angr/procedures/posix/mmap.py +1 -1
- angr/procedures/posix/send.py +1 -1
- angr/procedures/posix/syslog.py +2 -3
- angr/procedures/procedure_dict.py +2 -2
- angr/procedures/stubs/Redirect.py +1 -1
- angr/procedures/stubs/UserHook.py +1 -1
- angr/procedures/stubs/format_parser.py +6 -6
- angr/procedures/tracer/random.py +1 -1
- angr/procedures/tracer/receive.py +1 -1
- angr/procedures/tracer/transmit.py +1 -1
- angr/procedures/uclibc/__uClibc_main.py +1 -1
- angr/protos/__init__.py +8 -0
- angr/sim_options.py +0 -4
- angr/sim_procedure.py +5 -5
- angr/sim_state.py +21 -34
- angr/sim_type.py +51 -18
- angr/simos/__init__.py +12 -0
- angr/simos/cgc.py +5 -5
- angr/simos/javavm.py +18 -23
- angr/simos/linux.py +6 -6
- angr/simos/simos.py +12 -16
- angr/simos/userland.py +3 -3
- angr/simos/windows.py +6 -11
- angr/state_hierarchy.py +1 -1
- angr/state_plugins/__init__.py +84 -28
- angr/state_plugins/callstack.py +1 -1
- angr/state_plugins/concrete.py +3 -4
- angr/state_plugins/filesystem.py +3 -3
- angr/state_plugins/gdb.py +1 -1
- angr/state_plugins/heap/__init__.py +14 -5
- angr/state_plugins/heap/heap_base.py +5 -4
- angr/state_plugins/heap/heap_brk.py +1 -1
- angr/state_plugins/heap/heap_freelist.py +1 -1
- angr/state_plugins/heap/heap_ptmalloc.py +2 -20
- angr/state_plugins/heap/utils.py +1 -1
- angr/state_plugins/history.py +2 -2
- angr/state_plugins/javavm_classloader.py +3 -3
- angr/state_plugins/jni_references.py +1 -1
- angr/state_plugins/light_registers.py +3 -3
- angr/state_plugins/log.py +1 -1
- angr/state_plugins/plugin.py +3 -2
- angr/state_plugins/posix.py +3 -3
- angr/state_plugins/preconstrainer.py +6 -6
- angr/state_plugins/scratch.py +4 -4
- angr/state_plugins/sim_action_object.py +1 -1
- angr/state_plugins/solver.py +15 -19
- angr/state_plugins/symbolizer.py +2 -3
- angr/state_plugins/trace_additions.py +8 -8
- angr/state_plugins/uc_manager.py +1 -1
- angr/state_plugins/unicorn_engine.py +4 -4
- angr/state_plugins/view.py +1 -1
- angr/storage/__init__.py +9 -3
- angr/storage/file.py +16 -16
- angr/storage/memory_mixins/__init__.py +88 -6
- angr/storage/memory_mixins/actions_mixin.py +3 -3
- angr/storage/memory_mixins/address_concretization_mixin.py +6 -6
- angr/storage/memory_mixins/bvv_conversion_mixin.py +1 -1
- angr/storage/memory_mixins/clouseau_mixin.py +1 -1
- angr/storage/memory_mixins/convenient_mappings_mixin.py +8 -10
- angr/storage/memory_mixins/default_filler_mixin.py +3 -3
- angr/storage/memory_mixins/hex_dumper_mixin.py +1 -1
- angr/storage/memory_mixins/{javavm_memory/javavm_memory_mixin.py → javavm_memory_mixin.py} +15 -12
- angr/storage/memory_mixins/{keyvalue_memory/keyvalue_memory_mixin.py → keyvalue_memory_mixin.py} +11 -6
- angr/storage/memory_mixins/multi_value_merger_mixin.py +5 -5
- angr/storage/memory_mixins/name_resolution_mixin.py +2 -2
- angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +1 -1
- angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -1
- angr/storage/memory_mixins/paged_memory/pages/__init__.py +15 -0
- angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +1 -1
- angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +2 -2
- angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +2 -2
- angr/storage/memory_mixins/regioned_memory/__init__.py +10 -0
- angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +1 -1
- angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -1
- angr/storage/memory_mixins/regioned_memory/region_data.py +2 -2
- angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +1 -1
- angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +4 -4
- angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +7 -19
- angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +1 -1
- angr/storage/memory_mixins/simple_interface_mixin.py +1 -1
- angr/storage/memory_mixins/simplification_mixin.py +1 -1
- angr/storage/memory_mixins/size_resolution_mixin.py +2 -2
- angr/storage/memory_mixins/slotted_memory.py +1 -1
- angr/storage/memory_mixins/smart_find_mixin.py +3 -3
- angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
- angr/storage/memory_mixins/unwrapper_mixin.py +1 -1
- angr/storage/memory_object.py +8 -10
- angr/utils/__init__.py +12 -0
- angr/utils/enums_conv.py +1 -1
- angr/utils/library.py +2 -2
- angr/utils/mp.py +1 -1
- angr/utils/timing.py +30 -18
- {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/METADATA +8 -7
- angr-9.2.120.dist-info/RECORD +1340 -0
- angr/analyses/s_liveness/__init__.py +0 -2
- angr/analyses/s_propagator/__init__.py +0 -2
- angr/analyses/s_reaching_definitions/s_rda.py +0 -479
- angr/knowledge_base/__init__.py +0 -2
- angr/knowledge_plugins/structured_code/__init__.py +0 -2
- angr/knowledge_plugins/sync/__init__.py +0 -2
- angr/knowledge_plugins/sync/sync_controller.py +0 -324
- angr/misc/range.py +0 -24
- angr/misc/weakpatch.py +0 -59
- angr/storage/memory_mixins/javavm_memory/__init__.py +0 -2
- angr/storage/memory_mixins/keyvalue_memory/__init__.py +0 -2
- angr/storage/pcap.py +0 -65
- angr/utils/typing.py +0 -18
- angr-9.2.118.dist-info/RECORD +0 -1344
- /angr/analyses/{s_liveness/s_liveness.py → s_liveness.py} +0 -0
- {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/LICENSE +0 -0
- {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/WHEEL +0 -0
- {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/entry_points.txt +0 -0
- {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/top_level.txt +0 -0
angr/analyses/cfg/cfg_base.py
CHANGED
|
@@ -748,7 +748,8 @@ class CFGBase(Analysis):
|
|
|
748
748
|
# Get all executable sections
|
|
749
749
|
for section in b.sections:
|
|
750
750
|
if section.is_executable:
|
|
751
|
-
|
|
751
|
+
max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
|
|
752
|
+
tpl = (section.min_addr, max_mapped_addr)
|
|
752
753
|
sections.append(tpl)
|
|
753
754
|
memory_regions += sections
|
|
754
755
|
|
|
@@ -756,7 +757,8 @@ class CFGBase(Analysis):
|
|
|
756
757
|
# Get all executable segments
|
|
757
758
|
for segment in b.segments:
|
|
758
759
|
if segment.is_executable:
|
|
759
|
-
|
|
760
|
+
max_mapped_addr = segment.min_addr + min(segment.memsize, segment.filesize)
|
|
761
|
+
tpl = (segment.min_addr, max_mapped_addr)
|
|
760
762
|
segments.append(tpl)
|
|
761
763
|
if sections and segments:
|
|
762
764
|
# are there executable segments with no sections inside?
|
|
@@ -770,7 +772,8 @@ class CFGBase(Analysis):
|
|
|
770
772
|
elif isinstance(b, (Coff, PE)):
|
|
771
773
|
for section in b.sections:
|
|
772
774
|
if section.is_executable:
|
|
773
|
-
|
|
775
|
+
max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
|
|
776
|
+
tpl = (section.min_addr, max_mapped_addr)
|
|
774
777
|
memory_regions.append(tpl)
|
|
775
778
|
|
|
776
779
|
elif isinstance(b, XBE):
|
|
@@ -781,7 +784,7 @@ class CFGBase(Analysis):
|
|
|
781
784
|
and not section.is_writable
|
|
782
785
|
and section.name not in {".data", ".rdata", ".rodata"}
|
|
783
786
|
):
|
|
784
|
-
tpl = (section.min_addr, section.max_addr
|
|
787
|
+
tpl = (section.min_addr, section.max_addr)
|
|
785
788
|
memory_regions.append(tpl)
|
|
786
789
|
|
|
787
790
|
elif isinstance(b, MachO):
|
|
@@ -791,7 +794,8 @@ class CFGBase(Analysis):
|
|
|
791
794
|
if seg.is_executable:
|
|
792
795
|
# Take all sections from this segment (MachO style)
|
|
793
796
|
for section in seg.sections:
|
|
794
|
-
|
|
797
|
+
max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
|
|
798
|
+
tpl = (section.min_addr, max_mapped_addr)
|
|
795
799
|
memory_regions.append(tpl)
|
|
796
800
|
|
|
797
801
|
elif isinstance(b, (Hex, SRec)):
|
|
@@ -1313,6 +1317,23 @@ class CFGBase(Analysis):
|
|
|
1313
1317
|
|
|
1314
1318
|
if new_node is None:
|
|
1315
1319
|
# Create a new one
|
|
1320
|
+
|
|
1321
|
+
instruction_addrs = []
|
|
1322
|
+
for ins_addr in n.instruction_addrs:
|
|
1323
|
+
if n.addr <= ins_addr < n.addr + new_size:
|
|
1324
|
+
instruction_addrs.append(ins_addr)
|
|
1325
|
+
elif ins_addr == n.addr + new_size:
|
|
1326
|
+
break
|
|
1327
|
+
elif ins_addr > n.addr + new_size:
|
|
1328
|
+
# the immediate next instruction does not start right after the new node. this means we break
|
|
1329
|
+
# an existing instruction in the middle! we need to drop the last instruction address from
|
|
1330
|
+
# instruction_addrs.
|
|
1331
|
+
instruction_addrs.pop()
|
|
1332
|
+
break
|
|
1333
|
+
else:
|
|
1334
|
+
# should not happen if the instruction_addrs list is normal...
|
|
1335
|
+
break
|
|
1336
|
+
|
|
1316
1337
|
if self.tag == "CFGFast":
|
|
1317
1338
|
new_node = CFGNode(
|
|
1318
1339
|
n.addr,
|
|
@@ -1320,7 +1341,7 @@ class CFGBase(Analysis):
|
|
|
1320
1341
|
self.model,
|
|
1321
1342
|
function_address=n.function_address,
|
|
1322
1343
|
block_id=n.block_id,
|
|
1323
|
-
instruction_addrs=
|
|
1344
|
+
instruction_addrs=instruction_addrs,
|
|
1324
1345
|
thumb=n.thumb,
|
|
1325
1346
|
)
|
|
1326
1347
|
elif self.tag == "CFGEmulated":
|
|
@@ -1331,16 +1352,12 @@ class CFGBase(Analysis):
|
|
|
1331
1352
|
callstack_key=callstack_key,
|
|
1332
1353
|
function_address=n.function_address,
|
|
1333
1354
|
block_id=n.block_id,
|
|
1334
|
-
instruction_addrs=
|
|
1355
|
+
instruction_addrs=instruction_addrs,
|
|
1335
1356
|
thumb=n.thumb,
|
|
1336
1357
|
)
|
|
1337
1358
|
else:
|
|
1338
1359
|
raise ValueError(f"Unknown tag {self.tag}.")
|
|
1339
1360
|
|
|
1340
|
-
# Copy instruction addresses
|
|
1341
|
-
new_node.instruction_addrs = [
|
|
1342
|
-
ins_addr for ins_addr in n.instruction_addrs if ins_addr < n.addr + new_size
|
|
1343
|
-
]
|
|
1344
1361
|
# Put the new node into end_addresses list
|
|
1345
1362
|
if key in smallest_nodes:
|
|
1346
1363
|
end_addresses_to_nodes[key].add(smallest_nodes[key])
|
|
@@ -14,15 +14,15 @@ from archinfo import ArchARM
|
|
|
14
14
|
from angr.analyses import ForwardAnalysis
|
|
15
15
|
from angr.utils.graph import GraphUtils
|
|
16
16
|
from angr.analyses import AnalysesHub
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
20
|
-
from
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
24
|
-
from
|
|
25
|
-
from
|
|
17
|
+
from angr import BP, BP_BEFORE, BP_AFTER, SIM_PROCEDURES, procedures
|
|
18
|
+
from angr import options as o
|
|
19
|
+
from angr.codenode import BlockNode
|
|
20
|
+
from angr.engines.procedure import ProcedureEngine
|
|
21
|
+
from angr.exploration_techniques.loop_seer import LoopSeer
|
|
22
|
+
from angr.exploration_techniques.slicecutor import Slicecutor
|
|
23
|
+
from angr.exploration_techniques.explorer import Explorer
|
|
24
|
+
from angr.exploration_techniques.lengthlimiter import LengthLimiter
|
|
25
|
+
from angr.errors import (
|
|
26
26
|
AngrCFGError,
|
|
27
27
|
AngrError,
|
|
28
28
|
AngrSkipJobNotice,
|
|
@@ -34,15 +34,15 @@ from ...errors import (
|
|
|
34
34
|
AngrExitError,
|
|
35
35
|
SimEmptyCallStackError,
|
|
36
36
|
)
|
|
37
|
-
from
|
|
38
|
-
from
|
|
39
|
-
from
|
|
40
|
-
from
|
|
41
|
-
from
|
|
42
|
-
from
|
|
43
|
-
from
|
|
44
|
-
from
|
|
45
|
-
from
|
|
37
|
+
from angr.sim_state import SimState
|
|
38
|
+
from angr.state_plugins.callstack import CallStack
|
|
39
|
+
from angr.state_plugins.sim_action import SimActionData
|
|
40
|
+
from angr.knowledge_plugins.cfg import CFGENode, IndirectJump
|
|
41
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
42
|
+
from angr.analyses.cdg import CDG
|
|
43
|
+
from angr.analyses.ddg import DDG
|
|
44
|
+
from angr.analyses.backward_slice import BackwardSlice
|
|
45
|
+
from angr.analyses.loopfinder import LoopFinder, Loop
|
|
46
46
|
from .cfg_base import CFGBase
|
|
47
47
|
from .cfg_job_base import BlockID, CFGJobBase
|
|
48
48
|
import contextlib
|
angr/analyses/cfg/cfg_fast.py
CHANGED
|
@@ -1049,15 +1049,14 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
1049
1049
|
# no wide string is found
|
|
1050
1050
|
return 0
|
|
1051
1051
|
|
|
1052
|
-
def _scan_for_repeating_bytes(self, start_addr, repeating_byte, threshold=2):
|
|
1052
|
+
def _scan_for_repeating_bytes(self, start_addr: int, repeating_byte: int, threshold: int = 2) -> int:
|
|
1053
1053
|
"""
|
|
1054
1054
|
Scan from a given address and determine the occurrences of a given byte.
|
|
1055
1055
|
|
|
1056
|
-
:param
|
|
1057
|
-
:param
|
|
1058
|
-
:param
|
|
1059
|
-
:return:
|
|
1060
|
-
:rtype: int
|
|
1056
|
+
:param start_addr: The address in memory to start scanning.
|
|
1057
|
+
:param repeating_byte: The repeating byte to scan for.
|
|
1058
|
+
:param threshold: The minimum occurrences.
|
|
1059
|
+
:return: The occurrences of a given byte.
|
|
1061
1060
|
"""
|
|
1062
1061
|
|
|
1063
1062
|
addr = start_addr
|
|
@@ -1078,6 +1077,70 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
1078
1077
|
return repeating_length
|
|
1079
1078
|
return 0
|
|
1080
1079
|
|
|
1080
|
+
def _scan_for_consecutive_pointers(self, start_addr: int, threshold: int = 2) -> int:
|
|
1081
|
+
"""
|
|
1082
|
+
Scan from a given address and determine if there are at least `threshold` of pointers.
|
|
1083
|
+
|
|
1084
|
+
This function will yield high numbers of false positives if the mapped memory regions are too low (for example,
|
|
1085
|
+
<= 0x100000). It is recommended to set `threshold` to a higher value in such cases.
|
|
1086
|
+
|
|
1087
|
+
:param start_addr: The address to start scanning from.
|
|
1088
|
+
:param threshold: The minimum number of pointers to be found.
|
|
1089
|
+
:return: The number of pointers found.
|
|
1090
|
+
"""
|
|
1091
|
+
|
|
1092
|
+
current_object = self.project.loader.find_object_containing(start_addr)
|
|
1093
|
+
addr = start_addr
|
|
1094
|
+
pointer_count = 0
|
|
1095
|
+
pointer_size = self.project.arch.bytes
|
|
1096
|
+
|
|
1097
|
+
while self._inside_regions(addr):
|
|
1098
|
+
val = self._fast_memory_load_pointer(addr)
|
|
1099
|
+
if val is None:
|
|
1100
|
+
break
|
|
1101
|
+
obj = self.project.loader.find_object_containing(val)
|
|
1102
|
+
if obj is not None and obj is current_object:
|
|
1103
|
+
pointer_count += 1
|
|
1104
|
+
else:
|
|
1105
|
+
break
|
|
1106
|
+
addr += pointer_size
|
|
1107
|
+
|
|
1108
|
+
if pointer_count >= threshold:
|
|
1109
|
+
return pointer_count
|
|
1110
|
+
return 0
|
|
1111
|
+
|
|
1112
|
+
def _scan_for_mixed_pointers(self, start_addr: int, threshold: int = 3, window: int = 6) -> int:
|
|
1113
|
+
"""
|
|
1114
|
+
Scan from a given address and determine if there are at least `threshold` of pointers within a given window of pointers.
|
|
1115
|
+
|
|
1116
|
+
This function will yield high numbers of false positives if the mapped memory regions are too low (for example,
|
|
1117
|
+
<= 0x100000). It is recommended to set `threshold` to a higher value in such cases.
|
|
1118
|
+
|
|
1119
|
+
:param start_addr: The address to start scanning from.
|
|
1120
|
+
:param threshold: The minimum number of pointers to be found.
|
|
1121
|
+
:return: The number of pointers found.
|
|
1122
|
+
"""
|
|
1123
|
+
|
|
1124
|
+
current_object = self.project.loader.find_object_containing(start_addr)
|
|
1125
|
+
addr = start_addr
|
|
1126
|
+
ctr = 0
|
|
1127
|
+
pointer_count = 0
|
|
1128
|
+
pointer_size = self.project.arch.bytes
|
|
1129
|
+
|
|
1130
|
+
while self._inside_regions(addr) and ctr < window:
|
|
1131
|
+
ctr += 1
|
|
1132
|
+
val = self._fast_memory_load_pointer(addr)
|
|
1133
|
+
if val is None:
|
|
1134
|
+
break
|
|
1135
|
+
obj = self.project.loader.find_object_containing(val)
|
|
1136
|
+
if obj is not None and obj is current_object:
|
|
1137
|
+
pointer_count += 1
|
|
1138
|
+
addr += pointer_size
|
|
1139
|
+
|
|
1140
|
+
if pointer_count >= threshold:
|
|
1141
|
+
return ctr
|
|
1142
|
+
return 0
|
|
1143
|
+
|
|
1081
1144
|
def _next_code_addr_core(self):
|
|
1082
1145
|
"""
|
|
1083
1146
|
Call _next_unscanned_addr() first to get the next address that is not scanned. Then check if data locates at
|
|
@@ -1091,35 +1154,83 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
1091
1154
|
start_addr = next_addr
|
|
1092
1155
|
|
|
1093
1156
|
while True:
|
|
1094
|
-
string_length =
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
start_addr
|
|
1157
|
+
pointer_length, string_length, cc_length = 0, 0, 0
|
|
1158
|
+
matched_something = False
|
|
1159
|
+
|
|
1160
|
+
if start_addr % self.project.arch.bytes == 0:
|
|
1161
|
+
# find potential pointer array
|
|
1162
|
+
threshold = 6 if start_addr <= 0x100000 else 1
|
|
1163
|
+
pointer_count = self._scan_for_consecutive_pointers(start_addr, threshold=threshold)
|
|
1164
|
+
pointer_length = pointer_count * self.project.arch.bytes
|
|
1165
|
+
|
|
1166
|
+
if pointer_length:
|
|
1167
|
+
matched_something = True
|
|
1168
|
+
self._seg_list.occupy(start_addr, pointer_length, "pointer-array")
|
|
1169
|
+
self.model.memory_data[start_addr] = MemoryData(
|
|
1170
|
+
start_addr, pointer_length, MemoryDataSort.PointerArray
|
|
1171
|
+
)
|
|
1172
|
+
start_addr += pointer_length
|
|
1173
|
+
|
|
1174
|
+
elif start_addr <= 0x100000:
|
|
1175
|
+
# for high addresses, all pointers have been found in _scan_for_consecutive_pointers() because we
|
|
1176
|
+
# set threshold there to 1
|
|
1177
|
+
threshold = 4
|
|
1178
|
+
pointer_count = self._scan_for_mixed_pointers(start_addr, threshold=threshold, window=6)
|
|
1179
|
+
pointer_length = pointer_count * self.project.arch.bytes
|
|
1180
|
+
|
|
1181
|
+
if pointer_length:
|
|
1182
|
+
matched_something = True
|
|
1183
|
+
self._seg_list.occupy(start_addr, pointer_length, "pointer-array")
|
|
1184
|
+
self.model.memory_data[start_addr] = MemoryData(
|
|
1185
|
+
start_addr, pointer_length, MemoryDataSort.PointerArray
|
|
1186
|
+
)
|
|
1187
|
+
start_addr += pointer_length
|
|
1188
|
+
|
|
1189
|
+
if not matched_something:
|
|
1190
|
+
# find strings
|
|
1191
|
+
is_widestring = False
|
|
1192
|
+
string_length = self._scan_for_printable_strings(start_addr)
|
|
1193
|
+
if string_length == 0:
|
|
1194
|
+
is_widestring = True
|
|
1195
|
+
string_length = self._scan_for_printable_widestrings(start_addr)
|
|
1196
|
+
|
|
1197
|
+
if string_length:
|
|
1198
|
+
matched_something = True
|
|
1199
|
+
self._seg_list.occupy(start_addr, string_length, "string")
|
|
1200
|
+
md = MemoryData(
|
|
1201
|
+
start_addr,
|
|
1202
|
+
string_length,
|
|
1203
|
+
MemoryDataSort.String if not is_widestring else MemoryDataSort.UnicodeString,
|
|
1204
|
+
)
|
|
1205
|
+
md.fill_content(self.project.loader)
|
|
1206
|
+
self.model.memory_data[start_addr] = md
|
|
1207
|
+
start_addr += string_length
|
|
1101
1208
|
|
|
1102
|
-
if self.project.arch.name in
|
|
1209
|
+
if not matched_something and self.project.arch.name in {"X86", "AMD64"}:
|
|
1103
1210
|
cc_length = self._scan_for_repeating_bytes(start_addr, 0xCC, threshold=1)
|
|
1104
1211
|
if cc_length:
|
|
1212
|
+
matched_something = True
|
|
1105
1213
|
self._seg_list.occupy(start_addr, cc_length, "alignment")
|
|
1214
|
+
self.model.memory_data[start_addr] = MemoryData(start_addr, cc_length, MemoryDataSort.Alignment)
|
|
1106
1215
|
start_addr += cc_length
|
|
1107
|
-
else:
|
|
1108
|
-
cc_length = 0
|
|
1109
1216
|
|
|
1110
1217
|
zeros_length = self._scan_for_repeating_bytes(start_addr, 0x00)
|
|
1111
1218
|
if zeros_length:
|
|
1219
|
+
matched_something = True
|
|
1112
1220
|
self._seg_list.occupy(start_addr, zeros_length, "alignment")
|
|
1221
|
+
self.model.memory_data[start_addr] = MemoryData(start_addr, zeros_length, MemoryDataSort.Alignment)
|
|
1113
1222
|
start_addr += zeros_length
|
|
1114
1223
|
|
|
1115
|
-
if
|
|
1224
|
+
if not matched_something:
|
|
1116
1225
|
# umm now it's probably code
|
|
1117
1226
|
break
|
|
1118
1227
|
|
|
1119
1228
|
instr_alignment = self._initial_state.arch.instruction_alignment
|
|
1120
1229
|
if start_addr % instr_alignment > 0:
|
|
1121
1230
|
# occupy those few bytes
|
|
1122
|
-
|
|
1231
|
+
size = instr_alignment - (start_addr % instr_alignment)
|
|
1232
|
+
self._seg_list.occupy(start_addr, size, "alignment")
|
|
1233
|
+
self.model.memory_data[start_addr] = MemoryData(start_addr, size, MemoryDataSort.Unknown)
|
|
1123
1234
|
start_addr = start_addr - start_addr % instr_alignment + instr_alignment
|
|
1124
1235
|
# trickiness: aligning the start_addr may create a new address that is outside any mapped region.
|
|
1125
1236
|
if not self._inside_regions(start_addr):
|
|
@@ -3339,7 +3450,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
3339
3450
|
|
|
3340
3451
|
# next case - if b is directly from function prologue detection, or a basic block that is a successor of
|
|
3341
3452
|
# a wrongly identified basic block, we might be totally misdecoding b
|
|
3342
|
-
if b.instruction_addrs[0] not in a.instruction_addrs and b in self.graph:
|
|
3453
|
+
if (not b.instruction_addrs or b.instruction_addrs[0] not in a.instruction_addrs) and b in self.graph:
|
|
3343
3454
|
# use a, truncate b
|
|
3344
3455
|
|
|
3345
3456
|
new_b_addr = a.addr + a.size # b starts right after a terminates
|
|
@@ -4272,7 +4383,6 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
4272
4383
|
# Let's try to create the pyvex IRSB directly, since it's much faster
|
|
4273
4384
|
nodecode = False
|
|
4274
4385
|
irsb = None
|
|
4275
|
-
irsb_string = None
|
|
4276
4386
|
lifted_block = None
|
|
4277
4387
|
try:
|
|
4278
4388
|
lifted_block = self._lift(
|
|
@@ -4283,11 +4393,12 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
4283
4393
|
load_from_ro_regions=True,
|
|
4284
4394
|
initial_regs=initial_regs,
|
|
4285
4395
|
)
|
|
4286
|
-
irsb = lifted_block.vex_nostmt
|
|
4287
|
-
irsb_string = lifted_block.bytes[: irsb.size]
|
|
4396
|
+
irsb = lifted_block.vex_nostmt # may raise SimTranslationError
|
|
4288
4397
|
except SimTranslationError:
|
|
4289
4398
|
nodecode = True
|
|
4290
4399
|
|
|
4400
|
+
irsb_string: bytes = lifted_block.bytes[: irsb.size] if irsb is not None else lifted_block.bytes
|
|
4401
|
+
|
|
4291
4402
|
# special logic during the complete scanning phase
|
|
4292
4403
|
if cfg_job.job_type == CFGJobType.COMPLETE_SCANNING and is_arm_arch(self.project.arch):
|
|
4293
4404
|
# it's way too easy to incorrectly disassemble THUMB code contains 0x4f as ARM code svc?? #????
|
|
@@ -4324,10 +4435,11 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
4324
4435
|
initial_regs=initial_regs,
|
|
4325
4436
|
)
|
|
4326
4437
|
irsb = lifted_block.vex_nostmt
|
|
4327
|
-
irsb_string = lifted_block.bytes[: irsb.size]
|
|
4328
4438
|
except SimTranslationError:
|
|
4329
4439
|
nodecode = True
|
|
4330
4440
|
|
|
4441
|
+
irsb_string: bytes = lifted_block.bytes[: irsb.size] if irsb is not None else lifted_block.bytes
|
|
4442
|
+
|
|
4331
4443
|
if not (nodecode or irsb.size == 0 or irsb.jumpkind == "Ijk_NoDecode"):
|
|
4332
4444
|
# it is decodeable
|
|
4333
4445
|
if current_function_addr == addr:
|
|
@@ -4397,7 +4509,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
4397
4509
|
nodecode_size = 1
|
|
4398
4510
|
|
|
4399
4511
|
# special handling for ud, ud1, and ud2 on x86 and x86-64
|
|
4400
|
-
if irsb_string[-2:] == b"\x0f\x0b"
|
|
4512
|
+
if self.project.arch.name == "AMD64" and irsb_string[-2:] == b"\x0f\x0b":
|
|
4401
4513
|
# VEX supports ud2 and make it part of the block size, only in AMD64.
|
|
4402
4514
|
valid_ins = True
|
|
4403
4515
|
nodecode_size = 0
|
|
@@ -8,11 +8,11 @@ from copy import copy
|
|
|
8
8
|
|
|
9
9
|
from archinfo.arch_soot import SootMethodDescriptor, SootAddressDescriptor
|
|
10
10
|
|
|
11
|
-
from
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
15
|
-
from
|
|
11
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
12
|
+
from angr.errors import AngrCFGError, SimMemoryError, SimEngineError
|
|
13
|
+
from angr.codenode import HookNode, SootBlockNode
|
|
14
|
+
from angr.knowledge_plugins.cfg import CFGNode
|
|
15
|
+
from angr.analyses import register_analysis
|
|
16
16
|
from .cfg_fast import CFGFast, CFGJob, PendingJobs, FunctionTransitionEdge
|
|
17
17
|
|
|
18
18
|
l = logging.getLogger(name=__name__)
|
|
@@ -4,11 +4,11 @@ from typing import TYPE_CHECKING
|
|
|
4
4
|
|
|
5
5
|
from archinfo.arch_soot import SootAddressDescriptor
|
|
6
6
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
7
|
+
from angr.errors import SimValueError, SimSolverModeError
|
|
8
|
+
from angr.state_plugins.callstack import CallStack
|
|
9
9
|
|
|
10
10
|
if TYPE_CHECKING:
|
|
11
|
-
from
|
|
11
|
+
from angr.sim_state import SimState
|
|
12
12
|
l = logging.getLogger(name=__name__)
|
|
13
13
|
|
|
14
14
|
# TODO: Make callsite an object and use it in BlockID and FunctionKey
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from .mips_elf_fast import MipsElfFastResolver
|
|
3
4
|
from .x86_elf_pic_plt import X86ElfPicPltResolver
|
|
4
5
|
from .jumptable import JumpTableResolver
|
|
@@ -7,3 +8,15 @@ from .amd64_elf_got import AMD64ElfGotResolver
|
|
|
7
8
|
from .arm_elf_fast import ArmElfFastResolver
|
|
8
9
|
from .const_resolver import ConstantResolver
|
|
9
10
|
from .amd64_pe_iat import AMD64PeIatResolver
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
__all__ = (
|
|
14
|
+
"MipsElfFastResolver",
|
|
15
|
+
"X86ElfPicPltResolver",
|
|
16
|
+
"JumpTableResolver",
|
|
17
|
+
"X86PeIatResolver",
|
|
18
|
+
"AMD64ElfGotResolver",
|
|
19
|
+
"ArmElfFastResolver",
|
|
20
|
+
"ConstantResolver",
|
|
21
|
+
"AMD64PeIatResolver",
|
|
22
|
+
)
|
|
@@ -4,8 +4,8 @@ import logging
|
|
|
4
4
|
import archinfo
|
|
5
5
|
import pyvex
|
|
6
6
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
7
|
+
from angr.blade import Blade
|
|
8
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
9
9
|
from .resolver import IndirectJumpResolver
|
|
10
10
|
|
|
11
11
|
_l = logging.getLogger(name=__name__)
|
|
@@ -5,10 +5,10 @@ import logging
|
|
|
5
5
|
import claripy
|
|
6
6
|
import pyvex
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
8
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
9
|
+
from angr.code_location import CodeLocation
|
|
10
|
+
from angr.blade import Blade
|
|
11
|
+
from angr.analyses.propagator import vex_vars
|
|
12
12
|
from .resolver import IndirectJumpResolver
|
|
13
13
|
from .propagator_utils import PropagatorLoadCallback
|
|
14
14
|
|
|
@@ -11,27 +11,27 @@ import pyvex
|
|
|
11
11
|
import claripy
|
|
12
12
|
from archinfo.arch_arm import is_arm_arch
|
|
13
13
|
|
|
14
|
-
from
|
|
15
|
-
from
|
|
16
|
-
from
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
20
|
-
from
|
|
21
|
-
from
|
|
22
|
-
from
|
|
23
|
-
from
|
|
24
|
-
from
|
|
25
|
-
from
|
|
26
|
-
from
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
from
|
|
14
|
+
from angr import sim_options as o
|
|
15
|
+
from angr import BP, BP_BEFORE, BP_AFTER
|
|
16
|
+
from angr.misc.ux import once
|
|
17
|
+
from angr.code_location import CodeLocation
|
|
18
|
+
from angr.concretization_strategies import SimConcretizationStrategyAny
|
|
19
|
+
from angr.knowledge_plugins.cfg import IndirectJump, IndirectJumpType
|
|
20
|
+
from angr.engines.vex.claripy import ccall
|
|
21
|
+
from angr.engines.light import SimEngineLightVEXMixin, SimEngineLight, SpOffset, RegisterOffset
|
|
22
|
+
from angr.errors import AngrError, SimError
|
|
23
|
+
from angr.blade import Blade
|
|
24
|
+
from angr.annocfg import AnnotatedCFG
|
|
25
|
+
from angr.exploration_techniques.slicecutor import Slicecutor
|
|
26
|
+
from angr.exploration_techniques.local_loop_seer import LocalLoopSeer
|
|
27
|
+
from angr.exploration_techniques.explorer import Explorer
|
|
28
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
29
|
+
from angr.analyses.propagator.vex_vars import VEXReg
|
|
30
30
|
from .resolver import IndirectJumpResolver
|
|
31
31
|
from .propagator_utils import PropagatorLoadCallback
|
|
32
32
|
|
|
33
33
|
try:
|
|
34
|
-
from
|
|
34
|
+
from angr.engines import pcode
|
|
35
35
|
except ImportError:
|
|
36
36
|
pcode = None
|
|
37
37
|
|
|
@@ -1723,7 +1723,10 @@ class JumpTableResolver(IndirectJumpResolver):
|
|
|
1723
1723
|
all_targets = []
|
|
1724
1724
|
jump_table = []
|
|
1725
1725
|
|
|
1726
|
-
|
|
1726
|
+
try:
|
|
1727
|
+
jumptable_si = claripy.SI(bits=project.arch.bits, to_conv=jumptable_addr)
|
|
1728
|
+
except claripy.errors.BackendError:
|
|
1729
|
+
return None
|
|
1727
1730
|
|
|
1728
1731
|
# we may resolve a vtable (in C, e.g., the IO_JUMPS_FUNC in libc), but the stride of this load is usually 1
|
|
1729
1732
|
# while the read statement reads a word size at a time.
|
|
@@ -8,11 +8,11 @@ import claripy
|
|
|
8
8
|
import pyvex
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
from
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
15
|
-
from
|
|
11
|
+
from angr import options, BP_BEFORE
|
|
12
|
+
from angr.blade import Blade
|
|
13
|
+
from angr.annocfg import AnnotatedCFG
|
|
14
|
+
from angr.exploration_techniques import Slicecutor
|
|
15
|
+
from angr.utils.constants import DEFAULT_STATEMENT
|
|
16
16
|
from .resolver import IndirectJumpResolver
|
|
17
17
|
|
|
18
18
|
if TYPE_CHECKING:
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from .graph import slice_callgraph, slice_cfg_graph, slice_function_graph
|
|
3
4
|
from .cfg_slice_to_sink import CFGSliceToSink
|
|
5
|
+
|
|
6
|
+
__all__ = (
|
|
7
|
+
"CFGSliceToSink",
|
|
8
|
+
"slice_callgraph",
|
|
9
|
+
"slice_cfg_graph",
|
|
10
|
+
"slice_function_graph",
|
|
11
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from
|
|
3
|
-
from
|
|
2
|
+
from angr.sim_type import SimCppClass, SimTypeCppFunction
|
|
3
|
+
from angr.analyses import AnalysesHub
|
|
4
4
|
from . import Analysis, CFGFast, VtableFinder
|
|
5
5
|
|
|
6
6
|
|
angr/analyses/code_tagging.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
import pyvex
|
|
3
3
|
|
|
4
|
-
from
|
|
5
|
-
from
|
|
4
|
+
from angr.utils import looks_like_sql
|
|
5
|
+
from angr.knowledge_plugins.xrefs import XRef
|
|
6
6
|
from . import Analysis, AnalysesHub
|
|
7
7
|
|
|
8
8
|
|
|
@@ -14,8 +14,8 @@ import claripy
|
|
|
14
14
|
|
|
15
15
|
from angr.utils.graph import GraphUtils
|
|
16
16
|
from angr.simos import SimWindows
|
|
17
|
-
from
|
|
18
|
-
from
|
|
17
|
+
from angr.utils.mp import mp_context, Initializer
|
|
18
|
+
from angr.knowledge_plugins.cfg import CFGModel
|
|
19
19
|
from . import Analysis, register_analysis, VariableRecoveryFast, CallingConventionAnalysis
|
|
20
20
|
|
|
21
21
|
if TYPE_CHECKING:
|
|
@@ -185,7 +185,7 @@ class CompleteCallingConventionsAnalysis(Analysis):
|
|
|
185
185
|
if self._cc_callback is not None:
|
|
186
186
|
self._cc_callback(func_addr)
|
|
187
187
|
|
|
188
|
-
percentage = idx + 1 / total_funcs * 100.0
|
|
188
|
+
percentage = (idx + 1) / total_funcs * 100.0
|
|
189
189
|
self._update_progress(percentage, text=f"{idx + 1}/{total_funcs} - {func.demangled_name}")
|
|
190
190
|
if self._low_priority:
|
|
191
191
|
self._release_gil(idx + 1, 10, 0.000001)
|
|
@@ -6,7 +6,6 @@ import claripy
|
|
|
6
6
|
from . import Analysis
|
|
7
7
|
|
|
8
8
|
l = logging.getLogger(name=__name__)
|
|
9
|
-
# l.setLevel(logging.DEBUG)
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
class CongruencyCheck(Analysis):
|
|
@@ -373,7 +372,7 @@ class CongruencyCheck(Analysis):
|
|
|
373
372
|
return True
|
|
374
373
|
|
|
375
374
|
|
|
376
|
-
from
|
|
375
|
+
from angr.errors import AngrIncongruencyError
|
|
377
376
|
from angr.analyses import AnalysesHub
|
|
378
377
|
|
|
379
378
|
AnalysesHub.register_default("CongruencyCheck", CongruencyCheck)
|