angr 9.2.118__py3-none-manylinux2014_aarch64.whl → 9.2.120__py3-none-manylinux2014_aarch64.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
|
@@ -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
|
|
|
@@ -140,7 +140,7 @@ class AILMergeGraph:
|
|
|
140
140
|
self.starts = []
|
|
141
141
|
self.original_ends = []
|
|
142
142
|
|
|
143
|
-
def create_conditionless_graph(self, starting_blocks: list[Block], graph_lcs):
|
|
143
|
+
def create_conditionless_graph(self, starting_blocks: list[Block], graph_lcs) -> dict[Block, Block] | None:
|
|
144
144
|
# get all the original blocks (reverted from the LCS) and their split blocks.
|
|
145
145
|
# split-blocks are blocks that need to be split at some stmt index to make the two blocks
|
|
146
146
|
# equal across both graphs. At a highlevel, the first block in both matching graphs either need
|
|
@@ -180,9 +180,12 @@ class AILMergeGraph:
|
|
|
180
180
|
# we create a new graph, full of the original blocks of the base, with blocks
|
|
181
181
|
# that should be split replaced.
|
|
182
182
|
# this graph is only the initial merge_graph needed, where only the blocks
|
|
183
|
-
self.
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
subgraph = nx.subgraph(self.original_graph, self.original_blocks[merge_base])
|
|
184
|
+
# ensure all base blocks are within the subgraph
|
|
185
|
+
for block in base_to_split:
|
|
186
|
+
if block not in subgraph:
|
|
187
|
+
return None
|
|
188
|
+
self.graph, update_blocks = self.clone_graph_replace_splits(subgraph, base_to_split)
|
|
186
189
|
self._update_all_split_refs(update_blocks)
|
|
187
190
|
for update_block, new_block in update_blocks.items():
|
|
188
191
|
if update_block in starting_blocks:
|
|
@@ -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
|
|
|
@@ -51,7 +51,7 @@ class DuplicationReverter(StructuringOptimizationPass):
|
|
|
51
51
|
strictly_less_gotos=False,
|
|
52
52
|
recover_structure_fails=True,
|
|
53
53
|
must_improve_rel_quality=True,
|
|
54
|
-
max_opt_iters=
|
|
54
|
+
max_opt_iters=5,
|
|
55
55
|
simplify_ail=True,
|
|
56
56
|
require_gotos=True,
|
|
57
57
|
readd_labels=True,
|
|
@@ -679,6 +679,10 @@ class DuplicationReverter(StructuringOptimizationPass):
|
|
|
679
679
|
ail_merge_graph = AILMergeGraph(original_graph=graph)
|
|
680
680
|
# some blocks in originals may update during this time (if-statements can change)
|
|
681
681
|
update_blocks = ail_merge_graph.create_conditionless_graph(blocks, graph_lcs)
|
|
682
|
+
if update_blocks is None:
|
|
683
|
+
# failed to create the condition-less graph
|
|
684
|
+
self.candidate_blacklist.add(tuple(blocks))
|
|
685
|
+
raise SAILRSemanticError("Failed to create a condition-less graph, this analysis must skip it")
|
|
682
686
|
|
|
683
687
|
#
|
|
684
688
|
# SPECIAL CASE: the merged graph contains only 1 node and no splits
|
|
@@ -1170,9 +1174,9 @@ class DuplicationReverter(StructuringOptimizationPass):
|
|
|
1170
1174
|
entry_blocks = [node for node in graph.nodes if graph.in_degree(node) == 0]
|
|
1171
1175
|
entry_block = None if len(entry_blocks) != 1 else entry_blocks[0]
|
|
1172
1176
|
|
|
1173
|
-
self._entry_node_cache[graph] = entry_block
|
|
1174
1177
|
if entry_block is None:
|
|
1175
1178
|
return None
|
|
1179
|
+
self._entry_node_cache[graph] = entry_block
|
|
1176
1180
|
|
|
1177
1181
|
entry_blk = self._entry_node_cache[graph]
|
|
1178
1182
|
|
|
@@ -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
|
|
|
@@ -60,12 +60,12 @@ class InlinedStringTransformationState:
|
|
|
60
60
|
def _get_weakref(self):
|
|
61
61
|
return self
|
|
62
62
|
|
|
63
|
-
def reg_store(self, reg: Register, value: claripy.Bits) -> None:
|
|
63
|
+
def reg_store(self, reg: Register, value: claripy.ast.Bits) -> None:
|
|
64
64
|
self.registers.store(
|
|
65
65
|
reg.reg_offset, value, size=value.size() // self.arch.byte_width, endness=str(self.arch.register_endness)
|
|
66
66
|
)
|
|
67
67
|
|
|
68
|
-
def reg_load(self, reg: Register) -> claripy.Bits | None:
|
|
68
|
+
def reg_load(self, reg: Register) -> claripy.ast.Bits | None:
|
|
69
69
|
try:
|
|
70
70
|
return self.registers.load(
|
|
71
71
|
reg.reg_offset, size=reg.size, endness=self.arch.register_endness, fill_missing=False
|
|
@@ -73,19 +73,19 @@ class InlinedStringTransformationState:
|
|
|
73
73
|
except SimMemoryMissingError:
|
|
74
74
|
return None
|
|
75
75
|
|
|
76
|
-
def mem_store(self, addr: int, value: claripy.Bits, endness: str) -> None:
|
|
76
|
+
def mem_store(self, addr: int, value: claripy.ast.Bits, endness: str) -> None:
|
|
77
77
|
self.memory.store(addr, value, size=value.size() // self.arch.byte_width, endness=endness)
|
|
78
78
|
|
|
79
|
-
def mem_load(self, addr: int, size: int, endness) -> claripy.Bits | None:
|
|
79
|
+
def mem_load(self, addr: int, size: int, endness) -> claripy.ast.Bits | None:
|
|
80
80
|
try:
|
|
81
81
|
return self.memory.load(addr, size=size, endness=str(endness), fill_missing=False)
|
|
82
82
|
except SimMemoryMissingError:
|
|
83
83
|
return None
|
|
84
84
|
|
|
85
|
-
def vvar_store(self, vvar: VirtualVariable, value: claripy.Bits | None) -> None:
|
|
85
|
+
def vvar_store(self, vvar: VirtualVariable, value: claripy.ast.Bits | None) -> None:
|
|
86
86
|
self.virtual_variables[vvar.varid] = value
|
|
87
87
|
|
|
88
|
-
def vvar_load(self, vvar: VirtualVariable) -> claripy.Bits | None:
|
|
88
|
+
def vvar_load(self, vvar: VirtualVariable) -> claripy.ast.Bits | None:
|
|
89
89
|
if vvar.varid in self.virtual_variables:
|
|
90
90
|
return self.virtual_variables[vvar.varid]
|
|
91
91
|
return None
|
|
@@ -109,7 +109,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
109
109
|
self.MASK = 0xFFFF_FFFF if self.arch.bits == 32 else 0xFFFF_FFFF_FFFF_FFFF
|
|
110
110
|
|
|
111
111
|
state = InlinedStringTransformationState(project)
|
|
112
|
-
self.stack_accesses: defaultdict[int, list[tuple[str, CodeLocation, claripy.Bits]]] = defaultdict(list)
|
|
112
|
+
self.stack_accesses: defaultdict[int, list[tuple[str, CodeLocation, claripy.ast.Bits]]] = defaultdict(list)
|
|
113
113
|
self.finished: bool = False
|
|
114
114
|
|
|
115
115
|
i = 0
|
|
@@ -140,7 +140,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
140
140
|
if v0_and_type is not None:
|
|
141
141
|
v0 = v0_and_type[0]
|
|
142
142
|
v1 = self._expr(addr.operands[1])
|
|
143
|
-
if isinstance(v1, claripy.Bits) and v1.concrete:
|
|
143
|
+
if isinstance(v1, claripy.ast.Bits) and v1.concrete:
|
|
144
144
|
return (v0 + v1.concrete_value) & self.MASK, "stack"
|
|
145
145
|
return None
|
|
146
146
|
|
|
@@ -148,7 +148,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
148
148
|
if isinstance(stmt.dst, VirtualVariable):
|
|
149
149
|
if stmt.dst.was_reg:
|
|
150
150
|
val = self._expr(stmt.src)
|
|
151
|
-
if isinstance(val, claripy.Bits):
|
|
151
|
+
if isinstance(val, claripy.ast.Bits):
|
|
152
152
|
self.state.vvar_store(stmt.dst, val)
|
|
153
153
|
elif stmt.dst.was_stack:
|
|
154
154
|
addr = (stmt.dst.stack_offset + self.STACK_BASE) & self.MASK
|
|
@@ -190,9 +190,9 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
190
190
|
if isinstance(stmt.true_target, Const) and isinstance(stmt.false_target, Const):
|
|
191
191
|
cond = self._expr(stmt.condition)
|
|
192
192
|
if cond is not None:
|
|
193
|
-
if isinstance(cond, claripy.Bits) and cond.concrete_value == 1:
|
|
193
|
+
if isinstance(cond, claripy.ast.Bits) and cond.concrete_value == 1:
|
|
194
194
|
self.pc = stmt.true_target.value
|
|
195
|
-
elif isinstance(cond, claripy.Bits) and cond.concrete_value == 0:
|
|
195
|
+
elif isinstance(cond, claripy.ast.Bits) and cond.concrete_value == 0:
|
|
196
196
|
self.pc = stmt.false_target.value
|
|
197
197
|
|
|
198
198
|
def _handle_Const(self, expr):
|
|
@@ -220,7 +220,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
220
220
|
if expr.was_stack:
|
|
221
221
|
addr = (expr.stack_offset + self.STACK_BASE) & self.MASK
|
|
222
222
|
v = self.state.mem_load(addr, expr.size, self.arch.memory_endness)
|
|
223
|
-
if isinstance(v, claripy.Bits):
|
|
223
|
+
if isinstance(v, claripy.ast.Bits):
|
|
224
224
|
# log it
|
|
225
225
|
for i in range(expr.size):
|
|
226
226
|
byte_off = i
|
|
@@ -240,7 +240,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
240
240
|
|
|
241
241
|
def _handle_Convert(self, expr: Convert):
|
|
242
242
|
v = self._expr(expr.operand)
|
|
243
|
-
if isinstance(v, claripy.Bits):
|
|
243
|
+
if isinstance(v, claripy.ast.Bits):
|
|
244
244
|
if expr.to_bits > expr.from_bits:
|
|
245
245
|
if not expr.is_signed:
|
|
246
246
|
return claripy.ZeroExt(expr.to_bits - expr.from_bits, v)
|
|
@@ -252,37 +252,37 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
|
|
|
252
252
|
|
|
253
253
|
def _handle_CmpEQ(self, expr):
|
|
254
254
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
255
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
255
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
256
256
|
return claripy.BVV(1, 1) if op0.concrete_value == op1.concrete_value else claripy.BVV(0, 1)
|
|
257
257
|
return None
|
|
258
258
|
|
|
259
259
|
def _handle_CmpNE(self, expr):
|
|
260
260
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
261
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
261
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
262
262
|
return claripy.BVV(1, 1) if op0.concrete_value != op1.concrete_value else claripy.BVV(0, 1)
|
|
263
263
|
return None
|
|
264
264
|
|
|
265
265
|
def _handle_CmpLT(self, expr):
|
|
266
266
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
267
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
267
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
268
268
|
return claripy.BVV(1, 1) if op0.concrete_value < op1.concrete_value else claripy.BVV(0, 1)
|
|
269
269
|
return None
|
|
270
270
|
|
|
271
271
|
def _handle_CmpLE(self, expr):
|
|
272
272
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
273
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
273
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
274
274
|
return claripy.BVV(1, 1) if op0.concrete_value <= op1.concrete_value else claripy.BVV(0, 1)
|
|
275
275
|
return None
|
|
276
276
|
|
|
277
277
|
def _handle_CmpGT(self, expr):
|
|
278
278
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
279
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
279
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
280
280
|
return claripy.BVV(1, 1) if op0.concrete_value > op1.concrete_value else claripy.BVV(0, 1)
|
|
281
281
|
return None
|
|
282
282
|
|
|
283
283
|
def _handle_CmpGE(self, expr):
|
|
284
284
|
op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
|
|
285
|
-
if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
|
|
285
|
+
if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
|
|
286
286
|
return claripy.BVV(1, 1) if op0.concrete_value >= op1.concrete_value else claripy.BVV(0, 1)
|
|
287
287
|
return None
|
|
288
288
|
|
|
@@ -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
|