angr 9.2.119__py3-none-win_amd64.whl → 9.2.120__py3-none-win_amd64.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 +8 -8
- 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 +1 -1
- 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 +8 -8
- angr/analyses/decompiler/block_simplifier.py +3 -3
- angr/analyses/decompiler/callsite_maker.py +5 -3
- angr/analyses/decompiler/clinic.py +25 -26
- angr/analyses/decompiler/condition_processor.py +7 -5
- angr/analyses/decompiler/counters/__init__.py +11 -0
- angr/analyses/decompiler/decompiler.py +24 -10
- angr/analyses/decompiler/dephication/seqnode_dephication.py +19 -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/duplication_reverter.py +7 -7
- 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/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 +13 -13
- angr/analyses/decompiler/structured_codegen/dwarf_import.py +2 -2
- angr/analyses/decompiler/structuring/__init__.py +11 -1
- angr/analyses/decompiler/structuring/dream.py +8 -8
- angr/analyses/decompiler/structuring/phoenix.py +6 -6
- 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 +4 -4
- 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/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 +5 -5
- 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 +2 -2
- 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 +7 -7
- 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/concretization_strategies/__init__.py +17 -0
- angr/concretization_strategies/max.py +1 -1
- 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 +1 -2
- 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 +6 -6
- 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 +3 -3
- 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 +8 -8
- 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 +1 -1
- 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/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 +7 -7
- angr/engines/syscall.py +1 -1
- angr/engines/unicorn.py +11 -11
- 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 +6 -6
- 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 +0 -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/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 +4 -4
- 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 +6 -6
- angr/knowledge_plugins/cfg/indirect_jump.py +1 -1
- angr/knowledge_plugins/cfg/memory_data.py +2 -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/lib/angr_native.dll +0 -0
- angr/misc/__init__.py +12 -2
- angr/misc/loggers.py +2 -2
- 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 +3 -3
- angr/procedures/java_io/read.py +1 -1
- angr/procedures/java_io/write.py +1 -1
- angr/procedures/java_jni/__init__.py +4 -4
- 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 +1 -1
- angr/procedures/java_lang/character.py +1 -1
- angr/procedures/java_lang/double.py +1 -1
- 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 +3 -3
- 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 +2 -2
- 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/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/format_parser.py +5 -5
- 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_type.py +9 -18
- angr/simos/__init__.py +12 -0
- angr/simos/cgc.py +5 -5
- angr/simos/javavm.py +12 -12
- angr/simos/linux.py +5 -5
- angr/simos/simos.py +11 -15
- angr/simos/userland.py +3 -3
- angr/simos/windows.py +5 -10
- 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 +4 -4
- angr/state_plugins/scratch.py +3 -3
- angr/state_plugins/sim_action_object.py +1 -1
- angr/state_plugins/solver.py +14 -18
- angr/state_plugins/symbolizer.py +2 -3
- 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 +4 -4
- angr/storage/memory_mixins/__init__.py +88 -6
- angr/storage/memory_mixins/actions_mixin.py +2 -2
- 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 +2 -2
- 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/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 +1 -1
- 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 +1 -1
- angr/storage/memory_mixins/slotted_memory.py +1 -1
- angr/storage/memory_mixins/smart_find_mixin.py +1 -1
- angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
- angr/storage/memory_mixins/unwrapper_mixin.py +1 -1
- angr/storage/memory_object.py +1 -1
- 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-9.2.119.dist-info → angr-9.2.120.dist-info}/METADATA +6 -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.119.dist-info/RECORD +0 -1345
- /angr/analyses/{s_liveness/s_liveness.py → s_liveness.py} +0 -0
- {angr-9.2.119.dist-info → angr-9.2.120.dist-info}/LICENSE +0 -0
- {angr-9.2.119.dist-info → angr-9.2.120.dist-info}/WHEEL +0 -0
- {angr-9.2.119.dist-info → angr-9.2.120.dist-info}/entry_points.txt +0 -0
- {angr-9.2.119.dist-info → angr-9.2.120.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
+
|
|
2
3
|
from .boolean_counter import BooleanCounter
|
|
3
4
|
from .call_counter import AILBlockCallCounter
|
|
4
5
|
from .seq_cf_structure_counter import ControlFlowStructureCounter
|
|
5
6
|
from .expression_counters import SingleExpressionCounter, RegisterExpressionCounter, OperatorCounter
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = (
|
|
10
|
+
"BooleanCounter",
|
|
11
|
+
"AILBlockCallCounter",
|
|
12
|
+
"ControlFlowStructureCounter",
|
|
13
|
+
"SingleExpressionCounter",
|
|
14
|
+
"RegisterExpressionCounter",
|
|
15
|
+
"OperatorCounter",
|
|
16
|
+
)
|
|
@@ -10,15 +10,14 @@ from cle import SymbolType
|
|
|
10
10
|
import ailment
|
|
11
11
|
|
|
12
12
|
from angr.analyses.cfg import CFGFast
|
|
13
|
-
from
|
|
14
|
-
from
|
|
15
|
-
from
|
|
16
|
-
from
|
|
17
|
-
from
|
|
13
|
+
from angr.knowledge_plugins.functions.function import Function
|
|
14
|
+
from angr.knowledge_base import KnowledgeBase
|
|
15
|
+
from angr.sim_variable import SimMemoryVariable, SimRegisterVariable, SimStackVariable
|
|
16
|
+
from angr.utils import timethis
|
|
17
|
+
from angr.analyses import Analysis, AnalysesHub
|
|
18
18
|
from .structuring import RecursiveStructurer, PhoenixStructurer, DEFAULT_STRUCTURER
|
|
19
19
|
from .region_identifier import RegionIdentifier
|
|
20
20
|
from .optimization_passes.optimization_pass import OptimizationPassStage
|
|
21
|
-
from .optimization_passes import get_default_optimization_passes
|
|
22
21
|
from .ailgraph_walker import AILGraphWalker
|
|
23
22
|
from .condition_processor import ConditionProcessor
|
|
24
23
|
from .decompilation_options import DecompilationOption
|
|
@@ -26,6 +25,7 @@ from .decompilation_cache import DecompilationCache
|
|
|
26
25
|
from .utils import remove_labels
|
|
27
26
|
from .sequence_walker import SequenceWalker
|
|
28
27
|
from .structuring.structurer_nodes import SequenceNode
|
|
28
|
+
from .presets import DECOMPILATION_PRESETS, DecompilationPreset
|
|
29
29
|
|
|
30
30
|
if TYPE_CHECKING:
|
|
31
31
|
from angr.knowledge_plugins.cfg.cfg_model import CFGModel
|
|
@@ -52,6 +52,7 @@ class Decompiler(Analysis):
|
|
|
52
52
|
func: Function | str | int,
|
|
53
53
|
cfg: CFGFast | CFGModel | None = None,
|
|
54
54
|
options=None,
|
|
55
|
+
preset: str | DecompilationPreset | None = None,
|
|
55
56
|
optimization_passes=None,
|
|
56
57
|
sp_tracker_track_memory=True,
|
|
57
58
|
variable_kb=None,
|
|
@@ -73,11 +74,21 @@ class Decompiler(Analysis):
|
|
|
73
74
|
self.func: Function = func
|
|
74
75
|
self._cfg = cfg.model if isinstance(cfg, CFGFast) else cfg
|
|
75
76
|
self._options = options
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
l.debug("Get %d optimization passes for the current binary.", len(self._optimization_passes))
|
|
79
|
-
else:
|
|
77
|
+
|
|
78
|
+
if preset is None and optimization_passes:
|
|
80
79
|
self._optimization_passes = optimization_passes
|
|
80
|
+
else:
|
|
81
|
+
# we use the preset
|
|
82
|
+
if isinstance(preset, str):
|
|
83
|
+
if preset not in DECOMPILATION_PRESETS:
|
|
84
|
+
raise KeyError(f"Decompilation preset {preset} is not found")
|
|
85
|
+
preset = DECOMPILATION_PRESETS[preset]
|
|
86
|
+
elif preset is None:
|
|
87
|
+
preset = DECOMPILATION_PRESETS["default"]
|
|
88
|
+
if not isinstance(preset, DecompilationPreset):
|
|
89
|
+
raise TypeError('"preset" must be a DecompilationPreset instance')
|
|
90
|
+
self._optimization_passes = preset.get_optimization_passes(self.project.arch, self.project.simos.name)
|
|
91
|
+
l.debug("Get %d optimization passes for the current binary.", len(self._optimization_passes))
|
|
81
92
|
self._sp_tracker_track_memory = sp_tracker_track_memory
|
|
82
93
|
self._peephole_optimizations = peephole_optimizations
|
|
83
94
|
self._vars_must_struct = vars_must_struct
|
|
@@ -299,6 +310,7 @@ class Decompiler(Analysis):
|
|
|
299
310
|
update_graph=update_graph,
|
|
300
311
|
force_loop_single_exit=self._force_loop_single_exit,
|
|
301
312
|
complete_successors=self._complete_successors,
|
|
313
|
+
entry_node_addr=self.clinic.entry_node_addr,
|
|
302
314
|
**self.options_to_params(self.options_by_class["region_identifier"]),
|
|
303
315
|
)
|
|
304
316
|
|
|
@@ -342,6 +354,7 @@ class Decompiler(Analysis):
|
|
|
342
354
|
graph=ail_graph,
|
|
343
355
|
variable_kb=self._variable_kb,
|
|
344
356
|
reaching_definitions=reaching_definitions,
|
|
357
|
+
entry_node_addr=self.clinic.entry_node_addr,
|
|
345
358
|
**kwargs,
|
|
346
359
|
)
|
|
347
360
|
|
|
@@ -400,6 +413,7 @@ class Decompiler(Analysis):
|
|
|
400
413
|
region_identifier=ri,
|
|
401
414
|
reaching_definitions=reaching_definitions,
|
|
402
415
|
vvar_id_start=self.vvar_id_start,
|
|
416
|
+
entry_node_addr=self.clinic.entry_node_addr,
|
|
403
417
|
**kwargs,
|
|
404
418
|
)
|
|
405
419
|
|
|
@@ -10,7 +10,7 @@ from ailment.expression import VirtualVariable, Phi
|
|
|
10
10
|
from angr.utils.ail import is_phi_assignment
|
|
11
11
|
from angr.knowledge_plugins.functions import Function
|
|
12
12
|
from angr.analyses import register_analysis
|
|
13
|
-
from angr.analyses.decompiler.structuring.structurer_nodes import SequenceNode
|
|
13
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import SequenceNode, LoopNode
|
|
14
14
|
from angr.analyses.decompiler.sequence_walker import SequenceWalker
|
|
15
15
|
from .dephication_base import DephicationBase
|
|
16
16
|
from .rewriting_engine import SimEngineDephiRewriting
|
|
@@ -57,6 +57,8 @@ class SeqNodeRewriter(SequenceWalker):
|
|
|
57
57
|
super().__init__(
|
|
58
58
|
handlers={
|
|
59
59
|
Block: self._handle_Block,
|
|
60
|
+
# statement handlers
|
|
61
|
+
Assignment: self._handle_Assignment,
|
|
60
62
|
}
|
|
61
63
|
)
|
|
62
64
|
|
|
@@ -68,6 +70,9 @@ class SeqNodeRewriter(SequenceWalker):
|
|
|
68
70
|
# nothing is changed during rewriting
|
|
69
71
|
self.output = seq_node
|
|
70
72
|
|
|
73
|
+
def _handle_Assignment(self, stmt: Assignment, **kwargs) -> Assignment: # pylint:disable=unused-argument
|
|
74
|
+
return self.engine._handle_Assignment(stmt)
|
|
75
|
+
|
|
71
76
|
def _handle_Block(self, block: Block, **kwargs) -> Block | None: # pylint:disable=unused-argument
|
|
72
77
|
self.engine.out_block = None
|
|
73
78
|
self.engine.process(None, block=block)
|
|
@@ -78,6 +83,19 @@ class SeqNodeRewriter(SequenceWalker):
|
|
|
78
83
|
return out
|
|
79
84
|
return None
|
|
80
85
|
|
|
86
|
+
def _handle_Loop(self, node: LoopNode, **kwargs):
|
|
87
|
+
new_loop = super()._handle_Loop(node, **kwargs)
|
|
88
|
+
changed = False
|
|
89
|
+
if new_loop is None:
|
|
90
|
+
new_loop = node
|
|
91
|
+
else:
|
|
92
|
+
changed = True
|
|
93
|
+
|
|
94
|
+
if is_phi_assignment(new_loop.initializer):
|
|
95
|
+
changed = True
|
|
96
|
+
new_loop.initializer = None
|
|
97
|
+
return new_loop if changed else None
|
|
98
|
+
|
|
81
99
|
|
|
82
100
|
class SeqNodeDephication(DephicationBase):
|
|
83
101
|
"""
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# pylint:disable=import-outside-toplevel
|
|
2
2
|
from __future__ import annotations
|
|
3
|
-
from typing import Optional, Union
|
|
4
3
|
|
|
5
4
|
from archinfo import Arch
|
|
6
5
|
|
|
@@ -33,33 +32,33 @@ from .call_stmt_rewriter import CallStatementRewriter
|
|
|
33
32
|
from .duplication_reverter import DuplicationReverter
|
|
34
33
|
|
|
35
34
|
# order matters!
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
35
|
+
ALL_OPTIMIZATION_PASSES = [
|
|
36
|
+
RegisterSaveAreaSimplifier,
|
|
37
|
+
StackCanarySimplifier,
|
|
38
|
+
WinStackCanarySimplifier,
|
|
39
|
+
BasePointerSaveSimplifier,
|
|
40
|
+
DivSimplifier,
|
|
41
|
+
MultiSimplifier,
|
|
42
|
+
ModSimplifier,
|
|
43
|
+
ConstantDereferencesSimplifier,
|
|
44
|
+
RetAddrSaveSimplifier,
|
|
45
|
+
X86GccGetPcSimplifier,
|
|
46
|
+
ITERegionConverter,
|
|
47
|
+
ITEExprConverter,
|
|
48
|
+
ExprOpSwapper,
|
|
49
|
+
ReturnDuplicatorHigh,
|
|
50
|
+
DeadblockRemover,
|
|
51
|
+
SwitchDefaultCaseDuplicator,
|
|
52
|
+
ConstPropOptReverter,
|
|
53
|
+
DuplicationReverter,
|
|
54
|
+
LoweredSwitchSimplifier,
|
|
55
|
+
ReturnDuplicatorLow,
|
|
56
|
+
ReturnDeduplicator,
|
|
57
|
+
CodeMotionOptimization,
|
|
58
|
+
CrossJumpReverter,
|
|
59
|
+
FlipBooleanCmp,
|
|
60
|
+
InlinedStringTransformationSimplifier,
|
|
61
|
+
CallStatementRewriter,
|
|
63
62
|
]
|
|
64
63
|
|
|
65
64
|
# these passes may duplicate code to remove gotos or improve the structure of the graph
|
|
@@ -78,7 +77,7 @@ def get_optimization_passes(arch, platform):
|
|
|
78
77
|
platform = "windows" # sigh
|
|
79
78
|
|
|
80
79
|
passes = []
|
|
81
|
-
for pass_
|
|
80
|
+
for pass_ in ALL_OPTIMIZATION_PASSES:
|
|
82
81
|
if (pass_.ARCHES is None or arch in pass_.ARCHES) and (
|
|
83
82
|
pass_.PLATFORMS is None or platform is None or platform in pass_.PLATFORMS
|
|
84
83
|
):
|
|
@@ -87,28 +86,41 @@ def get_optimization_passes(arch, platform):
|
|
|
87
86
|
return passes
|
|
88
87
|
|
|
89
88
|
|
|
90
|
-
def
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
89
|
+
def register_optimization_pass(opt_pass):
|
|
90
|
+
ALL_OPTIMIZATION_PASSES.append(opt_pass)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
__all__ = (
|
|
94
|
+
"OptimizationPassStage",
|
|
95
|
+
"StackCanarySimplifier",
|
|
96
|
+
"BasePointerSaveSimplifier",
|
|
97
|
+
"ExprOpSwapper",
|
|
98
|
+
"ITERegionConverter",
|
|
99
|
+
"ITEExprConverter",
|
|
100
|
+
"LoweredSwitchSimplifier",
|
|
101
|
+
"MultiSimplifier",
|
|
102
|
+
"DivSimplifier",
|
|
103
|
+
"ModSimplifier",
|
|
104
|
+
"ReturnDuplicatorLow",
|
|
105
|
+
"ReturnDuplicatorHigh",
|
|
106
|
+
"ConstantDereferencesSimplifier",
|
|
107
|
+
"RegisterSaveAreaSimplifier",
|
|
108
|
+
"RetAddrSaveSimplifier",
|
|
109
|
+
"X86GccGetPcSimplifier",
|
|
110
|
+
"FlipBooleanCmp",
|
|
111
|
+
"ReturnDeduplicator",
|
|
112
|
+
"WinStackCanarySimplifier",
|
|
113
|
+
"CrossJumpReverter",
|
|
114
|
+
"CodeMotionOptimization",
|
|
115
|
+
"SwitchDefaultCaseDuplicator",
|
|
116
|
+
"DeadblockRemover",
|
|
117
|
+
"InlinedStringTransformationSimplifier",
|
|
118
|
+
"ConstPropOptReverter",
|
|
119
|
+
"CallStatementRewriter",
|
|
120
|
+
"DuplicationReverter",
|
|
121
|
+
"ALL_OPTIMIZATION_PASSES",
|
|
122
|
+
"DUPLICATING_OPTS",
|
|
123
|
+
"CONDENSING_OPTS",
|
|
124
|
+
"get_optimization_passes",
|
|
125
|
+
"register_optimization_pass",
|
|
126
|
+
)
|
|
@@ -7,7 +7,7 @@ from ailment import Block, AILBlockWalker
|
|
|
7
7
|
from ailment.expression import Load, Const, BinaryOp, UnaryOp
|
|
8
8
|
from ailment.statement import Statement, Assignment, Call, ConditionalJump
|
|
9
9
|
|
|
10
|
-
from
|
|
10
|
+
from angr.analyses.decompiler.ailgraph_walker import AILGraphWalker
|
|
11
11
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
12
12
|
|
|
13
13
|
if TYPE_CHECKING:
|
|
@@ -11,9 +11,9 @@ from ailment.statement import Call, Statement, ConditionalJump, Assignment, Stor
|
|
|
11
11
|
from ailment.expression import Convert, Register, Expression
|
|
12
12
|
|
|
13
13
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
14
|
-
from
|
|
15
|
-
from
|
|
16
|
-
from
|
|
14
|
+
from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
|
|
15
|
+
from angr.knowledge_plugins.key_definitions.atoms import MemoryLocation
|
|
16
|
+
from angr.knowledge_plugins.key_definitions.constants import OP_BEFORE
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
_l = logging.getLogger(__name__)
|
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
import inspect
|
|
7
7
|
|
|
8
8
|
from .optimization_pass import OptimizationPassStage, StructuringOptimizationPass
|
|
9
|
-
from
|
|
9
|
+
from angr.analyses.decompiler.counters import AILBlockCallCounter
|
|
10
10
|
|
|
11
11
|
l = logging.getLogger(__name__)
|
|
12
12
|
|
|
@@ -22,13 +22,13 @@ from .utils import (
|
|
|
22
22
|
correct_jump_targets,
|
|
23
23
|
deepcopy_ail_anyjump,
|
|
24
24
|
)
|
|
25
|
-
from
|
|
26
|
-
from
|
|
27
|
-
from
|
|
28
|
-
from
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
25
|
+
from angr.analyses.decompiler.optimization_passes.optimization_pass import StructuringOptimizationPass
|
|
26
|
+
from angr.analyses.decompiler.block_io_finder import BlockIOFinder
|
|
27
|
+
from angr.analyses.decompiler.block_similarity import is_similar, index_of_similar_stmts, longest_ail_subseq
|
|
28
|
+
from angr.analyses.decompiler.utils import to_ail_supergraph, remove_labels
|
|
29
|
+
from angr.analyses.decompiler.counters.boolean_counter import BooleanCounter
|
|
30
|
+
from angr.knowledge_plugins.key_definitions.atoms import MemoryLocation
|
|
31
|
+
from angr.utils.graph import dominates
|
|
32
32
|
|
|
33
33
|
_l = logging.getLogger(name=__name__)
|
|
34
34
|
|
|
@@ -7,7 +7,7 @@ import networkx as nx
|
|
|
7
7
|
from ailment.block import Block
|
|
8
8
|
|
|
9
9
|
from .utils import bfs_list_blocks
|
|
10
|
-
from
|
|
10
|
+
from angr.analyses.decompiler.block_similarity import longest_ail_subseq, is_similar
|
|
11
11
|
|
|
12
12
|
_l = logging.getLogger(name=__name__)
|
|
13
13
|
|
|
@@ -9,7 +9,7 @@ from ailment.block import Block
|
|
|
9
9
|
from ailment.statement import Statement, ConditionalJump, Jump
|
|
10
10
|
|
|
11
11
|
from .errors import UnsupportedAILNodeError
|
|
12
|
-
from
|
|
12
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import IncompleteSwitchCaseHeadStatement
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
_l = logging.getLogger(name=__name__)
|
|
@@ -4,8 +4,8 @@ import logging
|
|
|
4
4
|
|
|
5
5
|
from ailment import Expr, Stmt
|
|
6
6
|
|
|
7
|
-
from
|
|
8
|
-
from
|
|
7
|
+
from angr.engines.light import SimEngineLightAILMixin
|
|
8
|
+
from angr.engines.light import SimEngineLight
|
|
9
9
|
|
|
10
10
|
_l = logging.getLogger(name=__name__)
|
|
11
11
|
|
|
@@ -7,8 +7,8 @@ from ailment.block import Block as AILBlock
|
|
|
7
7
|
from ailment.statement import Statement
|
|
8
8
|
from ailment.expression import Expression, BinaryOp
|
|
9
9
|
|
|
10
|
-
from
|
|
11
|
-
from
|
|
10
|
+
from angr.analyses.decompiler.sequence_walker import SequenceWalker
|
|
11
|
+
from angr.analyses.decompiler.ail_simplifier import AILBlockWalker
|
|
12
12
|
from .optimization_pass import SequenceOptimizationPass, OptimizationPassStage
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
@@ -5,9 +5,9 @@ from typing import Any
|
|
|
5
5
|
import ailment
|
|
6
6
|
from ailment.expression import Op
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
8
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import ConditionNode
|
|
9
|
+
from angr.analyses.decompiler.utils import structured_node_is_simple_return, sequence_to_statements
|
|
10
|
+
from angr.analyses.decompiler.sequence_walker import SequenceWalker
|
|
11
11
|
from .optimization_pass import SequenceOptimizationPass, OptimizationPassStage
|
|
12
12
|
|
|
13
13
|
|
|
@@ -79,7 +79,7 @@ class FlipBooleanCmp(SequenceOptimizationPass):
|
|
|
79
79
|
|
|
80
80
|
def __init__(self, func, flip_size=10, **kwargs):
|
|
81
81
|
super().__init__(func, **kwargs)
|
|
82
|
-
self._graph = kwargs.get("graph"
|
|
82
|
+
self._graph = kwargs.get("graph")
|
|
83
83
|
self._flip_size = flip_size
|
|
84
84
|
self.analyze()
|
|
85
85
|
|
|
@@ -6,12 +6,12 @@ from typing import Any, TYPE_CHECKING
|
|
|
6
6
|
from ailment.statement import ConditionalJump, Assignment, Statement
|
|
7
7
|
from ailment.expression import Const, ITE, Expression
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
12
|
-
from
|
|
13
|
-
from
|
|
14
|
-
from
|
|
9
|
+
from angr.analyses import ReachingDefinitionsAnalysis
|
|
10
|
+
from angr.code_location import CodeLocation
|
|
11
|
+
from angr.analyses.decompiler.region_walker import RegionWalker
|
|
12
|
+
from angr.analyses.decompiler.ail_simplifier import AILBlockWalker
|
|
13
|
+
from angr.analyses.decompiler.condition_processor import ConditionProcessor
|
|
14
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import EmptyBlockNotice
|
|
15
15
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
16
16
|
|
|
17
17
|
if TYPE_CHECKING:
|
|
@@ -7,8 +7,8 @@ from ailment.statement import Statement, Call, ConditionalJump, Assignment, Jump
|
|
|
7
7
|
from ailment.expression import ITE, Const, VirtualVariable, Phi
|
|
8
8
|
|
|
9
9
|
from angr.utils.ail import is_phi_assignment
|
|
10
|
-
from
|
|
11
|
-
from
|
|
10
|
+
from angr.utils.graph import subgraph_between_nodes
|
|
11
|
+
from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph
|
|
12
12
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
13
13
|
|
|
14
14
|
|
|
@@ -10,10 +10,14 @@ from ailment.statement import ConditionalJump, Label, Assignment, Jump
|
|
|
10
10
|
from ailment.expression import Expression, BinaryOp, Const, Load
|
|
11
11
|
|
|
12
12
|
from angr.utils.graph import GraphUtils
|
|
13
|
-
from
|
|
14
|
-
from
|
|
13
|
+
from angr.analyses.decompiler.utils import first_nonlabel_nonphi_statement, remove_last_statement
|
|
14
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import (
|
|
15
|
+
IncompleteSwitchCaseHeadStatement,
|
|
16
|
+
SequenceNode,
|
|
17
|
+
MultiNode,
|
|
18
|
+
)
|
|
15
19
|
from .optimization_pass import MultipleBlocksException, StructuringOptimizationPass
|
|
16
|
-
from
|
|
20
|
+
from angr.analyses.decompiler.region_simplifiers.switch_cluster_simplifier import SwitchClusterFinder
|
|
17
21
|
|
|
18
22
|
if TYPE_CHECKING:
|
|
19
23
|
from ailment.expression import UnaryOp, Convert
|
|
@@ -100,34 +100,6 @@ class BaseOptimizationPass:
|
|
|
100
100
|
"""
|
|
101
101
|
raise NotImplementedError
|
|
102
102
|
|
|
103
|
-
def _simplify_graph(self, graph):
|
|
104
|
-
MAX_SIMP_ITERATION = 8
|
|
105
|
-
for _ in range(MAX_SIMP_ITERATION):
|
|
106
|
-
simp = self.project.analyses.AILSimplifier(
|
|
107
|
-
self._func,
|
|
108
|
-
func_graph=graph,
|
|
109
|
-
use_callee_saved_regs_at_return=False,
|
|
110
|
-
gp=self._func.info.get("gp", None) if self.project.arch.name in {"MIPS32", "MIPS64"} else None,
|
|
111
|
-
)
|
|
112
|
-
if simp.simplified:
|
|
113
|
-
graph = simp.func_graph
|
|
114
|
-
else:
|
|
115
|
-
break
|
|
116
|
-
else:
|
|
117
|
-
_l.warning("Failed to reach fixed point after %s simplification iterations.", MAX_SIMP_ITERATION)
|
|
118
|
-
return graph
|
|
119
|
-
|
|
120
|
-
def _recover_regions(self, graph: networkx.DiGraph, condition_processor=None, update_graph: bool = False):
|
|
121
|
-
return self.project.analyses[RegionIdentifier].prep(kb=self.kb)(
|
|
122
|
-
self._func,
|
|
123
|
-
graph=graph,
|
|
124
|
-
cond_proc=condition_processor or ConditionProcessor(self.project.arch),
|
|
125
|
-
update_graph=update_graph,
|
|
126
|
-
# TODO: find a way to pass Phoenix/DREAM options here (see decompiler.py for correct use)
|
|
127
|
-
force_loop_single_exit=True,
|
|
128
|
-
complete_successors=False,
|
|
129
|
-
)
|
|
130
|
-
|
|
131
103
|
|
|
132
104
|
class OptimizationPass(BaseOptimizationPass):
|
|
133
105
|
"""
|
|
@@ -144,6 +116,7 @@ class OptimizationPass(BaseOptimizationPass):
|
|
|
144
116
|
region_identifier=None,
|
|
145
117
|
reaching_definitions=None,
|
|
146
118
|
vvar_id_start=None,
|
|
119
|
+
entry_node_addr=None,
|
|
147
120
|
**kwargs,
|
|
148
121
|
):
|
|
149
122
|
super().__init__(func)
|
|
@@ -156,6 +129,9 @@ class OptimizationPass(BaseOptimizationPass):
|
|
|
156
129
|
self._rd = reaching_definitions
|
|
157
130
|
self._new_block_addrs = set()
|
|
158
131
|
self.vvar_id_start = vvar_id_start
|
|
132
|
+
self.entry_node_addr: tuple[int, int | None] = (
|
|
133
|
+
entry_node_addr if entry_node_addr is not None else (func.addr, None)
|
|
134
|
+
)
|
|
159
135
|
|
|
160
136
|
# output
|
|
161
137
|
self.out_graph: networkx.DiGraph | None = None
|
|
@@ -254,6 +230,35 @@ class OptimizationPass(BaseOptimizationPass):
|
|
|
254
230
|
def _is_sub(expr):
|
|
255
231
|
return isinstance(expr, ailment.Expr.BinaryOp) and expr.op == "Sub"
|
|
256
232
|
|
|
233
|
+
def _simplify_graph(self, graph):
|
|
234
|
+
MAX_SIMP_ITERATION = 8
|
|
235
|
+
for _ in range(MAX_SIMP_ITERATION):
|
|
236
|
+
simp = self.project.analyses.AILSimplifier(
|
|
237
|
+
self._func,
|
|
238
|
+
func_graph=graph,
|
|
239
|
+
use_callee_saved_regs_at_return=False,
|
|
240
|
+
gp=self._func.info.get("gp", None) if self.project.arch.name in {"MIPS32", "MIPS64"} else None,
|
|
241
|
+
)
|
|
242
|
+
if simp.simplified:
|
|
243
|
+
graph = simp.func_graph
|
|
244
|
+
else:
|
|
245
|
+
break
|
|
246
|
+
else:
|
|
247
|
+
_l.warning("Failed to reach fixed point after %s simplification iterations.", MAX_SIMP_ITERATION)
|
|
248
|
+
return graph
|
|
249
|
+
|
|
250
|
+
def _recover_regions(self, graph: networkx.DiGraph, condition_processor=None, update_graph: bool = False):
|
|
251
|
+
return self.project.analyses[RegionIdentifier].prep(kb=self.kb)(
|
|
252
|
+
self._func,
|
|
253
|
+
graph=graph,
|
|
254
|
+
cond_proc=condition_processor or ConditionProcessor(self.project.arch),
|
|
255
|
+
update_graph=update_graph,
|
|
256
|
+
# TODO: find a way to pass Phoenix/DREAM options here (see decompiler.py for correct use)
|
|
257
|
+
force_loop_single_exit=True,
|
|
258
|
+
complete_successors=False,
|
|
259
|
+
entry_node_addr=self.entry_node_addr,
|
|
260
|
+
)
|
|
261
|
+
|
|
257
262
|
|
|
258
263
|
class SequenceOptimizationPass(BaseOptimizationPass):
|
|
259
264
|
"""
|
|
@@ -424,6 +429,7 @@ class StructuringOptimizationPass(OptimizationPass):
|
|
|
424
429
|
cond_proc=self._ri.cond_proc,
|
|
425
430
|
force_loop_single_exit=False,
|
|
426
431
|
complete_successors=True,
|
|
432
|
+
entry_node_addr=self.entry_node_addr,
|
|
427
433
|
)
|
|
428
434
|
if self._ri is None:
|
|
429
435
|
return False
|
|
@@ -5,8 +5,8 @@ import logging
|
|
|
5
5
|
import archinfo
|
|
6
6
|
import ailment
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
8
|
+
from angr.calling_conventions import SimRegArg
|
|
9
|
+
from angr.code_location import CodeLocation
|
|
10
10
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
11
11
|
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
|
|
5
5
|
import ailment
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from angr.calling_conventions import SimRegArg, default_cc, DEFAULT_CC
|
|
8
8
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
9
9
|
|
|
10
10
|
_l = logging.getLogger(name=__name__)
|
|
@@ -5,9 +5,9 @@ import logging
|
|
|
5
5
|
from ailment import Block
|
|
6
6
|
from ailment.statement import ConditionalJump, Return
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
from
|
|
8
|
+
from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
|
|
9
|
+
from angr.utils.graph import subgraph_between_nodes
|
|
10
|
+
from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph, update_labels
|
|
11
11
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
12
12
|
|
|
13
13
|
|
|
@@ -12,11 +12,11 @@ from ailment.statement import Jump, ConditionalJump, Assignment, Return, Label
|
|
|
12
12
|
from ailment.expression import Const, Phi, VirtualVariable
|
|
13
13
|
|
|
14
14
|
from angr.utils.ail import is_phi_assignment
|
|
15
|
-
from
|
|
16
|
-
from
|
|
17
|
-
from
|
|
18
|
-
from
|
|
19
|
-
from
|
|
15
|
+
from angr.analyses.decompiler.condition_processor import ConditionProcessor, EmptyBlockNotice
|
|
16
|
+
from angr.analyses.decompiler.graph_region import GraphRegion
|
|
17
|
+
from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph, calls_in_graph
|
|
18
|
+
from angr.analyses.decompiler.structuring.structurer_nodes import MultiNode, ConditionNode
|
|
19
|
+
from angr.analyses.decompiler.region_identifier import RegionIdentifier
|
|
20
20
|
|
|
21
21
|
_l = logging.getLogger(name=__name__)
|
|
22
22
|
|
|
@@ -5,7 +5,7 @@ import networkx
|
|
|
5
5
|
|
|
6
6
|
from .return_duplicator_base import ReturnDuplicatorBase
|
|
7
7
|
from .optimization_pass import OptimizationPass, OptimizationPassStage
|
|
8
|
-
from
|
|
8
|
+
from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
|
|
9
9
|
|
|
10
10
|
_l = logging.getLogger(name=__name__)
|
|
11
11
|
|