angr 9.2.116__py3-none-manylinux2014_aarch64.whl → 9.2.118__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.

Files changed (1316) hide show
  1. angr/__init__.py +2 -1
  2. angr/__main__.py +21 -1
  3. angr/analyses/__init__.py +4 -0
  4. angr/analyses/analysis.py +45 -45
  5. angr/analyses/backward_slice.py +15 -18
  6. angr/analyses/binary_optimizer.py +29 -34
  7. angr/analyses/bindiff.py +35 -44
  8. angr/analyses/boyscout.py +1 -0
  9. angr/analyses/callee_cleanup_finder.py +3 -4
  10. angr/analyses/calling_convention.py +98 -98
  11. angr/analyses/cdg.py +5 -12
  12. angr/analyses/cfg/__init__.py +1 -0
  13. angr/analyses/cfg/cfb.py +14 -20
  14. angr/analyses/cfg/cfg.py +2 -1
  15. angr/analyses/cfg/cfg_arch_options.py +4 -1
  16. angr/analyses/cfg/cfg_base.py +122 -165
  17. angr/analyses/cfg/cfg_emulated.py +64 -96
  18. angr/analyses/cfg/cfg_fast.py +273 -314
  19. angr/analyses/cfg/cfg_fast_soot.py +10 -17
  20. angr/analyses/cfg/cfg_job_base.py +6 -7
  21. angr/analyses/cfg/indirect_jump_resolvers/__init__.py +1 -0
  22. angr/analyses/cfg/indirect_jump_resolvers/amd64_elf_got.py +2 -3
  23. angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +2 -3
  24. angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +6 -8
  25. angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +3 -5
  26. angr/analyses/cfg/indirect_jump_resolvers/default_resolvers.py +1 -0
  27. angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +104 -119
  28. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +29 -34
  29. angr/analyses/cfg/indirect_jump_resolvers/propagator_utils.py +1 -0
  30. angr/analyses/cfg/indirect_jump_resolvers/resolver.py +7 -7
  31. angr/analyses/cfg/indirect_jump_resolvers/x86_elf_pic_plt.py +3 -8
  32. angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +2 -3
  33. angr/analyses/cfg_slice_to_sink/__init__.py +1 -0
  34. angr/analyses/cfg_slice_to_sink/cfg_slice_to_sink.py +4 -4
  35. angr/analyses/cfg_slice_to_sink/graph.py +4 -1
  36. angr/analyses/cfg_slice_to_sink/transitions.py +4 -2
  37. angr/analyses/class_identifier.py +1 -0
  38. angr/analyses/code_tagging.py +9 -9
  39. angr/analyses/complete_calling_conventions.py +28 -36
  40. angr/analyses/congruency_check.py +6 -11
  41. angr/analyses/data_dep/__init__.py +1 -0
  42. angr/analyses/data_dep/data_dependency_analysis.py +38 -48
  43. angr/analyses/data_dep/dep_nodes.py +13 -12
  44. angr/analyses/data_dep/sim_act_location.py +3 -0
  45. angr/analyses/datagraph_meta.py +7 -7
  46. angr/analyses/ddg.py +48 -69
  47. angr/analyses/decompiler/__init__.py +3 -0
  48. angr/analyses/decompiler/ail_simplifier.py +929 -400
  49. angr/analyses/decompiler/ailgraph_walker.py +1 -0
  50. angr/analyses/decompiler/block_io_finder.py +13 -4
  51. angr/analyses/decompiler/block_similarity.py +28 -18
  52. angr/analyses/decompiler/block_simplifier.py +40 -104
  53. angr/analyses/decompiler/callsite_maker.py +124 -82
  54. angr/analyses/decompiler/ccall_rewriters/__init__.py +1 -0
  55. angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py +115 -105
  56. angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +2 -1
  57. angr/analyses/decompiler/clinic.py +348 -172
  58. angr/analyses/decompiler/condition_processor.py +86 -100
  59. angr/analyses/decompiler/counters/__init__.py +5 -0
  60. angr/analyses/decompiler/counters/boolean_counter.py +27 -0
  61. angr/analyses/decompiler/{call_counter.py → counters/call_counter.py} +5 -4
  62. angr/analyses/decompiler/{expression_counters.py → counters/expression_counters.py} +5 -4
  63. angr/analyses/decompiler/counters/seq_cf_structure_counter.py +63 -0
  64. angr/analyses/decompiler/decompilation_cache.py +2 -1
  65. angr/analyses/decompiler/decompilation_options.py +1 -0
  66. angr/analyses/decompiler/decompiler.py +47 -27
  67. angr/analyses/decompiler/dephication/__init__.py +6 -0
  68. angr/analyses/decompiler/dephication/dephication_base.py +87 -0
  69. angr/analyses/decompiler/dephication/graph_dephication.py +63 -0
  70. angr/analyses/decompiler/dephication/graph_rewriting.py +116 -0
  71. angr/analyses/decompiler/dephication/graph_vvar_mapping.py +313 -0
  72. angr/analyses/decompiler/dephication/rewriting_engine.py +247 -0
  73. angr/analyses/decompiler/dephication/seqnode_dephication.py +106 -0
  74. angr/analyses/decompiler/empty_node_remover.py +1 -0
  75. angr/analyses/decompiler/expression_narrower.py +12 -17
  76. angr/analyses/decompiler/goto_manager.py +43 -4
  77. angr/analyses/decompiler/graph_region.py +19 -31
  78. angr/analyses/decompiler/jump_target_collector.py +1 -0
  79. angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +1 -0
  80. angr/analyses/decompiler/optimization_passes/__init__.py +7 -3
  81. angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py +23 -18
  82. angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py +46 -0
  83. angr/analyses/decompiler/optimization_passes/code_motion.py +4 -2
  84. angr/analyses/decompiler/optimization_passes/const_derefs.py +36 -36
  85. angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +6 -9
  86. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +4 -3
  87. angr/analyses/decompiler/optimization_passes/deadblock_remover.py +1 -0
  88. angr/analyses/decompiler/optimization_passes/div_simplifier.py +78 -72
  89. angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +2 -0
  90. angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +500 -0
  91. angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +1211 -0
  92. angr/analyses/decompiler/optimization_passes/duplication_reverter/errors.py +16 -0
  93. angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +126 -0
  94. angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +169 -0
  95. angr/analyses/decompiler/optimization_passes/engine_base.py +60 -63
  96. angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +6 -7
  97. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +1 -0
  98. angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +88 -23
  99. angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +8 -10
  100. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +128 -18
  101. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +142 -145
  102. angr/analyses/decompiler/optimization_passes/mod_simplifier.py +27 -23
  103. angr/analyses/decompiler/optimization_passes/multi_simplifier.py +30 -34
  104. angr/analyses/decompiler/optimization_passes/optimization_pass.py +108 -47
  105. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +10 -3
  106. angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +5 -6
  107. angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -2
  108. angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +125 -13
  109. angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -0
  110. angr/analyses/decompiler/optimization_passes/return_duplicator_low.py +3 -2
  111. angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py +52 -21
  112. angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +3 -2
  113. angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +47 -36
  114. angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py +2 -1
  115. angr/analyses/decompiler/peephole_optimizations/__init__.py +2 -0
  116. angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py +26 -22
  117. angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py +2 -2
  118. angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py +1 -0
  119. angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py +2 -2
  120. angr/analyses/decompiler/peephole_optimizations/a_sub_a_div_const_mul_const.py +1 -0
  121. angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py +8 -4
  122. angr/analyses/decompiler/peephole_optimizations/arm_cmpf.py +28 -27
  123. angr/analyses/decompiler/peephole_optimizations/base.py +17 -20
  124. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_add_n.py +1 -0
  125. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py +1 -0
  126. angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py +2 -2
  127. angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py +2 -2
  128. angr/analyses/decompiler/peephole_optimizations/bswap.py +29 -22
  129. angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py +3 -4
  130. angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py +39 -0
  131. angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py +2 -1
  132. angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py +94 -29
  133. angr/analyses/decompiler/peephole_optimizations/constant_derefs.py +1 -0
  134. angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py +48 -49
  135. angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py +1 -0
  136. angr/analyses/decompiler/peephole_optimizations/eager_eval.py +41 -34
  137. angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py +2 -1
  138. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py +28 -18
  139. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py +8 -4
  140. angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy.py +28 -18
  141. angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuction_disjunction.py +32 -32
  142. angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py +2 -2
  143. angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py +23 -3
  144. angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py +2 -1
  145. angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py +4 -0
  146. angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py +1 -0
  147. angr/analyses/decompiler/peephole_optimizations/remove_redundant_conversions.py +4 -6
  148. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py +14 -13
  149. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_comparisons.py +2 -2
  150. angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py +1 -0
  151. angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py +3 -2
  152. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py +2 -2
  153. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py +20 -16
  154. angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py +3 -3
  155. angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py +4 -2
  156. angr/analyses/decompiler/peephole_optimizations/rol_ror.py +66 -40
  157. angr/analyses/decompiler/peephole_optimizations/sar_to_signed_div.py +64 -57
  158. angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +14 -14
  159. angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py +1 -0
  160. angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py +8 -5
  161. angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py +4 -6
  162. angr/analyses/decompiler/redundant_label_remover.py +20 -19
  163. angr/analyses/decompiler/region_identifier.py +64 -77
  164. angr/analyses/decompiler/region_simplifiers/__init__.py +1 -0
  165. angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +2 -1
  166. angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +1 -0
  167. angr/analyses/decompiler/region_simplifiers/expr_folding.py +43 -29
  168. angr/analyses/decompiler/region_simplifiers/goto.py +1 -0
  169. angr/analyses/decompiler/region_simplifiers/if_.py +29 -36
  170. angr/analyses/decompiler/region_simplifiers/ifelse.py +1 -0
  171. angr/analyses/decompiler/region_simplifiers/loop.py +27 -13
  172. angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -0
  173. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +1 -0
  174. angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -16
  175. angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +36 -32
  176. angr/analyses/decompiler/region_walker.py +1 -0
  177. angr/analyses/decompiler/return_maker.py +1 -0
  178. angr/analyses/decompiler/seq_to_blocks.py +1 -0
  179. angr/analyses/decompiler/sequence_walker.py +5 -10
  180. angr/analyses/decompiler/ssailification/__init__.py +4 -0
  181. angr/analyses/decompiler/ssailification/rewriting.py +325 -0
  182. angr/analyses/decompiler/ssailification/rewriting_engine.py +601 -0
  183. angr/analyses/decompiler/ssailification/rewriting_state.py +60 -0
  184. angr/analyses/decompiler/ssailification/ssailification.py +213 -0
  185. angr/analyses/decompiler/ssailification/traversal.py +97 -0
  186. angr/analyses/decompiler/ssailification/traversal_engine.py +131 -0
  187. angr/analyses/decompiler/ssailification/traversal_state.py +42 -0
  188. angr/analyses/decompiler/structured_codegen/__init__.py +1 -0
  189. angr/analyses/decompiler/structured_codegen/base.py +2 -2
  190. angr/analyses/decompiler/structured_codegen/c.py +163 -158
  191. angr/analyses/decompiler/structured_codegen/dummy.py +1 -0
  192. angr/analyses/decompiler/structured_codegen/dwarf_import.py +1 -0
  193. angr/analyses/decompiler/structuring/__init__.py +1 -0
  194. angr/analyses/decompiler/structuring/dream.py +19 -36
  195. angr/analyses/decompiler/structuring/phoenix.py +199 -199
  196. angr/analyses/decompiler/structuring/recursive_structurer.py +4 -3
  197. angr/analyses/decompiler/structuring/sailr.py +5 -4
  198. angr/analyses/decompiler/structuring/structurer_base.py +26 -23
  199. angr/analyses/decompiler/structuring/structurer_nodes.py +14 -24
  200. angr/analyses/decompiler/utils.py +112 -52
  201. angr/analyses/disassembly.py +75 -77
  202. angr/analyses/disassembly_utils.py +10 -13
  203. angr/analyses/dominance_frontier.py +25 -7
  204. angr/analyses/find_objects_static.py +3 -2
  205. angr/analyses/flirt.py +7 -10
  206. angr/analyses/forward_analysis/__init__.py +1 -0
  207. angr/analyses/forward_analysis/forward_analysis.py +9 -6
  208. angr/analyses/forward_analysis/job_info.py +3 -3
  209. angr/analyses/forward_analysis/visitors/__init__.py +1 -0
  210. angr/analyses/forward_analysis/visitors/call_graph.py +1 -0
  211. angr/analyses/forward_analysis/visitors/function_graph.py +3 -2
  212. angr/analyses/forward_analysis/visitors/graph.py +9 -9
  213. angr/analyses/forward_analysis/visitors/loop.py +1 -0
  214. angr/analyses/forward_analysis/visitors/single_node_graph.py +2 -2
  215. angr/analyses/identifier/__init__.py +1 -0
  216. angr/analyses/identifier/custom_callable.py +2 -2
  217. angr/analyses/identifier/errors.py +1 -0
  218. angr/analyses/identifier/func.py +6 -3
  219. angr/analyses/identifier/functions/__init__.py +2 -1
  220. angr/analyses/identifier/functions/atoi.py +2 -4
  221. angr/analyses/identifier/functions/based_atoi.py +3 -6
  222. angr/analyses/identifier/functions/fdprintf.py +1 -0
  223. angr/analyses/identifier/functions/free.py +6 -6
  224. angr/analyses/identifier/functions/int2str.py +11 -26
  225. angr/analyses/identifier/functions/malloc.py +4 -6
  226. angr/analyses/identifier/functions/memcmp.py +2 -4
  227. angr/analyses/identifier/functions/memcpy.py +2 -2
  228. angr/analyses/identifier/functions/memset.py +2 -2
  229. angr/analyses/identifier/functions/printf.py +1 -0
  230. angr/analyses/identifier/functions/recv_until.py +3 -6
  231. angr/analyses/identifier/functions/skip_calloc.py +2 -1
  232. angr/analyses/identifier/functions/skip_realloc.py +4 -6
  233. angr/analyses/identifier/functions/skip_recv_n.py +4 -6
  234. angr/analyses/identifier/functions/snprintf.py +2 -4
  235. angr/analyses/identifier/functions/sprintf.py +1 -0
  236. angr/analyses/identifier/functions/strcasecmp.py +1 -0
  237. angr/analyses/identifier/functions/strcmp.py +2 -1
  238. angr/analyses/identifier/functions/strcpy.py +2 -2
  239. angr/analyses/identifier/functions/strlen.py +1 -0
  240. angr/analyses/identifier/functions/strncmp.py +2 -1
  241. angr/analyses/identifier/functions/strncpy.py +2 -2
  242. angr/analyses/identifier/functions/strtol.py +2 -4
  243. angr/analyses/identifier/identify.py +46 -67
  244. angr/analyses/identifier/runner.py +8 -7
  245. angr/analyses/init_finder.py +17 -17
  246. angr/analyses/loop_analysis.py +10 -14
  247. angr/analyses/loopfinder.py +9 -13
  248. angr/analyses/propagator/__init__.py +1 -0
  249. angr/analyses/propagator/engine_ail.py +159 -165
  250. angr/analyses/propagator/engine_base.py +3 -2
  251. angr/analyses/propagator/engine_vex.py +47 -48
  252. angr/analyses/propagator/outdated_definition_walker.py +18 -23
  253. angr/analyses/propagator/propagator.py +8 -12
  254. angr/analyses/propagator/tmpvar_finder.py +1 -0
  255. angr/analyses/propagator/top_checker_mixin.py +2 -4
  256. angr/analyses/propagator/values.py +1 -0
  257. angr/analyses/propagator/vex_vars.py +3 -2
  258. angr/analyses/proximity_graph.py +12 -20
  259. angr/analyses/reaching_definitions/__init__.py +5 -4
  260. angr/analyses/reaching_definitions/call_trace.py +7 -6
  261. angr/analyses/reaching_definitions/dep_graph.py +18 -23
  262. angr/analyses/reaching_definitions/engine_ail.py +89 -121
  263. angr/analyses/reaching_definitions/engine_vex.py +20 -32
  264. angr/analyses/reaching_definitions/function_handler.py +32 -33
  265. angr/analyses/reaching_definitions/function_handler_library/__init__.py +1 -0
  266. angr/analyses/reaching_definitions/function_handler_library/stdio.py +4 -6
  267. angr/analyses/reaching_definitions/function_handler_library/stdlib.py +1 -2
  268. angr/analyses/reaching_definitions/function_handler_library/string.py +2 -4
  269. angr/analyses/reaching_definitions/function_handler_library/unistd.py +1 -0
  270. angr/analyses/reaching_definitions/heap_allocator.py +7 -6
  271. angr/analyses/reaching_definitions/rd_initializer.py +27 -25
  272. angr/analyses/reaching_definitions/rd_state.py +14 -16
  273. angr/analyses/reaching_definitions/reaching_definitions.py +27 -36
  274. angr/analyses/reaching_definitions/subject.py +3 -2
  275. angr/analyses/reassembler.py +189 -253
  276. angr/analyses/s_liveness/__init__.py +2 -0
  277. angr/analyses/s_liveness/s_liveness.py +153 -0
  278. angr/analyses/s_propagator/__init__.py +2 -0
  279. angr/analyses/s_propagator/s_propagator.py +250 -0
  280. angr/analyses/s_reaching_definitions/__init__.py +2 -0
  281. angr/analyses/s_reaching_definitions/s_rda.py +479 -0
  282. angr/analyses/soot_class_hierarchy.py +15 -24
  283. angr/analyses/stack_pointer_tracker.py +83 -93
  284. angr/analyses/static_hooker.py +3 -2
  285. angr/analyses/typehoon/__init__.py +1 -0
  286. angr/analyses/typehoon/dfa.py +5 -5
  287. angr/analyses/typehoon/lifter.py +5 -4
  288. angr/analyses/typehoon/simple_solver.py +80 -64
  289. angr/analyses/typehoon/translator.py +7 -14
  290. angr/analyses/typehoon/typeconsts.py +14 -12
  291. angr/analyses/typehoon/typehoon.py +8 -10
  292. angr/analyses/typehoon/typevars.py +37 -49
  293. angr/analyses/typehoon/variance.py +1 -0
  294. angr/analyses/variable_recovery/__init__.py +1 -0
  295. angr/analyses/variable_recovery/annotations.py +1 -0
  296. angr/analyses/variable_recovery/engine_ail.py +78 -32
  297. angr/analyses/variable_recovery/engine_base.py +233 -59
  298. angr/analyses/variable_recovery/engine_vex.py +10 -11
  299. angr/analyses/variable_recovery/irsb_scanner.py +1 -0
  300. angr/analyses/variable_recovery/variable_recovery.py +14 -16
  301. angr/analyses/variable_recovery/variable_recovery_base.py +12 -14
  302. angr/analyses/variable_recovery/variable_recovery_fast.py +67 -47
  303. angr/analyses/veritesting.py +10 -16
  304. angr/analyses/vfg.py +105 -151
  305. angr/analyses/vsa_ddg.py +3 -5
  306. angr/analyses/vtable.py +6 -6
  307. angr/analyses/xrefs.py +9 -13
  308. angr/angrdb/__init__.py +4 -2
  309. angr/angrdb/db.py +51 -53
  310. angr/angrdb/models.py +1 -0
  311. angr/angrdb/serializers/__init__.py +1 -0
  312. angr/angrdb/serializers/cfg_model.py +2 -2
  313. angr/angrdb/serializers/comments.py +1 -0
  314. angr/angrdb/serializers/funcs.py +4 -3
  315. angr/angrdb/serializers/kb.py +3 -2
  316. angr/angrdb/serializers/labels.py +1 -0
  317. angr/angrdb/serializers/structured_code.py +5 -10
  318. angr/angrdb/serializers/variables.py +6 -6
  319. angr/angrdb/serializers/xrefs.py +2 -2
  320. angr/annocfg.py +17 -25
  321. angr/blade.py +19 -23
  322. angr/block.py +11 -13
  323. angr/callable.py +4 -3
  324. angr/calling_conventions.py +80 -123
  325. angr/code_location.py +12 -13
  326. angr/codenode.py +2 -1
  327. angr/concretization_strategies/__init__.py +6 -6
  328. angr/concretization_strategies/any.py +5 -4
  329. angr/concretization_strategies/any_named.py +4 -1
  330. angr/concretization_strategies/controlled_data.py +5 -2
  331. angr/concretization_strategies/eval.py +2 -2
  332. angr/concretization_strategies/logging.py +1 -0
  333. angr/concretization_strategies/max.py +6 -6
  334. angr/concretization_strategies/nonzero.py +1 -0
  335. angr/concretization_strategies/nonzero_range.py +4 -3
  336. angr/concretization_strategies/norepeats.py +2 -1
  337. angr/concretization_strategies/norepeats_range.py +1 -0
  338. angr/concretization_strategies/range.py +1 -0
  339. angr/concretization_strategies/signed_add.py +15 -9
  340. angr/concretization_strategies/single.py +2 -0
  341. angr/concretization_strategies/solutions.py +1 -0
  342. angr/concretization_strategies/unlimited_range.py +1 -0
  343. angr/distributed/__init__.py +1 -0
  344. angr/distributed/server.py +2 -2
  345. angr/distributed/worker.py +3 -3
  346. angr/engines/__init__.py +1 -0
  347. angr/engines/concrete.py +4 -1
  348. angr/engines/engine.py +4 -6
  349. angr/engines/failure.py +2 -1
  350. angr/engines/hook.py +1 -0
  351. angr/engines/light/__init__.py +1 -0
  352. angr/engines/light/data.py +221 -255
  353. angr/engines/light/engine.py +66 -74
  354. angr/engines/pcode/__init__.py +1 -0
  355. angr/engines/pcode/behavior.py +5 -3
  356. angr/engines/pcode/cc.py +1 -0
  357. angr/engines/pcode/emulate.py +16 -19
  358. angr/engines/pcode/engine.py +8 -10
  359. angr/engines/pcode/lifter.py +62 -79
  360. angr/engines/procedure.py +1 -0
  361. angr/engines/soot/__init__.py +1 -0
  362. angr/engines/soot/engine.py +48 -53
  363. angr/engines/soot/exceptions.py +3 -0
  364. angr/engines/soot/expressions/__init__.py +1 -0
  365. angr/engines/soot/expressions/arrayref.py +1 -0
  366. angr/engines/soot/expressions/base.py +4 -5
  367. angr/engines/soot/expressions/binop.py +1 -0
  368. angr/engines/soot/expressions/cast.py +1 -0
  369. angr/engines/soot/expressions/condition.py +1 -0
  370. angr/engines/soot/expressions/constants.py +7 -5
  371. angr/engines/soot/expressions/instanceOf.py +1 -0
  372. angr/engines/soot/expressions/instancefieldref.py +1 -0
  373. angr/engines/soot/expressions/invoke.py +7 -9
  374. angr/engines/soot/expressions/length.py +1 -0
  375. angr/engines/soot/expressions/local.py +1 -0
  376. angr/engines/soot/expressions/new.py +1 -0
  377. angr/engines/soot/expressions/newArray.py +4 -1
  378. angr/engines/soot/expressions/newMultiArray.py +6 -4
  379. angr/engines/soot/expressions/paramref.py +1 -0
  380. angr/engines/soot/expressions/phi.py +1 -0
  381. angr/engines/soot/expressions/staticfieldref.py +1 -0
  382. angr/engines/soot/expressions/thisref.py +1 -0
  383. angr/engines/soot/expressions/unsupported.py +1 -0
  384. angr/engines/soot/field_dispatcher.py +5 -8
  385. angr/engines/soot/method_dispatcher.py +4 -7
  386. angr/engines/soot/statements/__init__.py +4 -4
  387. angr/engines/soot/statements/assign.py +1 -0
  388. angr/engines/soot/statements/base.py +6 -7
  389. angr/engines/soot/statements/goto.py +4 -1
  390. angr/engines/soot/statements/identity.py +1 -0
  391. angr/engines/soot/statements/if_.py +4 -1
  392. angr/engines/soot/statements/invoke.py +1 -0
  393. angr/engines/soot/statements/return_.py +1 -0
  394. angr/engines/soot/statements/switch.py +4 -1
  395. angr/engines/soot/statements/throw.py +5 -2
  396. angr/engines/soot/values/__init__.py +4 -2
  397. angr/engines/soot/values/arrayref.py +13 -15
  398. angr/engines/soot/values/base.py +4 -1
  399. angr/engines/soot/values/constants.py +1 -0
  400. angr/engines/soot/values/instancefieldref.py +1 -0
  401. angr/engines/soot/values/local.py +1 -0
  402. angr/engines/soot/values/paramref.py +1 -0
  403. angr/engines/soot/values/staticfieldref.py +1 -0
  404. angr/engines/soot/values/strref.py +3 -2
  405. angr/engines/soot/values/thisref.py +1 -0
  406. angr/engines/successors.py +20 -23
  407. angr/engines/syscall.py +9 -9
  408. angr/engines/unicorn.py +20 -14
  409. angr/engines/vex/__init__.py +1 -0
  410. angr/engines/vex/claripy/__init__.py +1 -0
  411. angr/engines/vex/claripy/ccall.py +86 -112
  412. angr/engines/vex/claripy/datalayer.py +12 -16
  413. angr/engines/vex/claripy/irop.py +85 -104
  414. angr/engines/vex/heavy/__init__.py +1 -0
  415. angr/engines/vex/heavy/actions.py +1 -0
  416. angr/engines/vex/heavy/concretizers.py +14 -15
  417. angr/engines/vex/heavy/dirty.py +20 -21
  418. angr/engines/vex/heavy/heavy.py +17 -20
  419. angr/engines/vex/heavy/inspect.py +1 -0
  420. angr/engines/vex/heavy/resilience.py +2 -2
  421. angr/engines/vex/heavy/super_fastpath.py +2 -2
  422. angr/engines/vex/lifter.py +28 -35
  423. angr/engines/vex/light/__init__.py +1 -0
  424. angr/engines/vex/light/light.py +2 -4
  425. angr/engines/vex/light/resilience.py +1 -0
  426. angr/engines/vex/light/slicing.py +1 -0
  427. angr/errors.py +2 -1
  428. angr/exploration_techniques/__init__.py +3 -2
  429. angr/exploration_techniques/bucketizer.py +2 -3
  430. angr/exploration_techniques/common.py +3 -3
  431. angr/exploration_techniques/dfs.py +1 -0
  432. angr/exploration_techniques/director.py +18 -20
  433. angr/exploration_techniques/driller_core.py +5 -6
  434. angr/exploration_techniques/explorer.py +7 -3
  435. angr/exploration_techniques/lengthlimiter.py +1 -0
  436. angr/exploration_techniques/local_loop_seer.py +2 -2
  437. angr/exploration_techniques/loop_seer.py +11 -14
  438. angr/exploration_techniques/manual_mergepoint.py +3 -2
  439. angr/exploration_techniques/memory_watcher.py +1 -0
  440. angr/exploration_techniques/oppologist.py +4 -4
  441. angr/exploration_techniques/slicecutor.py +1 -0
  442. angr/exploration_techniques/spiller.py +8 -8
  443. angr/exploration_techniques/spiller_db.py +1 -0
  444. angr/exploration_techniques/stochastic.py +3 -4
  445. angr/exploration_techniques/stub_stasher.py +1 -0
  446. angr/exploration_techniques/suggestions.py +3 -2
  447. angr/exploration_techniques/symbion.py +1 -0
  448. angr/exploration_techniques/tech_builder.py +1 -0
  449. angr/exploration_techniques/threading.py +1 -0
  450. angr/exploration_techniques/timeout.py +1 -0
  451. angr/exploration_techniques/tracer.py +36 -40
  452. angr/exploration_techniques/unique.py +1 -0
  453. angr/exploration_techniques/veritesting.py +1 -0
  454. angr/factory.py +9 -9
  455. angr/flirt/__init__.py +1 -0
  456. angr/flirt/build_sig.py +8 -12
  457. angr/keyed_region.py +10 -17
  458. angr/knowledge_base/__init__.py +1 -0
  459. angr/knowledge_base/knowledge_base.py +17 -17
  460. angr/knowledge_plugins/__init__.py +1 -0
  461. angr/knowledge_plugins/callsite_prototypes.py +1 -0
  462. angr/knowledge_plugins/cfg/__init__.py +2 -0
  463. angr/knowledge_plugins/cfg/cfg_manager.py +2 -1
  464. angr/knowledge_plugins/cfg/cfg_model.py +25 -42
  465. angr/knowledge_plugins/cfg/cfg_node.py +8 -19
  466. angr/knowledge_plugins/cfg/indirect_jump.py +3 -5
  467. angr/knowledge_plugins/cfg/memory_data.py +3 -3
  468. angr/knowledge_plugins/comments.py +1 -0
  469. angr/knowledge_plugins/custom_strings.py +1 -0
  470. angr/knowledge_plugins/data.py +1 -0
  471. angr/knowledge_plugins/debug_variables.py +18 -23
  472. angr/knowledge_plugins/functions/__init__.py +1 -0
  473. angr/knowledge_plugins/functions/function.py +49 -53
  474. angr/knowledge_plugins/functions/function_manager.py +14 -14
  475. angr/knowledge_plugins/functions/function_parser.py +38 -42
  476. angr/knowledge_plugins/functions/soot_function.py +5 -6
  477. angr/knowledge_plugins/indirect_jumps.py +1 -0
  478. angr/knowledge_plugins/key_definitions/__init__.py +1 -0
  479. angr/knowledge_plugins/key_definitions/atoms.py +65 -17
  480. angr/knowledge_plugins/key_definitions/constants.py +6 -0
  481. angr/knowledge_plugins/key_definitions/definition.py +22 -25
  482. angr/knowledge_plugins/key_definitions/environment.py +18 -14
  483. angr/knowledge_plugins/key_definitions/heap_address.py +4 -3
  484. angr/knowledge_plugins/key_definitions/key_definition_manager.py +5 -4
  485. angr/knowledge_plugins/key_definitions/live_definitions.py +36 -45
  486. angr/knowledge_plugins/key_definitions/liveness.py +18 -23
  487. angr/knowledge_plugins/key_definitions/rd_model.py +29 -34
  488. angr/knowledge_plugins/key_definitions/tag.py +7 -6
  489. angr/knowledge_plugins/key_definitions/undefined.py +3 -0
  490. angr/knowledge_plugins/key_definitions/unknown_size.py +3 -0
  491. angr/knowledge_plugins/key_definitions/uses.py +21 -23
  492. angr/knowledge_plugins/labels.py +3 -2
  493. angr/knowledge_plugins/patches.py +2 -1
  494. angr/knowledge_plugins/plugin.py +2 -1
  495. angr/knowledge_plugins/propagations/__init__.py +1 -0
  496. angr/knowledge_plugins/propagations/prop_value.py +25 -27
  497. angr/knowledge_plugins/propagations/propagation_manager.py +2 -2
  498. angr/knowledge_plugins/propagations/propagation_model.py +5 -4
  499. angr/knowledge_plugins/propagations/states.py +71 -81
  500. angr/knowledge_plugins/structured_code/__init__.py +1 -0
  501. angr/knowledge_plugins/structured_code/manager.py +5 -4
  502. angr/knowledge_plugins/sync/__init__.py +1 -0
  503. angr/knowledge_plugins/sync/sync_controller.py +10 -15
  504. angr/knowledge_plugins/types.py +1 -0
  505. angr/knowledge_plugins/variables/__init__.py +1 -0
  506. angr/knowledge_plugins/variables/variable_access.py +9 -10
  507. angr/knowledge_plugins/variables/variable_manager.py +84 -55
  508. angr/knowledge_plugins/xrefs/__init__.py +1 -0
  509. angr/knowledge_plugins/xrefs/xref.py +7 -11
  510. angr/knowledge_plugins/xrefs/xref_manager.py +1 -0
  511. angr/knowledge_plugins/xrefs/xref_types.py +3 -0
  512. angr/misc/__init__.py +1 -0
  513. angr/misc/ansi.py +1 -0
  514. angr/misc/autoimport.py +3 -2
  515. angr/misc/bug_report.py +6 -5
  516. angr/misc/hookset.py +3 -2
  517. angr/misc/loggers.py +2 -2
  518. angr/misc/picklable_lock.py +1 -0
  519. angr/misc/plugins.py +11 -13
  520. angr/misc/range.py +3 -0
  521. angr/misc/testing.py +2 -1
  522. angr/misc/ux.py +5 -5
  523. angr/misc/weakpatch.py +1 -0
  524. angr/procedures/__init__.py +1 -0
  525. angr/procedures/cgc/_terminate.py +1 -0
  526. angr/procedures/cgc/allocate.py +9 -10
  527. angr/procedures/cgc/deallocate.py +11 -3
  528. angr/procedures/cgc/fdwait.py +16 -13
  529. angr/procedures/cgc/random.py +12 -5
  530. angr/procedures/cgc/receive.py +30 -28
  531. angr/procedures/cgc/transmit.py +6 -4
  532. angr/procedures/definitions/__init__.py +9 -10
  533. angr/procedures/definitions/cgc.py +1 -0
  534. angr/procedures/definitions/glibc.py +1 -0
  535. angr/procedures/definitions/gnulib.py +1 -0
  536. angr/procedures/definitions/libstdcpp.py +1 -0
  537. angr/procedures/definitions/linux_kernel.py +1 -0
  538. angr/procedures/definitions/linux_loader.py +1 -0
  539. angr/procedures/definitions/msvcr.py +1 -0
  540. angr/procedures/definitions/parse_syscalls_from_local_system.py +2 -1
  541. angr/procedures/definitions/parse_win32json.py +27 -30
  542. angr/procedures/definitions/types_win32.py +1 -0
  543. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +1 -0
  544. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +1 -0
  545. angr/procedures/definitions/wdk_clfs.py +1 -0
  546. angr/procedures/definitions/wdk_fltmgr.py +1 -0
  547. angr/procedures/definitions/wdk_fwpkclnt.py +1 -0
  548. angr/procedures/definitions/wdk_fwpuclnt.py +1 -0
  549. angr/procedures/definitions/wdk_gdi32.py +1 -0
  550. angr/procedures/definitions/wdk_hal.py +1 -0
  551. angr/procedures/definitions/wdk_ksecdd.py +1 -0
  552. angr/procedures/definitions/wdk_ndis.py +1 -0
  553. angr/procedures/definitions/wdk_ntoskrnl.py +1 -0
  554. angr/procedures/definitions/wdk_offreg.py +1 -0
  555. angr/procedures/definitions/wdk_pshed.py +1 -0
  556. angr/procedures/definitions/wdk_secur32.py +1 -0
  557. angr/procedures/definitions/wdk_vhfum.py +1 -0
  558. angr/procedures/definitions/win32_aclui.py +1 -0
  559. angr/procedures/definitions/win32_activeds.py +1 -0
  560. angr/procedures/definitions/win32_advapi32.py +1 -0
  561. angr/procedures/definitions/win32_advpack.py +1 -0
  562. angr/procedures/definitions/win32_amsi.py +1 -0
  563. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +1 -0
  564. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +1 -0
  565. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +1 -0
  566. angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +1 -0
  567. angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +1 -0
  568. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +1 -0
  569. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +1 -0
  570. angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +1 -0
  571. angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +1 -0
  572. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +1 -0
  573. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +1 -0
  574. angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +1 -0
  575. angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +1 -0
  576. angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +1 -0
  577. angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +1 -0
  578. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +1 -0
  579. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +1 -0
  580. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +1 -0
  581. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +1 -0
  582. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +1 -0
  583. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +1 -0
  584. angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +1 -0
  585. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +1 -0
  586. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +1 -0
  587. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +1 -0
  588. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +1 -0
  589. angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +1 -0
  590. angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +1 -0
  591. angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +1 -0
  592. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +1 -0
  593. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +1 -0
  594. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +1 -0
  595. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +1 -0
  596. angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +1 -0
  597. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +1 -0
  598. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +1 -0
  599. angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +1 -0
  600. angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +1 -0
  601. angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +1 -0
  602. angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +1 -0
  603. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +1 -0
  604. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +1 -0
  605. angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +1 -0
  606. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +1 -0
  607. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +1 -0
  608. angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +1 -0
  609. angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +1 -0
  610. angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +1 -0
  611. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +1 -0
  612. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +1 -0
  613. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +1 -0
  614. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +1 -0
  615. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +1 -0
  616. angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +1 -0
  617. angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +1 -0
  618. angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +1 -0
  619. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +1 -0
  620. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +1 -0
  621. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +1 -0
  622. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +1 -0
  623. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +1 -0
  624. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +1 -0
  625. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +1 -0
  626. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +1 -0
  627. angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +1 -0
  628. angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +1 -0
  629. angr/procedures/definitions/win32_apphelp.py +1 -0
  630. angr/procedures/definitions/win32_authz.py +1 -0
  631. angr/procedures/definitions/win32_avicap32.py +1 -0
  632. angr/procedures/definitions/win32_avifil32.py +1 -0
  633. angr/procedures/definitions/win32_avrt.py +1 -0
  634. angr/procedures/definitions/win32_bcp47mrm.py +1 -0
  635. angr/procedures/definitions/win32_bcrypt.py +1 -0
  636. angr/procedures/definitions/win32_bcryptprimitives.py +1 -0
  637. angr/procedures/definitions/win32_bluetoothapis.py +1 -0
  638. angr/procedures/definitions/win32_bthprops.py +1 -0
  639. angr/procedures/definitions/win32_bthprops_cpl.py +1 -0
  640. angr/procedures/definitions/win32_cabinet.py +1 -0
  641. angr/procedures/definitions/win32_certadm.py +1 -0
  642. angr/procedures/definitions/win32_certpoleng.py +1 -0
  643. angr/procedures/definitions/win32_cfgmgr32.py +1 -0
  644. angr/procedures/definitions/win32_chakra.py +1 -0
  645. angr/procedures/definitions/win32_cldapi.py +1 -0
  646. angr/procedures/definitions/win32_clfsw32.py +1 -0
  647. angr/procedures/definitions/win32_clusapi.py +1 -0
  648. angr/procedures/definitions/win32_comctl32.py +1 -0
  649. angr/procedures/definitions/win32_comdlg32.py +1 -0
  650. angr/procedures/definitions/win32_compstui.py +1 -0
  651. angr/procedures/definitions/win32_computecore.py +1 -0
  652. angr/procedures/definitions/win32_computenetwork.py +1 -0
  653. angr/procedures/definitions/win32_computestorage.py +1 -0
  654. angr/procedures/definitions/win32_comsvcs.py +1 -0
  655. angr/procedures/definitions/win32_coremessaging.py +1 -0
  656. angr/procedures/definitions/win32_credui.py +1 -0
  657. angr/procedures/definitions/win32_crypt32.py +1 -0
  658. angr/procedures/definitions/win32_cryptnet.py +1 -0
  659. angr/procedures/definitions/win32_cryptui.py +1 -0
  660. angr/procedures/definitions/win32_cryptxml.py +1 -0
  661. angr/procedures/definitions/win32_cscapi.py +1 -0
  662. angr/procedures/definitions/win32_d2d1.py +1 -0
  663. angr/procedures/definitions/win32_d3d10.py +1 -0
  664. angr/procedures/definitions/win32_d3d10_1.py +1 -0
  665. angr/procedures/definitions/win32_d3d11.py +1 -0
  666. angr/procedures/definitions/win32_d3d12.py +1 -0
  667. angr/procedures/definitions/win32_d3d9.py +1 -0
  668. angr/procedures/definitions/win32_d3dcompiler_47.py +1 -0
  669. angr/procedures/definitions/win32_d3dcsx.py +1 -0
  670. angr/procedures/definitions/win32_davclnt.py +1 -0
  671. angr/procedures/definitions/win32_dbgeng.py +1 -0
  672. angr/procedures/definitions/win32_dbghelp.py +1 -0
  673. angr/procedures/definitions/win32_dbgmodel.py +1 -0
  674. angr/procedures/definitions/win32_dciman32.py +1 -0
  675. angr/procedures/definitions/win32_dcomp.py +1 -0
  676. angr/procedures/definitions/win32_ddraw.py +1 -0
  677. angr/procedures/definitions/win32_deviceaccess.py +1 -0
  678. angr/procedures/definitions/win32_dflayout.py +1 -0
  679. angr/procedures/definitions/win32_dhcpcsvc.py +1 -0
  680. angr/procedures/definitions/win32_dhcpcsvc6.py +1 -0
  681. angr/procedures/definitions/win32_dhcpsapi.py +1 -0
  682. angr/procedures/definitions/win32_diagnosticdataquery.py +1 -0
  683. angr/procedures/definitions/win32_dinput8.py +1 -0
  684. angr/procedures/definitions/win32_directml.py +1 -0
  685. angr/procedures/definitions/win32_dmprocessxmlfiltered.py +1 -0
  686. angr/procedures/definitions/win32_dnsapi.py +1 -0
  687. angr/procedures/definitions/win32_drt.py +1 -0
  688. angr/procedures/definitions/win32_drtprov.py +1 -0
  689. angr/procedures/definitions/win32_drttransport.py +1 -0
  690. angr/procedures/definitions/win32_dsound.py +1 -0
  691. angr/procedures/definitions/win32_dsparse.py +1 -0
  692. angr/procedures/definitions/win32_dsprop.py +1 -0
  693. angr/procedures/definitions/win32_dssec.py +1 -0
  694. angr/procedures/definitions/win32_dsuiext.py +1 -0
  695. angr/procedures/definitions/win32_dwmapi.py +1 -0
  696. angr/procedures/definitions/win32_dwrite.py +1 -0
  697. angr/procedures/definitions/win32_dxcompiler.py +1 -0
  698. angr/procedures/definitions/win32_dxcore.py +1 -0
  699. angr/procedures/definitions/win32_dxgi.py +1 -0
  700. angr/procedures/definitions/win32_dxva2.py +1 -0
  701. angr/procedures/definitions/win32_eappcfg.py +1 -0
  702. angr/procedures/definitions/win32_eappprxy.py +1 -0
  703. angr/procedures/definitions/win32_efswrt.py +1 -0
  704. angr/procedures/definitions/win32_elscore.py +1 -0
  705. angr/procedures/definitions/win32_esent.py +1 -0
  706. angr/procedures/definitions/win32_evr.py +1 -0
  707. angr/procedures/definitions/win32_faultrep.py +1 -0
  708. angr/procedures/definitions/win32_fhsvcctl.py +1 -0
  709. angr/procedures/definitions/win32_firewallapi.py +1 -0
  710. angr/procedures/definitions/win32_fltlib.py +1 -0
  711. angr/procedures/definitions/win32_fontsub.py +1 -0
  712. angr/procedures/definitions/win32_forceinline.py +1 -0
  713. angr/procedures/definitions/win32_fwpuclnt.py +1 -0
  714. angr/procedures/definitions/win32_fxsutility.py +1 -0
  715. angr/procedures/definitions/win32_gdi32.py +1 -0
  716. angr/procedures/definitions/win32_gdiplus.py +1 -0
  717. angr/procedures/definitions/win32_glu32.py +1 -0
  718. angr/procedures/definitions/win32_gpedit.py +1 -0
  719. angr/procedures/definitions/win32_hhctrl_ocx.py +1 -0
  720. angr/procedures/definitions/win32_hid.py +1 -0
  721. angr/procedures/definitions/win32_hlink.py +1 -0
  722. angr/procedures/definitions/win32_hrtfapo.py +1 -0
  723. angr/procedures/definitions/win32_httpapi.py +1 -0
  724. angr/procedures/definitions/win32_icm32.py +1 -0
  725. angr/procedures/definitions/win32_icmui.py +1 -0
  726. angr/procedures/definitions/win32_icu.py +1 -0
  727. angr/procedures/definitions/win32_ieframe.py +1 -0
  728. angr/procedures/definitions/win32_imagehlp.py +1 -0
  729. angr/procedures/definitions/win32_imgutil.py +1 -0
  730. angr/procedures/definitions/win32_imm32.py +1 -0
  731. angr/procedures/definitions/win32_infocardapi.py +1 -0
  732. angr/procedures/definitions/win32_inkobjcore.py +1 -0
  733. angr/procedures/definitions/win32_iphlpapi.py +1 -0
  734. angr/procedures/definitions/win32_iscsidsc.py +1 -0
  735. angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +1 -0
  736. angr/procedures/definitions/win32_kernel32.py +1 -0
  737. angr/procedures/definitions/win32_kernelbase.py +1 -0
  738. angr/procedures/definitions/win32_keycredmgr.py +1 -0
  739. angr/procedures/definitions/win32_ksproxy_ax.py +1 -0
  740. angr/procedures/definitions/win32_ksuser.py +1 -0
  741. angr/procedures/definitions/win32_ktmw32.py +1 -0
  742. angr/procedures/definitions/win32_licenseprotection.py +1 -0
  743. angr/procedures/definitions/win32_loadperf.py +1 -0
  744. angr/procedures/definitions/win32_magnification.py +1 -0
  745. angr/procedures/definitions/win32_mapi32.py +1 -0
  746. angr/procedures/definitions/win32_mdmlocalmanagement.py +1 -0
  747. angr/procedures/definitions/win32_mdmregistration.py +1 -0
  748. angr/procedures/definitions/win32_mf.py +1 -0
  749. angr/procedures/definitions/win32_mfcore.py +1 -0
  750. angr/procedures/definitions/win32_mfplat.py +1 -0
  751. angr/procedures/definitions/win32_mfplay.py +1 -0
  752. angr/procedures/definitions/win32_mfreadwrite.py +1 -0
  753. angr/procedures/definitions/win32_mfsensorgroup.py +1 -0
  754. angr/procedures/definitions/win32_mfsrcsnk.py +1 -0
  755. angr/procedures/definitions/win32_mgmtapi.py +1 -0
  756. angr/procedures/definitions/win32_mi.py +1 -0
  757. angr/procedures/definitions/win32_mmdevapi.py +1 -0
  758. angr/procedures/definitions/win32_mpr.py +1 -0
  759. angr/procedures/definitions/win32_mprapi.py +1 -0
  760. angr/procedures/definitions/win32_mqrt.py +1 -0
  761. angr/procedures/definitions/win32_mrmsupport.py +1 -0
  762. angr/procedures/definitions/win32_msacm32.py +1 -0
  763. angr/procedures/definitions/win32_msajapi.py +1 -0
  764. angr/procedures/definitions/win32_mscms.py +1 -0
  765. angr/procedures/definitions/win32_mscoree.py +1 -0
  766. angr/procedures/definitions/win32_msctfmonitor.py +1 -0
  767. angr/procedures/definitions/win32_msdelta.py +1 -0
  768. angr/procedures/definitions/win32_msdmo.py +1 -0
  769. angr/procedures/definitions/win32_msdrm.py +1 -0
  770. angr/procedures/definitions/win32_msi.py +1 -0
  771. angr/procedures/definitions/win32_msimg32.py +1 -0
  772. angr/procedures/definitions/win32_mspatcha.py +1 -0
  773. angr/procedures/definitions/win32_mspatchc.py +1 -0
  774. angr/procedures/definitions/win32_msports.py +1 -0
  775. angr/procedures/definitions/win32_msrating.py +1 -0
  776. angr/procedures/definitions/win32_mssign32.py +1 -0
  777. angr/procedures/definitions/win32_mstask.py +1 -0
  778. angr/procedures/definitions/win32_msvfw32.py +1 -0
  779. angr/procedures/definitions/win32_mswsock.py +1 -0
  780. angr/procedures/definitions/win32_mtxdm.py +1 -0
  781. angr/procedures/definitions/win32_ncrypt.py +1 -0
  782. angr/procedures/definitions/win32_ndfapi.py +1 -0
  783. angr/procedures/definitions/win32_netapi32.py +1 -0
  784. angr/procedures/definitions/win32_netsh.py +1 -0
  785. angr/procedures/definitions/win32_netshell.py +1 -0
  786. angr/procedures/definitions/win32_newdev.py +1 -0
  787. angr/procedures/definitions/win32_ninput.py +1 -0
  788. angr/procedures/definitions/win32_normaliz.py +1 -0
  789. angr/procedures/definitions/win32_ntdll.py +1 -0
  790. angr/procedures/definitions/win32_ntdllk.py +1 -0
  791. angr/procedures/definitions/win32_ntdsapi.py +1 -0
  792. angr/procedures/definitions/win32_ntlanman.py +1 -0
  793. angr/procedures/definitions/win32_odbc32.py +1 -0
  794. angr/procedures/definitions/win32_odbcbcp.py +1 -0
  795. angr/procedures/definitions/win32_ole32.py +1 -0
  796. angr/procedures/definitions/win32_oleacc.py +1 -0
  797. angr/procedures/definitions/win32_oleaut32.py +1 -0
  798. angr/procedures/definitions/win32_oledlg.py +1 -0
  799. angr/procedures/definitions/win32_ondemandconnroutehelper.py +1 -0
  800. angr/procedures/definitions/win32_opengl32.py +1 -0
  801. angr/procedures/definitions/win32_opmxbox.py +1 -0
  802. angr/procedures/definitions/win32_p2p.py +1 -0
  803. angr/procedures/definitions/win32_p2pgraph.py +1 -0
  804. angr/procedures/definitions/win32_pdh.py +1 -0
  805. angr/procedures/definitions/win32_peerdist.py +1 -0
  806. angr/procedures/definitions/win32_powrprof.py +1 -0
  807. angr/procedures/definitions/win32_prntvpt.py +1 -0
  808. angr/procedures/definitions/win32_projectedfslib.py +1 -0
  809. angr/procedures/definitions/win32_propsys.py +1 -0
  810. angr/procedures/definitions/win32_psapi.py +1 -0
  811. angr/procedures/definitions/win32_quartz.py +1 -0
  812. angr/procedures/definitions/win32_query.py +1 -0
  813. angr/procedures/definitions/win32_qwave.py +1 -0
  814. angr/procedures/definitions/win32_rasapi32.py +1 -0
  815. angr/procedures/definitions/win32_rasdlg.py +1 -0
  816. angr/procedures/definitions/win32_resutils.py +1 -0
  817. angr/procedures/definitions/win32_rometadata.py +1 -0
  818. angr/procedures/definitions/win32_rpcns4.py +1 -0
  819. angr/procedures/definitions/win32_rpcproxy.py +1 -0
  820. angr/procedures/definitions/win32_rpcrt4.py +1 -0
  821. angr/procedures/definitions/win32_rstrtmgr.py +1 -0
  822. angr/procedures/definitions/win32_rtm.py +1 -0
  823. angr/procedures/definitions/win32_rtutils.py +1 -0
  824. angr/procedures/definitions/win32_rtworkq.py +1 -0
  825. angr/procedures/definitions/win32_sas.py +1 -0
  826. angr/procedures/definitions/win32_scarddlg.py +1 -0
  827. angr/procedures/definitions/win32_schannel.py +1 -0
  828. angr/procedures/definitions/win32_sechost.py +1 -0
  829. angr/procedures/definitions/win32_secur32.py +1 -0
  830. angr/procedures/definitions/win32_sensapi.py +1 -0
  831. angr/procedures/definitions/win32_sensorsutilsv2.py +1 -0
  832. angr/procedures/definitions/win32_setupapi.py +1 -0
  833. angr/procedures/definitions/win32_sfc.py +1 -0
  834. angr/procedures/definitions/win32_shdocvw.py +1 -0
  835. angr/procedures/definitions/win32_shell32.py +1 -0
  836. angr/procedures/definitions/win32_shlwapi.py +1 -0
  837. angr/procedures/definitions/win32_slc.py +1 -0
  838. angr/procedures/definitions/win32_slcext.py +1 -0
  839. angr/procedures/definitions/win32_slwga.py +1 -0
  840. angr/procedures/definitions/win32_snmpapi.py +1 -0
  841. angr/procedures/definitions/win32_spoolss.py +1 -0
  842. angr/procedures/definitions/win32_srclient.py +1 -0
  843. angr/procedures/definitions/win32_srpapi.py +1 -0
  844. angr/procedures/definitions/win32_sspicli.py +1 -0
  845. angr/procedures/definitions/win32_sti.py +1 -0
  846. angr/procedures/definitions/win32_t2embed.py +1 -0
  847. angr/procedures/definitions/win32_tapi32.py +1 -0
  848. angr/procedures/definitions/win32_tbs.py +1 -0
  849. angr/procedures/definitions/win32_tdh.py +1 -0
  850. angr/procedures/definitions/win32_tokenbinding.py +1 -0
  851. angr/procedures/definitions/win32_traffic.py +1 -0
  852. angr/procedures/definitions/win32_txfw32.py +1 -0
  853. angr/procedures/definitions/win32_ualapi.py +1 -0
  854. angr/procedures/definitions/win32_uiautomationcore.py +1 -0
  855. angr/procedures/definitions/win32_urlmon.py +1 -0
  856. angr/procedures/definitions/win32_user32.py +1 -0
  857. angr/procedures/definitions/win32_userenv.py +1 -0
  858. angr/procedures/definitions/win32_usp10.py +1 -0
  859. angr/procedures/definitions/win32_uxtheme.py +1 -0
  860. angr/procedures/definitions/win32_verifier.py +1 -0
  861. angr/procedures/definitions/win32_version.py +1 -0
  862. angr/procedures/definitions/win32_vertdll.py +1 -0
  863. angr/procedures/definitions/win32_virtdisk.py +1 -0
  864. angr/procedures/definitions/win32_vmdevicehost.py +1 -0
  865. angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +1 -0
  866. angr/procedures/definitions/win32_vssapi.py +1 -0
  867. angr/procedures/definitions/win32_wcmapi.py +1 -0
  868. angr/procedures/definitions/win32_wdsbp.py +1 -0
  869. angr/procedures/definitions/win32_wdsclientapi.py +1 -0
  870. angr/procedures/definitions/win32_wdsmc.py +1 -0
  871. angr/procedures/definitions/win32_wdspxe.py +1 -0
  872. angr/procedures/definitions/win32_wdstptc.py +1 -0
  873. angr/procedures/definitions/win32_webauthn.py +1 -0
  874. angr/procedures/definitions/win32_webservices.py +1 -0
  875. angr/procedures/definitions/win32_websocket.py +1 -0
  876. angr/procedures/definitions/win32_wecapi.py +1 -0
  877. angr/procedures/definitions/win32_wer.py +1 -0
  878. angr/procedures/definitions/win32_wevtapi.py +1 -0
  879. angr/procedures/definitions/win32_winbio.py +1 -0
  880. angr/procedures/definitions/win32_windows_ai_machinelearning.py +1 -0
  881. angr/procedures/definitions/win32_windows_data_pdf.py +1 -0
  882. angr/procedures/definitions/win32_windows_media_mediacontrol.py +1 -0
  883. angr/procedures/definitions/win32_windows_networking.py +1 -0
  884. angr/procedures/definitions/win32_windows_ui_xaml.py +1 -0
  885. angr/procedures/definitions/win32_windowscodecs.py +1 -0
  886. angr/procedures/definitions/win32_winfax.py +1 -0
  887. angr/procedures/definitions/win32_winhttp.py +1 -0
  888. angr/procedures/definitions/win32_winhvemulation.py +1 -0
  889. angr/procedures/definitions/win32_winhvplatform.py +1 -0
  890. angr/procedures/definitions/win32_wininet.py +1 -0
  891. angr/procedures/definitions/win32_winml.py +1 -0
  892. angr/procedures/definitions/win32_winmm.py +1 -0
  893. angr/procedures/definitions/win32_winscard.py +1 -0
  894. angr/procedures/definitions/win32_winspool.py +1 -0
  895. angr/procedures/definitions/win32_winspool_drv.py +1 -0
  896. angr/procedures/definitions/win32_wintrust.py +1 -0
  897. angr/procedures/definitions/win32_winusb.py +1 -0
  898. angr/procedures/definitions/win32_wlanapi.py +1 -0
  899. angr/procedures/definitions/win32_wlanui.py +1 -0
  900. angr/procedures/definitions/win32_wldap32.py +1 -0
  901. angr/procedures/definitions/win32_wldp.py +1 -0
  902. angr/procedures/definitions/win32_wmvcore.py +1 -0
  903. angr/procedures/definitions/win32_wnvapi.py +1 -0
  904. angr/procedures/definitions/win32_wofutil.py +1 -0
  905. angr/procedures/definitions/win32_ws2_32.py +1 -0
  906. angr/procedures/definitions/win32_wscapi.py +1 -0
  907. angr/procedures/definitions/win32_wsclient.py +1 -0
  908. angr/procedures/definitions/win32_wsdapi.py +1 -0
  909. angr/procedures/definitions/win32_wsmsvc.py +1 -0
  910. angr/procedures/definitions/win32_wsnmp32.py +1 -0
  911. angr/procedures/definitions/win32_wtsapi32.py +1 -0
  912. angr/procedures/definitions/win32_xaudio2_8.py +1 -0
  913. angr/procedures/definitions/win32_xinput1_4.py +1 -0
  914. angr/procedures/definitions/win32_xinputuap.py +1 -0
  915. angr/procedures/definitions/win32_xmllite.py +1 -0
  916. angr/procedures/definitions/win32_xolehlp.py +1 -0
  917. angr/procedures/definitions/win32_xpsprint.py +1 -0
  918. angr/procedures/glibc/__ctype_b_loc.py +2 -3
  919. angr/procedures/glibc/__ctype_tolower_loc.py +2 -3
  920. angr/procedures/glibc/__ctype_toupper_loc.py +2 -3
  921. angr/procedures/glibc/__errno_location.py +1 -0
  922. angr/procedures/glibc/__libc_init.py +1 -0
  923. angr/procedures/glibc/__libc_start_main.py +7 -7
  924. angr/procedures/glibc/dynamic_loading.py +1 -0
  925. angr/procedures/glibc/scanf.py +1 -0
  926. angr/procedures/glibc/sscanf.py +1 -0
  927. angr/procedures/gnulib/xalloc_die.py +1 -0
  928. angr/procedures/gnulib/xstrtol_fatal.py +1 -0
  929. angr/procedures/java/__init__.py +1 -0
  930. angr/procedures/java/unconstrained.py +3 -2
  931. angr/procedures/java_io/read.py +1 -0
  932. angr/procedures/java_io/write.py +1 -0
  933. angr/procedures/java_jni/__init__.py +8 -9
  934. angr/procedures/java_jni/array_operations.py +4 -1
  935. angr/procedures/java_jni/class_and_interface_operations.py +3 -3
  936. angr/procedures/java_jni/field_access.py +3 -6
  937. angr/procedures/java_jni/global_and_local_refs.py +1 -0
  938. angr/procedures/java_jni/method_calls.py +3 -2
  939. angr/procedures/java_jni/not_implemented.py +2 -1
  940. angr/procedures/java_jni/object_operations.py +3 -4
  941. angr/procedures/java_jni/string_operations.py +1 -0
  942. angr/procedures/java_jni/version_information.py +1 -0
  943. angr/procedures/java_lang/character.py +2 -3
  944. angr/procedures/java_lang/double.py +2 -2
  945. angr/procedures/java_lang/exit.py +1 -0
  946. angr/procedures/java_lang/getsimplename.py +2 -2
  947. angr/procedures/java_lang/integer.py +1 -0
  948. angr/procedures/java_lang/load_library.py +1 -0
  949. angr/procedures/java_lang/math.py +1 -0
  950. angr/procedures/java_lang/string.py +3 -3
  951. angr/procedures/java_lang/stringbuilder.py +1 -0
  952. angr/procedures/java_lang/system.py +1 -0
  953. angr/procedures/java_util/collection.py +1 -0
  954. angr/procedures/java_util/iterator.py +1 -0
  955. angr/procedures/java_util/list.py +1 -0
  956. angr/procedures/java_util/map.py +3 -4
  957. angr/procedures/java_util/random.py +4 -1
  958. angr/procedures/java_util/scanner_nextline.py +1 -0
  959. angr/procedures/libc/abort.py +1 -0
  960. angr/procedures/libc/access.py +5 -2
  961. angr/procedures/libc/atoi.py +2 -2
  962. angr/procedures/libc/atol.py +1 -0
  963. angr/procedures/libc/calloc.py +1 -0
  964. angr/procedures/libc/closelog.py +1 -0
  965. angr/procedures/libc/err.py +1 -0
  966. angr/procedures/libc/error.py +2 -3
  967. angr/procedures/libc/exit.py +1 -0
  968. angr/procedures/libc/fclose.py +2 -3
  969. angr/procedures/libc/feof.py +5 -3
  970. angr/procedures/libc/fflush.py +1 -0
  971. angr/procedures/libc/fgetc.py +4 -1
  972. angr/procedures/libc/fgets.py +22 -22
  973. angr/procedures/libc/fopen.py +9 -10
  974. angr/procedures/libc/fprintf.py +1 -0
  975. angr/procedures/libc/fputc.py +1 -0
  976. angr/procedures/libc/fputs.py +1 -0
  977. angr/procedures/libc/fread.py +5 -3
  978. angr/procedures/libc/free.py +1 -0
  979. angr/procedures/libc/fscanf.py +2 -2
  980. angr/procedures/libc/fseek.py +7 -5
  981. angr/procedures/libc/ftell.py +1 -0
  982. angr/procedures/libc/fwrite.py +1 -0
  983. angr/procedures/libc/getchar.py +2 -2
  984. angr/procedures/libc/getdelim.py +30 -27
  985. angr/procedures/libc/getegid.py +1 -0
  986. angr/procedures/libc/geteuid.py +1 -0
  987. angr/procedures/libc/getgid.py +1 -0
  988. angr/procedures/libc/gets.py +20 -18
  989. angr/procedures/libc/getuid.py +1 -0
  990. angr/procedures/libc/malloc.py +1 -0
  991. angr/procedures/libc/memcmp.py +21 -21
  992. angr/procedures/libc/memcpy.py +1 -0
  993. angr/procedures/libc/memset.py +10 -7
  994. angr/procedures/libc/openlog.py +1 -0
  995. angr/procedures/libc/perror.py +1 -0
  996. angr/procedures/libc/printf.py +1 -0
  997. angr/procedures/libc/putchar.py +1 -0
  998. angr/procedures/libc/puts.py +4 -1
  999. angr/procedures/libc/rand.py +1 -0
  1000. angr/procedures/libc/realloc.py +1 -0
  1001. angr/procedures/libc/rewind.py +2 -1
  1002. angr/procedures/libc/scanf.py +2 -2
  1003. angr/procedures/libc/setbuf.py +1 -0
  1004. angr/procedures/libc/setvbuf.py +1 -0
  1005. angr/procedures/libc/snprintf.py +5 -2
  1006. angr/procedures/libc/sprintf.py +4 -1
  1007. angr/procedures/libc/srand.py +1 -0
  1008. angr/procedures/libc/sscanf.py +2 -2
  1009. angr/procedures/libc/stpcpy.py +2 -2
  1010. angr/procedures/libc/strcat.py +1 -0
  1011. angr/procedures/libc/strchr.py +7 -3
  1012. angr/procedures/libc/strcmp.py +6 -3
  1013. angr/procedures/libc/strcpy.py +2 -2
  1014. angr/procedures/libc/strlen.py +38 -34
  1015. angr/procedures/libc/strncat.py +1 -0
  1016. angr/procedures/libc/strncmp.py +34 -36
  1017. angr/procedures/libc/strncpy.py +6 -2
  1018. angr/procedures/libc/strnlen.py +2 -2
  1019. angr/procedures/libc/strstr.py +17 -10
  1020. angr/procedures/libc/strtol.py +39 -41
  1021. angr/procedures/libc/strtoul.py +2 -2
  1022. angr/procedures/libc/system.py +1 -0
  1023. angr/procedures/libc/time.py +2 -2
  1024. angr/procedures/libc/tmpnam.py +1 -0
  1025. angr/procedures/libc/tolower.py +4 -1
  1026. angr/procedures/libc/toupper.py +4 -1
  1027. angr/procedures/libc/ungetc.py +1 -0
  1028. angr/procedures/libc/vsnprintf.py +1 -0
  1029. angr/procedures/libc/wchar.py +1 -0
  1030. angr/procedures/libstdcpp/_unwind_resume.py +1 -0
  1031. angr/procedures/libstdcpp/std____throw_bad_alloc.py +1 -0
  1032. angr/procedures/libstdcpp/std____throw_bad_cast.py +1 -0
  1033. angr/procedures/libstdcpp/std____throw_length_error.py +1 -0
  1034. angr/procedures/libstdcpp/std____throw_logic_error.py +1 -0
  1035. angr/procedures/libstdcpp/std__terminate.py +1 -0
  1036. angr/procedures/linux_kernel/access.py +1 -0
  1037. angr/procedures/linux_kernel/arch_prctl.py +1 -0
  1038. angr/procedures/linux_kernel/arm_user_helpers.py +1 -0
  1039. angr/procedures/linux_kernel/brk.py +1 -0
  1040. angr/procedures/linux_kernel/cwd.py +1 -0
  1041. angr/procedures/linux_kernel/fstat.py +15 -14
  1042. angr/procedures/linux_kernel/fstat64.py +17 -16
  1043. angr/procedures/linux_kernel/futex.py +3 -3
  1044. angr/procedures/linux_kernel/getegid.py +1 -0
  1045. angr/procedures/linux_kernel/geteuid.py +1 -0
  1046. angr/procedures/linux_kernel/getgid.py +1 -0
  1047. angr/procedures/linux_kernel/getpid.py +1 -0
  1048. angr/procedures/linux_kernel/getrlimit.py +3 -3
  1049. angr/procedures/linux_kernel/gettid.py +1 -0
  1050. angr/procedures/linux_kernel/getuid.py +1 -0
  1051. angr/procedures/linux_kernel/iovec.py +1 -0
  1052. angr/procedures/linux_kernel/lseek.py +6 -3
  1053. angr/procedures/linux_kernel/mmap.py +1 -0
  1054. angr/procedures/linux_kernel/mprotect.py +7 -6
  1055. angr/procedures/linux_kernel/munmap.py +1 -0
  1056. angr/procedures/linux_kernel/openat.py +3 -5
  1057. angr/procedures/linux_kernel/set_tid_address.py +1 -0
  1058. angr/procedures/linux_kernel/sigaction.py +5 -2
  1059. angr/procedures/linux_kernel/sigprocmask.py +6 -3
  1060. angr/procedures/linux_kernel/stat.py +3 -2
  1061. angr/procedures/linux_kernel/sysinfo.py +1 -0
  1062. angr/procedures/linux_kernel/tgkill.py +4 -1
  1063. angr/procedures/linux_kernel/time.py +7 -3
  1064. angr/procedures/linux_kernel/uid.py +1 -0
  1065. angr/procedures/linux_kernel/uname.py +1 -0
  1066. angr/procedures/linux_kernel/unlink.py +2 -2
  1067. angr/procedures/linux_kernel/vsyscall.py +1 -0
  1068. angr/procedures/linux_loader/_dl_initial_error_catch_tsd.py +1 -0
  1069. angr/procedures/linux_loader/_dl_rtld_lock.py +1 -0
  1070. angr/procedures/linux_loader/sim_loader.py +1 -0
  1071. angr/procedures/linux_loader/tls.py +2 -2
  1072. angr/procedures/msvcr/__getmainargs.py +1 -0
  1073. angr/procedures/msvcr/_initterm.py +1 -0
  1074. angr/procedures/msvcr/fmode.py +4 -1
  1075. angr/procedures/ntdll/exceptions.py +7 -4
  1076. angr/procedures/posix/accept.py +2 -2
  1077. angr/procedures/posix/bind.py +1 -0
  1078. angr/procedures/posix/bzero.py +4 -1
  1079. angr/procedures/posix/chroot.py +1 -0
  1080. angr/procedures/posix/close.py +2 -2
  1081. angr/procedures/posix/closedir.py +1 -0
  1082. angr/procedures/posix/dup.py +4 -3
  1083. angr/procedures/posix/fcntl.py +1 -0
  1084. angr/procedures/posix/fdopen.py +19 -20
  1085. angr/procedures/posix/fileno.py +1 -0
  1086. angr/procedures/posix/fork.py +7 -4
  1087. angr/procedures/posix/getenv.py +1 -0
  1088. angr/procedures/posix/gethostbyname.py +1 -0
  1089. angr/procedures/posix/getpass.py +1 -0
  1090. angr/procedures/posix/getsockopt.py +1 -0
  1091. angr/procedures/posix/htonl.py +2 -2
  1092. angr/procedures/posix/htons.py +2 -2
  1093. angr/procedures/posix/inet_ntoa.py +3 -5
  1094. angr/procedures/posix/listen.py +1 -0
  1095. angr/procedures/posix/mmap.py +8 -4
  1096. angr/procedures/posix/open.py +1 -0
  1097. angr/procedures/posix/opendir.py +1 -0
  1098. angr/procedures/posix/poll.py +8 -7
  1099. angr/procedures/posix/pread64.py +1 -0
  1100. angr/procedures/posix/pthread.py +3 -3
  1101. angr/procedures/posix/pwrite64.py +1 -0
  1102. angr/procedures/posix/read.py +1 -0
  1103. angr/procedures/posix/readdir.py +11 -8
  1104. angr/procedures/posix/recv.py +1 -0
  1105. angr/procedures/posix/recvfrom.py +1 -0
  1106. angr/procedures/posix/select.py +10 -8
  1107. angr/procedures/posix/send.py +6 -5
  1108. angr/procedures/posix/setsockopt.py +1 -0
  1109. angr/procedures/posix/sigaction.py +5 -2
  1110. angr/procedures/posix/sim_time.py +4 -1
  1111. angr/procedures/posix/sleep.py +1 -0
  1112. angr/procedures/posix/socket.py +2 -2
  1113. angr/procedures/posix/strcasecmp.py +4 -1
  1114. angr/procedures/posix/strdup.py +1 -0
  1115. angr/procedures/posix/strtok_r.py +38 -39
  1116. angr/procedures/posix/syslog.py +1 -0
  1117. angr/procedures/posix/tz.py +1 -0
  1118. angr/procedures/posix/unlink.py +1 -0
  1119. angr/procedures/posix/usleep.py +1 -0
  1120. angr/procedures/posix/write.py +1 -0
  1121. angr/procedures/procedure_dict.py +1 -0
  1122. angr/procedures/stubs/CallReturn.py +1 -0
  1123. angr/procedures/stubs/NoReturnUnconstrained.py +1 -0
  1124. angr/procedures/stubs/Nop.py +1 -0
  1125. angr/procedures/stubs/PathTerminator.py +1 -0
  1126. angr/procedures/stubs/Redirect.py +5 -2
  1127. angr/procedures/stubs/ReturnChar.py +4 -3
  1128. angr/procedures/stubs/ReturnUnconstrained.py +2 -1
  1129. angr/procedures/stubs/UnresolvableCallTarget.py +1 -0
  1130. angr/procedures/stubs/UnresolvableJumpTarget.py +1 -0
  1131. angr/procedures/stubs/UserHook.py +4 -1
  1132. angr/procedures/stubs/b64_decode.py +4 -1
  1133. angr/procedures/stubs/caller.py +1 -0
  1134. angr/procedures/stubs/crazy_scanf.py +7 -4
  1135. angr/procedures/stubs/format_parser.py +24 -30
  1136. angr/procedures/stubs/syscall_stub.py +6 -7
  1137. angr/procedures/testing/manyargs.py +1 -0
  1138. angr/procedures/testing/retreg.py +2 -2
  1139. angr/procedures/tracer/random.py +1 -0
  1140. angr/procedures/tracer/receive.py +6 -4
  1141. angr/procedures/tracer/transmit.py +6 -4
  1142. angr/procedures/uclibc/__uClibc_main.py +1 -0
  1143. angr/procedures/win32/EncodePointer.py +1 -0
  1144. angr/procedures/win32/ExitProcess.py +1 -0
  1145. angr/procedures/win32/GetCommandLine.py +1 -0
  1146. angr/procedures/win32/GetCurrentProcessId.py +1 -0
  1147. angr/procedures/win32/GetCurrentThreadId.py +1 -0
  1148. angr/procedures/win32/GetLastInputInfo.py +5 -2
  1149. angr/procedures/win32/GetModuleHandle.py +3 -4
  1150. angr/procedures/win32/GetProcessAffinityMask.py +5 -2
  1151. angr/procedures/win32/InterlockedExchange.py +2 -1
  1152. angr/procedures/win32/IsProcessorFeaturePresent.py +1 -0
  1153. angr/procedures/win32/VirtualAlloc.py +2 -1
  1154. angr/procedures/win32/VirtualProtect.py +1 -0
  1155. angr/procedures/win32/critical_section.py +1 -0
  1156. angr/procedures/win32/dynamic_loading.py +2 -1
  1157. angr/procedures/win32/file_handles.py +4 -4
  1158. angr/procedures/win32/gethostbyname.py +5 -3
  1159. angr/procedures/win32/heap.py +4 -1
  1160. angr/procedures/win32/is_bad_ptr.py +1 -0
  1161. angr/procedures/win32/local_storage.py +11 -8
  1162. angr/procedures/win32/mutex.py +1 -0
  1163. angr/procedures/win32/sim_time.py +9 -9
  1164. angr/procedures/win32/system_paths.py +5 -4
  1165. angr/procedures/win32_kernel/ExAllocatePool.py +1 -0
  1166. angr/procedures/win32_kernel/ExFreePoolWithTag.py +1 -0
  1167. angr/procedures/win_user32/chars.py +5 -2
  1168. angr/procedures/win_user32/keyboard.py +1 -0
  1169. angr/procedures/win_user32/messagebox.py +5 -5
  1170. angr/project.py +15 -22
  1171. angr/protos/__init__.py +1 -0
  1172. angr/serializable.py +6 -3
  1173. angr/sim_manager.py +18 -18
  1174. angr/sim_options.py +5 -7
  1175. angr/sim_procedure.py +18 -17
  1176. angr/sim_state.py +48 -59
  1177. angr/sim_state_options.py +9 -15
  1178. angr/sim_type.py +96 -126
  1179. angr/sim_variable.py +23 -38
  1180. angr/simos/__init__.py +3 -1
  1181. angr/simos/cgc.py +4 -3
  1182. angr/simos/javavm.py +77 -83
  1183. angr/simos/linux.py +53 -63
  1184. angr/simos/simos.py +16 -24
  1185. angr/simos/snimmuc_nxp.py +3 -6
  1186. angr/simos/userland.py +6 -6
  1187. angr/simos/windows.py +18 -15
  1188. angr/slicer.py +13 -11
  1189. angr/state_hierarchy.py +3 -3
  1190. angr/state_plugins/__init__.py +1 -0
  1191. angr/state_plugins/callstack.py +19 -18
  1192. angr/state_plugins/cgc.py +5 -4
  1193. angr/state_plugins/concrete.py +7 -8
  1194. angr/state_plugins/debug_variables.py +15 -17
  1195. angr/state_plugins/filesystem.py +13 -19
  1196. angr/state_plugins/gdb.py +3 -2
  1197. angr/state_plugins/globals.py +5 -1
  1198. angr/state_plugins/heap/__init__.py +1 -0
  1199. angr/state_plugins/heap/heap_base.py +1 -0
  1200. angr/state_plugins/heap/heap_brk.py +14 -9
  1201. angr/state_plugins/heap/heap_freelist.py +12 -9
  1202. angr/state_plugins/heap/heap_libc.py +1 -0
  1203. angr/state_plugins/heap/heap_ptmalloc.py +32 -40
  1204. angr/state_plugins/heap/utils.py +1 -0
  1205. angr/state_plugins/history.py +14 -15
  1206. angr/state_plugins/inspect.py +1 -0
  1207. angr/state_plugins/javavm_classloader.py +3 -2
  1208. angr/state_plugins/jni_references.py +2 -1
  1209. angr/state_plugins/libc.py +4 -4
  1210. angr/state_plugins/light_registers.py +8 -10
  1211. angr/state_plugins/log.py +1 -0
  1212. angr/state_plugins/loop_data.py +1 -0
  1213. angr/state_plugins/plugin.py +9 -10
  1214. angr/state_plugins/posix.py +39 -45
  1215. angr/state_plugins/preconstrainer.py +4 -2
  1216. angr/state_plugins/scratch.py +5 -4
  1217. angr/state_plugins/sim_action.py +15 -20
  1218. angr/state_plugins/sim_action_object.py +205 -82
  1219. angr/state_plugins/sim_event.py +1 -0
  1220. angr/state_plugins/solver.py +73 -117
  1221. angr/state_plugins/symbolizer.py +5 -6
  1222. angr/state_plugins/trace_additions.py +33 -47
  1223. angr/state_plugins/uc_manager.py +20 -11
  1224. angr/state_plugins/unicorn_engine.py +22 -38
  1225. angr/state_plugins/view.py +21 -20
  1226. angr/storage/__init__.py +1 -0
  1227. angr/storage/file.py +40 -47
  1228. angr/storage/memory_mixins/__init__.py +12 -15
  1229. angr/storage/memory_mixins/__init__.pyi +13 -14
  1230. angr/storage/memory_mixins/actions_mixin.py +5 -2
  1231. angr/storage/memory_mixins/address_concretization_mixin.py +13 -17
  1232. angr/storage/memory_mixins/bvv_conversion_mixin.py +10 -11
  1233. angr/storage/memory_mixins/clouseau_mixin.py +1 -0
  1234. angr/storage/memory_mixins/conditional_store_mixin.py +1 -0
  1235. angr/storage/memory_mixins/convenient_mappings_mixin.py +1 -0
  1236. angr/storage/memory_mixins/default_filler_mixin.py +16 -16
  1237. angr/storage/memory_mixins/dirty_addrs_mixin.py +1 -0
  1238. angr/storage/memory_mixins/hex_dumper_mixin.py +6 -9
  1239. angr/storage/memory_mixins/javavm_memory/__init__.py +1 -0
  1240. angr/storage/memory_mixins/javavm_memory/javavm_memory_mixin.py +23 -28
  1241. angr/storage/memory_mixins/keyvalue_memory/__init__.py +1 -0
  1242. angr/storage/memory_mixins/keyvalue_memory/keyvalue_memory_mixin.py +2 -1
  1243. angr/storage/memory_mixins/label_merger_mixin.py +2 -2
  1244. angr/storage/memory_mixins/multi_value_merger_mixin.py +1 -0
  1245. angr/storage/memory_mixins/name_resolution_mixin.py +12 -15
  1246. angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +6 -6
  1247. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +23 -37
  1248. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -0
  1249. angr/storage/memory_mixins/paged_memory/pages/__init__.py +1 -2
  1250. angr/storage/memory_mixins/paged_memory/pages/cooperation.py +4 -3
  1251. angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py +4 -4
  1252. angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py +1 -0
  1253. angr/storage/memory_mixins/paged_memory/pages/list_page.py +12 -20
  1254. angr/storage/memory_mixins/paged_memory/pages/multi_values.py +14 -19
  1255. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +26 -32
  1256. angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py +1 -0
  1257. angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py +2 -2
  1258. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +37 -41
  1259. angr/storage/memory_mixins/paged_memory/privileged_mixin.py +1 -0
  1260. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +1 -0
  1261. angr/storage/memory_mixins/regioned_memory/__init__.py +1 -0
  1262. angr/storage/memory_mixins/regioned_memory/abstract_address_descriptor.py +5 -4
  1263. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +6 -21
  1264. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -0
  1265. angr/storage/memory_mixins/regioned_memory/region_data.py +7 -6
  1266. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +130 -14
  1267. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +2 -1
  1268. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +38 -47
  1269. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +7 -9
  1270. angr/storage/memory_mixins/simple_interface_mixin.py +10 -13
  1271. angr/storage/memory_mixins/simplification_mixin.py +1 -0
  1272. angr/storage/memory_mixins/size_resolution_mixin.py +7 -4
  1273. angr/storage/memory_mixins/slotted_memory.py +4 -4
  1274. angr/storage/memory_mixins/smart_find_mixin.py +3 -2
  1275. angr/storage/memory_mixins/symbolic_merger_mixin.py +6 -3
  1276. angr/storage/memory_mixins/top_merger_mixin.py +2 -2
  1277. angr/storage/memory_mixins/underconstrained_mixin.py +12 -14
  1278. angr/storage/memory_mixins/unwrapper_mixin.py +1 -0
  1279. angr/storage/memory_object.py +30 -28
  1280. angr/storage/pcap.py +3 -3
  1281. angr/tablespecs.py +4 -3
  1282. angr/utils/__init__.py +1 -0
  1283. angr/utils/ail.py +30 -0
  1284. angr/utils/algo.py +1 -0
  1285. angr/utils/bits.py +12 -0
  1286. angr/utils/constants.py +2 -0
  1287. angr/utils/cowdict.py +3 -4
  1288. angr/utils/dynamic_dictlist.py +4 -7
  1289. angr/utils/endness.py +1 -0
  1290. angr/utils/enums_conv.py +1 -0
  1291. angr/utils/env.py +1 -0
  1292. angr/utils/formatting.py +1 -0
  1293. angr/utils/funcid.py +15 -14
  1294. angr/utils/graph.py +52 -19
  1295. angr/utils/lazy_import.py +1 -0
  1296. angr/utils/library.py +10 -13
  1297. angr/utils/loader.py +6 -6
  1298. angr/utils/mp.py +4 -3
  1299. angr/utils/orderedset.py +1 -0
  1300. angr/utils/segment_list.py +7 -9
  1301. angr/utils/ssa/__init__.py +198 -0
  1302. angr/utils/ssa/tmp_uses_collector.py +23 -0
  1303. angr/utils/ssa/vvar_uses_collector.py +37 -0
  1304. angr/utils/timing.py +2 -2
  1305. angr/utils/typing.py +1 -0
  1306. angr/vaults.py +7 -8
  1307. {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/METADATA +7 -8
  1308. angr-9.2.118.dist-info/RECORD +1344 -0
  1309. {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/WHEEL +1 -1
  1310. angr/analyses/decompiler/optimization_passes/spilled_register_finder.py +0 -18
  1311. angr/analyses/decompiler/seq_cf_structure_counter.py +0 -37
  1312. angr/service.py +0 -35
  1313. angr-9.2.116.dist-info/RECORD +0 -1310
  1314. {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/LICENSE +0 -0
  1315. {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/entry_points.txt +0 -0
  1316. {angr-9.2.116.dist-info → angr-9.2.118.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from typing import TYPE_CHECKING
2
3
  import logging
3
4
 
@@ -28,19 +29,19 @@ class SimDebugVariable:
28
29
  self.type = var_type
29
30
 
30
31
  @staticmethod
31
- def from_cle_variable(state: SimState, cle_variable: Variable, dwarf_cfa) -> "SimDebugVariable":
32
+ def from_cle_variable(state: SimState, cle_variable: Variable, dwarf_cfa) -> SimDebugVariable:
32
33
  addr = cle_variable.rebased_addr_from_cfa(dwarf_cfa)
33
34
  var_type = cle_variable.type
34
35
  return SimDebugVariable(state, addr, var_type)
35
36
 
36
37
  @property
37
- def mem_untyped(self) -> "SimMemView":
38
+ def mem_untyped(self) -> SimMemView:
38
39
  if self.addr is None:
39
40
  raise Exception("Cannot view a variable without an address")
40
41
  return self.state.mem[self.addr]
41
42
 
42
43
  @property
43
- def mem(self) -> "SimMemView":
44
+ def mem(self) -> SimMemView:
44
45
  if isinstance(self.type, TypedefType):
45
46
  unpacked = SimDebugVariable(self.state, self.addr, self.type.type)
46
47
  return unpacked.mem
@@ -62,12 +63,12 @@ class SimDebugVariable:
62
63
  # methods and properties equivalent to SimMemView
63
64
 
64
65
  @property
65
- def string(self) -> "SimMemView":
66
+ def string(self) -> SimMemView:
66
67
  first_char = self.deref
67
68
  # first char should have some char type (could be checked here)
68
69
  return first_char.mem_untyped.string
69
70
 
70
- def with_type(self, sim_type: "SimType") -> "SimMemView":
71
+ def with_type(self, sim_type: SimType) -> SimMemView:
71
72
  return self.mem_untyped.with_type(sim_type)
72
73
 
73
74
  @property
@@ -88,20 +89,20 @@ class SimDebugVariable:
88
89
  def __getitem__(self, i):
89
90
  if isinstance(i, int):
90
91
  return self.array(i)
91
- elif isinstance(i, str):
92
+ if isinstance(i, str):
92
93
  return self.member(i)
93
94
  raise KeyError
94
95
 
95
96
  @property
96
- def deref(self) -> "SimDebugVariable":
97
+ def deref(self) -> SimDebugVariable:
97
98
  # dereferincing is equivalent to getting the first array element
98
99
  return self.array(0)
99
100
 
100
- def array(self, i) -> "SimDebugVariable":
101
+ def array(self, i) -> SimDebugVariable:
101
102
  if isinstance(self.type, TypedefType):
102
103
  unpacked = SimDebugVariable(self.state, self.addr, self.type.type)
103
104
  return unpacked.array(i)
104
- elif isinstance(self.type, ArrayType):
105
+ if isinstance(self.type, ArrayType):
105
106
  # an array already addresses its first element
106
107
  addr = self.addr
107
108
  el_type = self.type.element_type
@@ -122,16 +123,13 @@ class SimDebugVariable:
122
123
  new_addr = addr + i * el_type.byte_size
123
124
  return SimDebugVariable(self.state, new_addr, el_type)
124
125
 
125
- def member(self, member_name: str) -> "SimDebugVariable":
126
+ def member(self, member_name: str) -> SimDebugVariable:
126
127
  if isinstance(self.type, TypedefType):
127
128
  unpacked = SimDebugVariable(self.state, self.addr, self.type.type)
128
129
  return unpacked.member(member_name)
129
- elif isinstance(self.type, StructType):
130
+ if isinstance(self.type, StructType):
130
131
  member = self.type[member_name]
131
- if self.addr is None:
132
- addr = None
133
- else:
134
- addr = self.addr + member.addr_offset
132
+ addr = None if self.addr is None else self.addr + member.addr_offset
135
133
  return SimDebugVariable(self.state, addr, member.type)
136
134
 
137
135
  raise Exception(f"{self.type} object has no members")
@@ -142,7 +140,7 @@ class SimDebugVariablePlugin(SimStatePlugin):
142
140
  This is the plugin you'll use to interact with (global/local) program variables.
143
141
  These variables have a name and a visibility scope which depends on the pc address of the state.
144
142
  With this plugin, you can access/modify the value of such variable or find its memory address.
145
- For creating program varibles, or for importing them from cle, see the knowledge plugin debug_variables.
143
+ For creating program variables, or for importing them from cle, see the knowledge plugin debug_variables.
146
144
  Run ``p.kb.dvars.load_from_dwarf()`` before using this plugin.
147
145
 
148
146
  Example:
@@ -186,7 +184,7 @@ class SimDebugVariablePlugin(SimStatePlugin):
186
184
  # FIXME This is only an approximation!
187
185
  if self.state.arch.name == "AMD64":
188
186
  return self.state.regs.rbp + 16
189
- elif self.state.arch.name == "X86":
187
+ if self.state.arch.name == "X86":
190
188
  return self.state.regs.ebp + 8
191
189
  return 0
192
190
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import os
2
3
  import logging
3
4
  from collections import namedtuple
@@ -108,10 +109,8 @@ class SimFilesystem(SimStatePlugin): # pretends links don't exist
108
109
  for fname in self._mountpoints:
109
110
  try:
110
111
  subdeck = [o._mountpoints[fname] for o in others]
111
- except KeyError:
112
- raise SimMergeError(
113
- "Can't merge filesystems with disparate file sets"
114
- ) # pylint: disable=raise-missing-from
112
+ except KeyError as err:
113
+ raise SimMergeError("Can't merge filesystems with disparate file sets") from err
115
114
 
116
115
  if common_ancestor is not None and fname in common_ancestor._mountpoints:
117
116
  common_mp = common_ancestor._mountpoints[fname]
@@ -121,10 +120,10 @@ class SimFilesystem(SimStatePlugin): # pretends links don't exist
121
120
  self._mountpoints[fname].merge(subdeck, merge_conditions, common_ancestor=common_mp)
122
121
 
123
122
  # this is a little messy
124
- deck = [self] + others
123
+ deck = [self, *others]
125
124
  all_files = set.union(*(set(o._files.keys()) for o in deck))
126
125
  for fname in all_files:
127
- subdeck = [o._files[fname] if fname in o._files else None for o in deck]
126
+ subdeck = [o._files.get(fname, None) for o in deck]
128
127
  representative = next(x for x in subdeck if x is not None)
129
128
  for i, v in enumerate(subdeck):
130
129
  if v is None:
@@ -158,9 +157,7 @@ class SimFilesystem(SimStatePlugin): # pretends links don't exist
158
157
  keys = path.split(self.pathsep)
159
158
  i = 0
160
159
  while i < len(keys):
161
- if keys[i] == b"":
162
- keys.pop(i)
163
- elif keys[i] == b".":
160
+ if keys[i] == b"" or keys[i] == b".":
164
161
  keys.pop(i)
165
162
  elif keys[i] == b"..":
166
163
  keys.pop(i)
@@ -191,8 +188,7 @@ class SimFilesystem(SimStatePlugin): # pretends links don't exist
191
188
 
192
189
  if mountpoint is None:
193
190
  return self._files.get(self._join_chunks(chunks))
194
- else:
195
- return mountpoint.get(chunks)
191
+ return mountpoint.get(chunks)
196
192
 
197
193
  def insert(self, path, simfile):
198
194
  """
@@ -205,8 +201,7 @@ class SimFilesystem(SimStatePlugin): # pretends links don't exist
205
201
  if mountpoint is None:
206
202
  self._files[self._join_chunks(chunks)] = simfile
207
203
  return True
208
- else:
209
- return mountpoint.insert(chunks, simfile)
204
+ return mountpoint.insert(chunks, simfile)
210
205
 
211
206
  def delete(self, path):
212
207
  """
@@ -370,7 +365,7 @@ class SimConcreteFilesystem(SimMount):
370
365
  self.cache[fname].set_state(state)
371
366
 
372
367
  def merge(self, others, merge_conditions, common_ancestor=None):
373
- merging_occured = False
368
+ merging_occurred = False
374
369
 
375
370
  for o in others:
376
371
  if o.pathsep != self.pathsep:
@@ -378,7 +373,7 @@ class SimConcreteFilesystem(SimMount):
378
373
  if o.deleted_list != self.deleted_list:
379
374
  raise SimMergeError("Can't merge concrete filesystems with disparate deleted files")
380
375
 
381
- deck = [self] + others
376
+ deck = [self, *others]
382
377
  all_files = set.union(*(set(o._files.keys()) for o in deck))
383
378
  for fname in all_files:
384
379
  subdeck = []
@@ -396,8 +391,8 @@ class SimConcreteFilesystem(SimMount):
396
391
  else:
397
392
  common_simfile = None
398
393
 
399
- merging_occured |= subdeck[0].merge(subdeck[1:], merge_conditions, common_ancestor=common_simfile)
400
- return merging_occured
394
+ merging_occurred |= subdeck[0].merge(subdeck[1:], merge_conditions, common_ancestor=common_simfile)
395
+ return merging_occurred
401
396
 
402
397
  def widen(self, others): # pylint: disable=unused-argument
403
398
  if once("host_fs_widen_warning"):
@@ -446,7 +441,7 @@ class SimHostFilesystem(SimConcreteFilesystem):
446
441
  if dereference:
447
442
  path = os.path.realpath(path)
448
443
  s = os.stat(path)
449
- stat = Stat(
444
+ return Stat(
450
445
  s.st_dev,
451
446
  s.st_ino,
452
447
  s.st_nlink,
@@ -464,6 +459,5 @@ class SimHostFilesystem(SimConcreteFilesystem):
464
459
  round(s.st_ctime),
465
460
  s.st_ctime_ns,
466
461
  )
467
- return stat
468
462
  except OSError:
469
463
  return None
angr/state_plugins/gdb.py CHANGED
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import os
2
3
  import re
3
4
  import logging
@@ -124,8 +125,8 @@ class GDB(SimStatePlugin):
124
125
  def _read_data(path):
125
126
  if not os.path.exists(path):
126
127
  raise SimStateError("File does not exist")
127
- f = open(path, "rb")
128
- return f.read()
128
+ with open(path, "rb") as f:
129
+ return f.read()
129
130
 
130
131
  def _write(self, addr, data):
131
132
  self.state.memory.store(addr, data)
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from .plugin import SimStatePlugin
@@ -15,7 +16,7 @@ class SimStateGlobals(SimStatePlugin):
15
16
 
16
17
  def merge(self, others, merge_conditions, common_ancestor=None): # pylint: disable=unused-argument
17
18
  for other in others:
18
- for k in other.keys():
19
+ for k in other:
19
20
  if k not in self:
20
21
  self[k] = other[k]
21
22
 
@@ -25,6 +26,9 @@ class SimStateGlobals(SimStatePlugin):
25
26
  l.warning("Widening is unimplemented for globals")
26
27
  return False
27
28
 
29
+ def __iter__(self):
30
+ return iter(self._backer)
31
+
28
32
  def __getitem__(self, k):
29
33
  return self._backer[k]
30
34
 
@@ -1,4 +1,5 @@
1
1
  # pylint:disable=wildcard-import
2
+ from __future__ import annotations
2
3
  from .heap_base import *
3
4
  from .heap_brk import *
4
5
  from .heap_libc import *
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from ..plugin import SimStatePlugin
2
3
 
3
4
  from ...errors import SimMemoryError
@@ -1,9 +1,12 @@
1
+ from __future__ import annotations
2
+ import logging
3
+
4
+ import claripy
5
+
1
6
  from angr.errors import SimSolverError
2
7
  from ..plugin import SimStatePlugin
3
8
  from . import SimHeapBase
4
9
 
5
- import logging
6
-
7
10
  l = logging.getLogger(__name__)
8
11
 
9
12
 
@@ -60,7 +63,7 @@ class SimHeapBrk(SimHeapBase):
60
63
  """
61
64
  requested = self._conc_alloc_size(sim_size)
62
65
  used = self.heap_location - self.heap_base
63
- released = requested if requested <= used else used
66
+ released = min(requested, used)
64
67
  self.heap_location -= released
65
68
  l.debug("Releasing %d bytes from the heap (%d bytes were requested to be released)", released, requested)
66
69
 
@@ -87,12 +90,15 @@ class SimHeapBrk(SimHeapBase):
87
90
 
88
91
  final_size = size * nmemb
89
92
 
90
- if self.state.solver.symbolic(sim_nmemb) or self.state.solver.symbolic(sim_size):
91
- if final_size > plugin.max_variable_size:
92
- final_size = plugin.max_variable_size
93
+ if (
94
+ self.state.solver.symbolic(sim_nmemb)
95
+ or self.state.solver.symbolic(sim_size)
96
+ and final_size > plugin.max_variable_size
97
+ ):
98
+ final_size = plugin.max_variable_size
93
99
 
94
100
  addr = self.state.heap.allocate(final_size)
95
- v = self.state.solver.BVV(0, final_size * 8)
101
+ v = claripy.BVV(0, final_size * 8)
96
102
  self.state.memory.store(addr, v)
97
103
  return addr
98
104
 
@@ -119,8 +125,7 @@ class SimHeapBrk(SimHeapBase):
119
125
  if self.heap_location != new_heap_location:
120
126
  self.heap_location = new_heap_location
121
127
  return True
122
- else:
123
- return False
128
+ return False
124
129
 
125
130
  def merge(self, others, merge_conditions, common_ancestor=None): # pylint:disable=unused-argument
126
131
  return self._combine(others)
@@ -1,20 +1,24 @@
1
+ from __future__ import annotations
2
+ import logging
1
3
  from . import SimHeapLibc
2
4
  from .utils import concretize
3
5
  from ...errors import SimHeapError
4
6
 
5
- import logging
6
7
 
7
8
  l = logging.getLogger("angr.state_plugins.heap.heap_freelist")
8
9
 
9
10
 
10
11
  class Chunk:
11
12
  """
12
- The sort of chunk as would typically be found in a freelist-style heap implementation. Provides a representation of
13
- a chunk via a view into the memory plugin. Chunks may be adjacent, in different senses, to as many as four other
14
- chunks. For any given chunk, two of these chunks are adjacent to it in memory, and are referred to as the "previous"
15
- and "next" chunks throughout this implementation. For any given free chunk, there may also be two significant chunks
16
- that are adjacent to it in some linked list of free chunks. These chunks are referred to the "backward" and "foward"
17
- chunks relative to the chunk in question.
13
+ The sort of chunk as would typically be found in a freelist-style heap
14
+ implementation. Provides a representation of a chunk via a view into the
15
+ memory plugin. Chunks may be adjacent, in different senses, to as many as
16
+ four other chunks. For any given chunk, two of these chunks are adjacent to
17
+ it in memory, and are referred to as the "previous" and "next" chunks
18
+ throughout this implementation. For any given free chunk, there may also be
19
+ two significant chunks that are adjacent to it in some linked list of free
20
+ chunks. These chunks are referred to the "backward" and "forward" chunks
21
+ relative to the chunk in question.
18
22
 
19
23
  :ivar base: the location of the base of the chunk in memory
20
24
  :ivar state: the program state that the chunk is resident in
@@ -106,8 +110,7 @@ class Chunk:
106
110
  def _compare(self, other, comparison):
107
111
  if self.state is other.state:
108
112
  return comparison
109
- else:
110
- raise SimHeapError("Chunks must originate from the same simulation state to be compared!")
113
+ raise SimHeapError("Chunks must originate from the same simulation state to be compared!")
111
114
 
112
115
  def __lt__(self, other):
113
116
  """
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import SimHeapBase
2
3
 
3
4
 
@@ -1,12 +1,14 @@
1
+ from __future__ import annotations
2
+ import logging
3
+
4
+ import claripy
5
+
1
6
  from ..plugin import SimStatePlugin
2
7
  from .heap_freelist import SimHeapFreelist, Chunk
3
8
  from .utils import concretize
4
-
5
9
  from ...errors import SimHeapError, SimMergeError, SimSolverError
6
10
 
7
11
 
8
- import logging
9
-
10
12
  l = logging.getLogger("angr.state_plugins.heap.heap_ptmalloc")
11
13
  sml = logging.getLogger("angr.state_plugins.symbolic_memory")
12
14
 
@@ -55,8 +57,7 @@ class PTChunk(Chunk):
55
57
  chunk_size = self.get_size()
56
58
  if self.is_free():
57
59
  return chunk_size - 4 * self._chunk_size_t_size
58
- else:
59
- return chunk_size - 2 * self._chunk_size_t_size
60
+ return chunk_size - 2 * self._chunk_size_t_size
60
61
 
61
62
  def _set_leading_size(self, size):
62
63
  level = silence_logger()
@@ -88,9 +89,8 @@ class PTChunk(Chunk):
88
89
  next_chunk.set_prev_freeness(is_free)
89
90
  else:
90
91
  self.heap._set_final_freeness(is_free)
91
- if is_free is not None and is_free or self.is_free():
92
- if next_chunk is not None:
93
- self.state.memory.store(next_chunk.base, size, size=self.state.arch.bytes)
92
+ if (is_free is not None and is_free or self.is_free()) and next_chunk is not None:
93
+ self.state.memory.store(next_chunk.base, size, size=self.state.arch.bytes)
94
94
 
95
95
  def set_prev_freeness(self, is_free):
96
96
  """
@@ -138,20 +138,19 @@ class PTChunk(Chunk):
138
138
  next_chunk = self.next_chunk()
139
139
  if next_chunk is not None:
140
140
  return next_chunk.is_prev_free()
141
- else:
142
- flag = (
143
- self.state.memory.load(
144
- self.heap.heap_base + self.heap.heap_size - self._chunk_size_t_size, self._chunk_size_t_size
145
- )
146
- & CHUNK_P_MASK
141
+ flag = (
142
+ self.state.memory.load(
143
+ self.heap.heap_base + self.heap.heap_size - self._chunk_size_t_size, self._chunk_size_t_size
147
144
  )
145
+ & CHUNK_P_MASK
146
+ )
148
147
 
149
- def sym_flag_handler(flag):
150
- l.warning("The final P flag is symbolic; assuming it is not set")
151
- return self.state.solver.min_int(flag)
148
+ def sym_flag_handler(flag):
149
+ l.warning("The final P flag is symbolic; assuming it is not set")
150
+ return self.state.solver.min_int(flag)
152
151
 
153
- flag = concretize(flag, self.state.solver, sym_flag_handler)
154
- return not flag
152
+ flag = concretize(flag, self.state.solver, sym_flag_handler)
153
+ return not flag
155
154
 
156
155
  def data_ptr(self):
157
156
  return self.base + (2 * self._chunk_size_t_size)
@@ -170,8 +169,7 @@ class PTChunk(Chunk):
170
169
  base = concretize(self.base + self.get_size(), self.state.solver, sym_base_handler)
171
170
  if base >= self.heap.heap_base + self.heap.heap_size - 2 * self._chunk_size_t_size:
172
171
  return None
173
- else:
174
- return PTChunk(base, self.state)
172
+ return PTChunk(base, self.state)
175
173
 
176
174
  def prev_chunk(self):
177
175
  """
@@ -182,8 +180,7 @@ class PTChunk(Chunk):
182
180
  """
183
181
  if self.is_prev_free():
184
182
  return PTChunk(self.base - self.prev_size(), self.state)
185
- else:
186
- raise SimHeapError("Attempted to access the previous chunk, but it was not free")
183
+ raise SimHeapError("Attempted to access the previous chunk, but it was not free")
187
184
 
188
185
  def fwd_chunk(self):
189
186
  """
@@ -197,8 +194,7 @@ class PTChunk(Chunk):
197
194
  self.base + 2 * self._chunk_size_t_size, self._chunk_size_t_size, endness=self.state.arch.memory_endness
198
195
  )
199
196
  return PTChunk(base, self.state)
200
- else:
201
- raise SimHeapError("Attempted to access the forward chunk of an allocated chunk")
197
+ raise SimHeapError("Attempted to access the forward chunk of an allocated chunk")
202
198
 
203
199
  def set_fwd_chunk(self, fwd):
204
200
  self.state.memory.store(
@@ -220,8 +216,7 @@ class PTChunk(Chunk):
220
216
  self.base + 3 * self._chunk_size_t_size, self._chunk_size_t_size, endness=self.state.arch.memory_endness
221
217
  )
222
218
  return PTChunk(base, self.state)
223
- else:
224
- raise SimHeapError("Attempted to access the backward chunk of an allocated chunk")
219
+ raise SimHeapError("Attempted to access the backward chunk of an allocated chunk")
225
220
 
226
221
  def set_bck_chunk(self, bck):
227
222
  self.state.memory.store(
@@ -338,11 +333,10 @@ class SimHeapPTMalloc(SimHeapFreelist):
338
333
  cur = fwd
339
334
  fwd = cur.fwd_chunk()
340
335
  return cur
341
- else:
342
- while fwd != self.free_head_chunk:
343
- cur = fwd
344
- fwd = cur.fwd_chunk()
345
- return cur
336
+ while fwd != self.free_head_chunk:
337
+ cur = fwd
338
+ fwd = cur.fwd_chunk()
339
+ return cur
346
340
 
347
341
  def _set_final_freeness(self, flag):
348
342
  """
@@ -364,7 +358,7 @@ class SimHeapPTMalloc(SimHeapFreelist):
364
358
  """
365
359
  size = req_size
366
360
  size += 2 * self._chunk_size_t_size # Two size fields
367
- size = self._chunk_min_size if size < self._chunk_min_size else size
361
+ size = max(size, self._chunk_min_size)
368
362
  if size & self._chunk_align_mask: # If the chunk would not be aligned
369
363
  size = (size & ~self._chunk_align_mask) + self._chunk_align_mask + 1 # Fix it
370
364
  return size
@@ -394,8 +388,7 @@ class SimHeapPTMalloc(SimHeapFreelist):
394
388
  if fwd <= free_chunk:
395
389
  l.debug("No free chunks of sufficient size available")
396
390
  return 0
397
- else:
398
- free_chunk = fwd
391
+ free_chunk = fwd
399
392
  elif free_size > size and free_size - size >= self._chunk_min_size:
400
393
  # Chunk may be too large but we'll use it anyway
401
394
  chunk = free_chunk
@@ -526,7 +519,7 @@ class SimHeapPTMalloc(SimHeapFreelist):
526
519
  if addr == 0:
527
520
  return 0
528
521
  if size != 0:
529
- z = self.state.solver.BVV(0, size * 8)
522
+ z = claripy.BVV(0, size * 8)
530
523
  self.state.memory.store(addr, z)
531
524
  return addr
532
525
 
@@ -563,7 +556,7 @@ class SimHeapPTMalloc(SimHeapFreelist):
563
556
  self.state.memory.store(new_data_ptr, old_data)
564
557
  self.free(old_data_ptr) # Free the old chunk
565
558
  return new_data_ptr
566
- elif new_size < old_size and old_size - new_size >= self._chunk_min_size:
559
+ if new_size < old_size and old_size - new_size >= self._chunk_min_size:
567
560
  # Less space is needed, so just shrink the chunk and create a new free chunk from the freed space
568
561
  chunk.set_size(new_size, False)
569
562
  new_next_chunk = chunk.next_chunk()
@@ -571,9 +564,8 @@ class SimHeapPTMalloc(SimHeapFreelist):
571
564
  new_next_chunk.set_prev_freeness(False)
572
565
  self.free(new_next_chunk.data_ptr())
573
566
  return chunk.data_ptr()
574
- else:
575
- # No changes needed; we're already the right size
576
- return chunk.data_ptr()
567
+ # No changes needed; we're already the right size
568
+ return chunk.data_ptr()
577
569
 
578
570
  def _malloc(self, sim_size):
579
571
  return self.malloc(sim_size)
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from ...errors import SimSolverError
2
3
 
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from collections.abc import Reversible
2
3
  import operator
3
4
  import logging
@@ -112,11 +113,11 @@ class SimStateHistory(SimStatePlugin):
112
113
  if addr is None:
113
114
  addr_str = "Unknown"
114
115
  elif isinstance(addr, int):
115
- addr_str = "%#x" % addr
116
+ addr_str = f"{addr:#x}"
116
117
  else:
117
118
  addr_str = repr(addr)
118
119
 
119
- return "<StateHistory @ %s>" % addr_str
120
+ return f"<StateHistory @ {addr_str}>"
120
121
 
121
122
  def set_strongref_state(self, state):
122
123
  if sim_options.EFFICIENT_STATE_MERGING in state.options:
@@ -140,17 +141,19 @@ class SimStateHistory(SimStatePlugin):
140
141
  self.parent = common_ancestor if common_ancestor is not None else self.parent
141
142
 
142
143
  # rebuild recent constraints
143
- recent_constraints = [h.constraints_since(common_ancestor) for h in itertools.chain([self], others)]
144
+ recent_constraints = [
145
+ [c.ast for c in h.constraints_since(common_ancestor)] for h in itertools.chain([self], others)
146
+ ]
144
147
  if sim_options.SIMPLIFY_MERGED_CONSTRAINTS in self.state.options:
145
- combined_constraint = self.state.solver.Or(
148
+ combined_constraint = claripy.Or(
146
149
  *[
147
- self.state.solver.simplify(self.state.solver.And(*history_constraints))
150
+ self.state.solver.simplify(claripy.And(*history_constraints))
148
151
  for history_constraints in recent_constraints
149
152
  ]
150
153
  )
151
154
  else:
152
- combined_constraint = self.state.solver.Or(
153
- *[self.state.solver.And(*history_constraints) for history_constraints in recent_constraints]
155
+ combined_constraint = claripy.Or(
156
+ *[claripy.And(*history_constraints) for history_constraints in recent_constraints]
154
157
  )
155
158
  self.recent_events = [
156
159
  e.recent_events for e in itertools.chain([self], others) if not isinstance(e, SimActionConstraint)
@@ -254,9 +257,7 @@ class SimStateHistory(SimStatePlugin):
254
257
  if addr.symbolic:
255
258
  return False
256
259
  addr = self.state.solver.eval(addr)
257
- if addr != read_offset:
258
- return False
259
- return True
260
+ return addr == read_offset
260
261
 
261
262
  def action_writes(action):
262
263
  if action.type != write_type:
@@ -272,9 +273,7 @@ class SimStateHistory(SimStatePlugin):
272
273
  if addr.symbolic:
273
274
  return False
274
275
  addr = self.state.solver.eval(addr)
275
- if addr != write_offset:
276
- return False
277
- return True
276
+ return addr == write_offset
278
277
 
279
278
  return [
280
279
  x
@@ -359,11 +358,11 @@ class SimStateHistory(SimStatePlugin):
359
358
  yield from self.parent.lineage
360
359
 
361
360
  @property
362
- def events(self) -> Reversible["SimEvent"]:
361
+ def events(self) -> Reversible[SimEvent]:
363
362
  return LambdaIterIter(self, operator.attrgetter("recent_events"))
364
363
 
365
364
  @property
366
- def actions(self) -> Reversible["SimAction"]:
365
+ def actions(self) -> Reversible[SimAction]:
367
366
  return LambdaIterIter(self, operator.attrgetter("recent_actions"))
368
367
 
369
368
  @property
@@ -1,4 +1,5 @@
1
1
  # TODO: SimValue being able to compare two symbolics for is_solution
2
+ from __future__ import annotations
2
3
 
3
4
  import logging
4
5
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from archinfo.arch_soot import SootAddressDescriptor, SootAddressTerminator, SootClassDescriptor
@@ -83,7 +84,7 @@ class SimJavaVmClassloader(SimStatePlugin):
83
84
  self.initialized_classes.add(class_)
84
85
 
85
86
  if not class_.is_loaded:
86
- l.warning("Class %r is not loaded in CLE. Skip initializiation.", class_)
87
+ l.warning("Class %r is not loaded in CLE. Skip initialization.", class_)
87
88
  return
88
89
 
89
90
  clinit_method = resolve_method(
@@ -106,7 +107,7 @@ class SimJavaVmClassloader(SimStatePlugin):
106
107
  self.state.memory.vm_static_table = simgr.deadended[-1].memory.vm_static_table.copy()
107
108
  self.state.memory.heap = simgr.deadended[-1].memory.heap.copy()
108
109
  else:
109
- l.debug("Class initializer <clinit> is not loaded in CLE. Skip initializiation.")
110
+ l.debug("Class initializer <clinit> is not loaded in CLE. Skip initialization.")
110
111
 
111
112
  @property
112
113
  def initialized_classes(self):
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from ..sim_state import SimState
@@ -72,7 +73,7 @@ class SimStateJNIReferences(SimStatePlugin):
72
73
 
73
74
  def _get_reference_value(self, opaque_ref):
74
75
  if self.state.solver.symbolic(opaque_ref):
75
- raise NotImplementedError("Opaque reference %s is symbolic." % opaque_ref.to_claripy())
76
+ raise NotImplementedError(f"Opaque reference {opaque_ref.to_claripy()} is symbolic.")
76
77
  return self.state.solver.eval(opaque_ref)
77
78
 
78
79
  @SimStatePlugin.memo