angr 9.2.192__cp311-cp311-macosx_10_12_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1442) hide show
  1. angr/__init__.py +366 -0
  2. angr/__main__.py +182 -0
  3. angr/ail_callable.py +79 -0
  4. angr/ailment/__init__.py +83 -0
  5. angr/ailment/block.py +88 -0
  6. angr/ailment/block_walker.py +856 -0
  7. angr/ailment/constant.py +3 -0
  8. angr/ailment/converter_common.py +11 -0
  9. angr/ailment/converter_pcode.py +648 -0
  10. angr/ailment/converter_vex.py +829 -0
  11. angr/ailment/expression.py +1655 -0
  12. angr/ailment/manager.py +34 -0
  13. angr/ailment/statement.py +973 -0
  14. angr/ailment/tagged_object.py +58 -0
  15. angr/ailment/utils.py +114 -0
  16. angr/analyses/__init__.py +117 -0
  17. angr/analyses/analysis.py +429 -0
  18. angr/analyses/backward_slice.py +686 -0
  19. angr/analyses/binary_optimizer.py +670 -0
  20. angr/analyses/bindiff.py +1512 -0
  21. angr/analyses/boyscout.py +76 -0
  22. angr/analyses/callee_cleanup_finder.py +74 -0
  23. angr/analyses/calling_convention/__init__.py +6 -0
  24. angr/analyses/calling_convention/calling_convention.py +1113 -0
  25. angr/analyses/calling_convention/fact_collector.py +647 -0
  26. angr/analyses/calling_convention/utils.py +60 -0
  27. angr/analyses/cdg.py +189 -0
  28. angr/analyses/cfg/__init__.py +23 -0
  29. angr/analyses/cfg/cfb.py +451 -0
  30. angr/analyses/cfg/cfg.py +74 -0
  31. angr/analyses/cfg/cfg_arch_options.py +95 -0
  32. angr/analyses/cfg/cfg_base.py +2954 -0
  33. angr/analyses/cfg/cfg_emulated.py +3451 -0
  34. angr/analyses/cfg/cfg_fast.py +5431 -0
  35. angr/analyses/cfg/cfg_fast_soot.py +662 -0
  36. angr/analyses/cfg/cfg_job_base.py +203 -0
  37. angr/analyses/cfg/indirect_jump_resolvers/__init__.py +30 -0
  38. angr/analyses/cfg/indirect_jump_resolvers/aarch64_macho_got.py +77 -0
  39. angr/analyses/cfg/indirect_jump_resolvers/amd64_elf_got.py +62 -0
  40. angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +51 -0
  41. angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +159 -0
  42. angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +339 -0
  43. angr/analyses/cfg/indirect_jump_resolvers/constant_value_manager.py +107 -0
  44. angr/analyses/cfg/indirect_jump_resolvers/default_resolvers.py +82 -0
  45. angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +2490 -0
  46. angr/analyses/cfg/indirect_jump_resolvers/memload_resolver.py +81 -0
  47. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +286 -0
  48. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_got.py +148 -0
  49. angr/analyses/cfg/indirect_jump_resolvers/propagator_utils.py +46 -0
  50. angr/analyses/cfg/indirect_jump_resolvers/resolver.py +74 -0
  51. angr/analyses/cfg/indirect_jump_resolvers/syscall_resolver.py +92 -0
  52. angr/analyses/cfg/indirect_jump_resolvers/x86_elf_pic_plt.py +88 -0
  53. angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +47 -0
  54. angr/analyses/cfg_slice_to_sink/__init__.py +11 -0
  55. angr/analyses/cfg_slice_to_sink/cfg_slice_to_sink.py +117 -0
  56. angr/analyses/cfg_slice_to_sink/graph.py +87 -0
  57. angr/analyses/cfg_slice_to_sink/transitions.py +27 -0
  58. angr/analyses/class_identifier.py +63 -0
  59. angr/analyses/code_tagging.py +123 -0
  60. angr/analyses/codecave.py +77 -0
  61. angr/analyses/complete_calling_conventions.py +475 -0
  62. angr/analyses/congruency_check.py +377 -0
  63. angr/analyses/data_dep/__init__.py +16 -0
  64. angr/analyses/data_dep/data_dependency_analysis.py +595 -0
  65. angr/analyses/data_dep/dep_nodes.py +171 -0
  66. angr/analyses/data_dep/sim_act_location.py +49 -0
  67. angr/analyses/datagraph_meta.py +105 -0
  68. angr/analyses/ddg.py +1670 -0
  69. angr/analyses/decompiler/__init__.py +41 -0
  70. angr/analyses/decompiler/ail_simplifier.py +2246 -0
  71. angr/analyses/decompiler/ailgraph_walker.py +49 -0
  72. angr/analyses/decompiler/block_io_finder.py +302 -0
  73. angr/analyses/decompiler/block_similarity.py +199 -0
  74. angr/analyses/decompiler/block_simplifier.py +397 -0
  75. angr/analyses/decompiler/callsite_maker.py +579 -0
  76. angr/analyses/decompiler/ccall_rewriters/__init__.py +9 -0
  77. angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py +618 -0
  78. angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +24 -0
  79. angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py +354 -0
  80. angr/analyses/decompiler/clinic.py +3662 -0
  81. angr/analyses/decompiler/condition_processor.py +1323 -0
  82. angr/analyses/decompiler/counters/__init__.py +16 -0
  83. angr/analyses/decompiler/counters/boolean_counter.py +27 -0
  84. angr/analyses/decompiler/counters/call_counter.py +77 -0
  85. angr/analyses/decompiler/counters/expression_counters.py +77 -0
  86. angr/analyses/decompiler/counters/seq_cf_structure_counter.py +63 -0
  87. angr/analyses/decompiler/decompilation_cache.py +54 -0
  88. angr/analyses/decompiler/decompilation_options.py +317 -0
  89. angr/analyses/decompiler/decompiler.py +796 -0
  90. angr/analyses/decompiler/dephication/__init__.py +6 -0
  91. angr/analyses/decompiler/dephication/dephication_base.py +100 -0
  92. angr/analyses/decompiler/dephication/graph_dephication.py +70 -0
  93. angr/analyses/decompiler/dephication/graph_rewriting.py +112 -0
  94. angr/analyses/decompiler/dephication/graph_vvar_mapping.py +357 -0
  95. angr/analyses/decompiler/dephication/rewriting_engine.py +528 -0
  96. angr/analyses/decompiler/dephication/seqnode_dephication.py +156 -0
  97. angr/analyses/decompiler/dirty_rewriters/__init__.py +7 -0
  98. angr/analyses/decompiler/dirty_rewriters/amd64_dirty.py +74 -0
  99. angr/analyses/decompiler/dirty_rewriters/rewriter_base.py +27 -0
  100. angr/analyses/decompiler/empty_node_remover.py +212 -0
  101. angr/analyses/decompiler/expression_narrower.py +290 -0
  102. angr/analyses/decompiler/goto_manager.py +112 -0
  103. angr/analyses/decompiler/graph_region.py +441 -0
  104. angr/analyses/decompiler/jump_target_collector.py +37 -0
  105. angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +67 -0
  106. angr/analyses/decompiler/label_collector.py +32 -0
  107. angr/analyses/decompiler/node_replacer.py +42 -0
  108. angr/analyses/decompiler/notes/__init__.py +9 -0
  109. angr/analyses/decompiler/notes/decompilation_note.py +48 -0
  110. angr/analyses/decompiler/notes/deobfuscated_strings.py +56 -0
  111. angr/analyses/decompiler/optimization_passes/__init__.py +164 -0
  112. angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py +157 -0
  113. angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py +46 -0
  114. angr/analyses/decompiler/optimization_passes/code_motion.py +362 -0
  115. angr/analyses/decompiler/optimization_passes/condition_constprop.py +211 -0
  116. angr/analyses/decompiler/optimization_passes/const_derefs.py +127 -0
  117. angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +365 -0
  118. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +106 -0
  119. angr/analyses/decompiler/optimization_passes/deadblock_remover.py +82 -0
  120. angr/analyses/decompiler/optimization_passes/determine_load_sizes.py +64 -0
  121. angr/analyses/decompiler/optimization_passes/div_simplifier.py +425 -0
  122. angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +5 -0
  123. angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +503 -0
  124. angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +1221 -0
  125. angr/analyses/decompiler/optimization_passes/duplication_reverter/errors.py +16 -0
  126. angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +126 -0
  127. angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +167 -0
  128. angr/analyses/decompiler/optimization_passes/eager_std_string_concatenation.py +236 -0
  129. angr/analyses/decompiler/optimization_passes/eager_std_string_eval.py +186 -0
  130. angr/analyses/decompiler/optimization_passes/engine_base.py +502 -0
  131. angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +138 -0
  132. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +113 -0
  133. angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +618 -0
  134. angr/analyses/decompiler/optimization_passes/inlined_strlen_simplifier.py +274 -0
  135. angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +224 -0
  136. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +337 -0
  137. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +939 -0
  138. angr/analyses/decompiler/optimization_passes/mod_simplifier.py +99 -0
  139. angr/analyses/decompiler/optimization_passes/optimization_pass.py +710 -0
  140. angr/analyses/decompiler/optimization_passes/peephole_simplifier.py +75 -0
  141. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +263 -0
  142. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier_adv.py +198 -0
  143. angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +171 -0
  144. angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +222 -0
  145. angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +632 -0
  146. angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +61 -0
  147. angr/analyses/decompiler/optimization_passes/return_duplicator_low.py +166 -0
  148. angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py +333 -0
  149. angr/analyses/decompiler/optimization_passes/static_vvar_rewriter.py +336 -0
  150. angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +166 -0
  151. angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py +102 -0
  152. angr/analyses/decompiler/optimization_passes/tag_slicer.py +41 -0
  153. angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +477 -0
  154. angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py +88 -0
  155. angr/analyses/decompiler/peephole_optimizations/__init__.py +136 -0
  156. angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py +42 -0
  157. angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py +38 -0
  158. angr/analyses/decompiler/peephole_optimizations/a_mul_const_sub_a.py +34 -0
  159. angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py +34 -0
  160. angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py +25 -0
  161. angr/analyses/decompiler/peephole_optimizations/a_sub_a_shr_const_shr_const.py +37 -0
  162. angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py +23 -0
  163. angr/analyses/decompiler/peephole_optimizations/arm_cmpf.py +236 -0
  164. angr/analyses/decompiler/peephole_optimizations/base.py +157 -0
  165. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_add_n.py +34 -0
  166. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py +36 -0
  167. angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py +34 -0
  168. angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py +27 -0
  169. angr/analyses/decompiler/peephole_optimizations/bswap.py +142 -0
  170. angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py +182 -0
  171. angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py +71 -0
  172. angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py +39 -0
  173. angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py +28 -0
  174. angr/analyses/decompiler/peephole_optimizations/constant_derefs.py +44 -0
  175. angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py +69 -0
  176. angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py +52 -0
  177. angr/analyses/decompiler/peephole_optimizations/eager_eval.py +436 -0
  178. angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py +56 -0
  179. angr/analyses/decompiler/peephole_optimizations/inlined_memcpy.py +78 -0
  180. angr/analyses/decompiler/peephole_optimizations/inlined_memset.py +262 -0
  181. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py +217 -0
  182. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py +106 -0
  183. angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy.py +256 -0
  184. angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py +296 -0
  185. angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuction_disjunction.py +50 -0
  186. angr/analyses/decompiler/peephole_optimizations/modulo_simplifier.py +89 -0
  187. angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py +33 -0
  188. angr/analyses/decompiler/peephole_optimizations/optimized_div_simplifier.py +356 -0
  189. angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py +45 -0
  190. angr/analyses/decompiler/peephole_optimizations/remove_cxx_destructor_calls.py +32 -0
  191. angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py +46 -0
  192. angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py +47 -0
  193. angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py +125 -0
  194. angr/analyses/decompiler/peephole_optimizations/remove_redundant_conversions.py +273 -0
  195. angr/analyses/decompiler/peephole_optimizations/remove_redundant_derefs.py +21 -0
  196. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py +30 -0
  197. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_comparisons.py +54 -0
  198. angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py +36 -0
  199. angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py +44 -0
  200. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py +95 -0
  201. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py +115 -0
  202. angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py +85 -0
  203. angr/analyses/decompiler/peephole_optimizations/rewrite_conv_mul.py +40 -0
  204. angr/analyses/decompiler/peephole_optimizations/rewrite_cxx_operator_calls.py +90 -0
  205. angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py +49 -0
  206. angr/analyses/decompiler/peephole_optimizations/rol_ror.py +130 -0
  207. angr/analyses/decompiler/peephole_optimizations/sar_to_signed_div.py +143 -0
  208. angr/analyses/decompiler/peephole_optimizations/shl_to_mul.py +25 -0
  209. angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +51 -0
  210. angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py +28 -0
  211. angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py +29 -0
  212. angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py +131 -0
  213. angr/analyses/decompiler/peephole_optimizations/utils.py +18 -0
  214. angr/analyses/decompiler/presets/__init__.py +22 -0
  215. angr/analyses/decompiler/presets/basic.py +36 -0
  216. angr/analyses/decompiler/presets/fast.py +66 -0
  217. angr/analyses/decompiler/presets/full.py +76 -0
  218. angr/analyses/decompiler/presets/malware.py +70 -0
  219. angr/analyses/decompiler/presets/preset.py +37 -0
  220. angr/analyses/decompiler/redundant_label_remover.py +141 -0
  221. angr/analyses/decompiler/region_identifier.py +1319 -0
  222. angr/analyses/decompiler/region_simplifiers/__init__.py +5 -0
  223. angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +95 -0
  224. angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +82 -0
  225. angr/analyses/decompiler/region_simplifiers/expr_folding.py +838 -0
  226. angr/analyses/decompiler/region_simplifiers/goto.py +178 -0
  227. angr/analyses/decompiler/region_simplifiers/if_.py +135 -0
  228. angr/analyses/decompiler/region_simplifiers/ifelse.py +91 -0
  229. angr/analyses/decompiler/region_simplifiers/loop.py +143 -0
  230. angr/analyses/decompiler/region_simplifiers/node_address_finder.py +24 -0
  231. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +270 -0
  232. angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +654 -0
  233. angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +87 -0
  234. angr/analyses/decompiler/region_walker.py +24 -0
  235. angr/analyses/decompiler/return_maker.py +72 -0
  236. angr/analyses/decompiler/semantic_naming/__init__.py +37 -0
  237. angr/analyses/decompiler/semantic_naming/array_index_naming.py +196 -0
  238. angr/analyses/decompiler/semantic_naming/boolean_naming.py +264 -0
  239. angr/analyses/decompiler/semantic_naming/call_result_naming.py +220 -0
  240. angr/analyses/decompiler/semantic_naming/naming_base.py +166 -0
  241. angr/analyses/decompiler/semantic_naming/orchestrator.py +107 -0
  242. angr/analyses/decompiler/semantic_naming/pointer_naming.py +334 -0
  243. angr/analyses/decompiler/semantic_naming/region_loop_counter_naming.py +246 -0
  244. angr/analyses/decompiler/semantic_naming/size_naming.py +137 -0
  245. angr/analyses/decompiler/seq_to_blocks.py +20 -0
  246. angr/analyses/decompiler/sequence_walker.py +261 -0
  247. angr/analyses/decompiler/ssailification/__init__.py +4 -0
  248. angr/analyses/decompiler/ssailification/rewriting.py +451 -0
  249. angr/analyses/decompiler/ssailification/rewriting_engine.py +1091 -0
  250. angr/analyses/decompiler/ssailification/rewriting_state.py +61 -0
  251. angr/analyses/decompiler/ssailification/ssailification.py +283 -0
  252. angr/analyses/decompiler/ssailification/traversal.py +127 -0
  253. angr/analyses/decompiler/ssailification/traversal_engine.py +323 -0
  254. angr/analyses/decompiler/ssailification/traversal_state.py +48 -0
  255. angr/analyses/decompiler/stack_item.py +36 -0
  256. angr/analyses/decompiler/structured_codegen/__init__.py +25 -0
  257. angr/analyses/decompiler/structured_codegen/base.py +193 -0
  258. angr/analyses/decompiler/structured_codegen/c.py +4257 -0
  259. angr/analyses/decompiler/structured_codegen/dummy.py +15 -0
  260. angr/analyses/decompiler/structured_codegen/dwarf_import.py +190 -0
  261. angr/analyses/decompiler/structuring/__init__.py +30 -0
  262. angr/analyses/decompiler/structuring/dream.py +1217 -0
  263. angr/analyses/decompiler/structuring/phoenix.py +3636 -0
  264. angr/analyses/decompiler/structuring/recursive_structurer.py +187 -0
  265. angr/analyses/decompiler/structuring/sailr.py +120 -0
  266. angr/analyses/decompiler/structuring/structurer_base.py +1140 -0
  267. angr/analyses/decompiler/structuring/structurer_nodes.py +442 -0
  268. angr/analyses/decompiler/utils.py +1224 -0
  269. angr/analyses/deobfuscator/__init__.py +23 -0
  270. angr/analyses/deobfuscator/api_obf_finder.py +333 -0
  271. angr/analyses/deobfuscator/api_obf_peephole_optimizer.py +80 -0
  272. angr/analyses/deobfuscator/api_obf_type2_finder.py +166 -0
  273. angr/analyses/deobfuscator/data_transformation_embedder.py +633 -0
  274. angr/analyses/deobfuscator/hash_lookup_api_deobfuscator.py +156 -0
  275. angr/analyses/deobfuscator/irsb_reg_collector.py +54 -0
  276. angr/analyses/deobfuscator/scope_ops_analyzer.py +68 -0
  277. angr/analyses/deobfuscator/string_obf_finder.py +983 -0
  278. angr/analyses/deobfuscator/string_obf_opt_passes.py +136 -0
  279. angr/analyses/deobfuscator/string_obf_peephole_optimizer.py +47 -0
  280. angr/analyses/disassembly.py +1351 -0
  281. angr/analyses/disassembly_utils.py +101 -0
  282. angr/analyses/dominance_frontier.py +57 -0
  283. angr/analyses/fcp/__init__.py +4 -0
  284. angr/analyses/fcp/fcp.py +427 -0
  285. angr/analyses/find_objects_static.py +205 -0
  286. angr/analyses/flirt/__init__.py +47 -0
  287. angr/analyses/flirt/consts.py +160 -0
  288. angr/analyses/flirt/flirt.py +249 -0
  289. angr/analyses/flirt/flirt_function.py +20 -0
  290. angr/analyses/flirt/flirt_matcher.py +352 -0
  291. angr/analyses/flirt/flirt_module.py +32 -0
  292. angr/analyses/flirt/flirt_node.py +23 -0
  293. angr/analyses/flirt/flirt_sig.py +359 -0
  294. angr/analyses/flirt/flirt_utils.py +31 -0
  295. angr/analyses/forward_analysis/__init__.py +12 -0
  296. angr/analyses/forward_analysis/forward_analysis.py +619 -0
  297. angr/analyses/forward_analysis/job_info.py +64 -0
  298. angr/analyses/forward_analysis/visitors/__init__.py +14 -0
  299. angr/analyses/forward_analysis/visitors/call_graph.py +29 -0
  300. angr/analyses/forward_analysis/visitors/function_graph.py +86 -0
  301. angr/analyses/forward_analysis/visitors/graph.py +242 -0
  302. angr/analyses/forward_analysis/visitors/loop.py +29 -0
  303. angr/analyses/forward_analysis/visitors/single_node_graph.py +38 -0
  304. angr/analyses/identifier/__init__.py +5 -0
  305. angr/analyses/identifier/custom_callable.py +137 -0
  306. angr/analyses/identifier/errors.py +10 -0
  307. angr/analyses/identifier/func.py +60 -0
  308. angr/analyses/identifier/functions/__init__.py +37 -0
  309. angr/analyses/identifier/functions/atoi.py +73 -0
  310. angr/analyses/identifier/functions/based_atoi.py +125 -0
  311. angr/analyses/identifier/functions/fdprintf.py +123 -0
  312. angr/analyses/identifier/functions/free.py +64 -0
  313. angr/analyses/identifier/functions/int2str.py +287 -0
  314. angr/analyses/identifier/functions/malloc.py +111 -0
  315. angr/analyses/identifier/functions/memcmp.py +67 -0
  316. angr/analyses/identifier/functions/memcpy.py +89 -0
  317. angr/analyses/identifier/functions/memset.py +43 -0
  318. angr/analyses/identifier/functions/printf.py +123 -0
  319. angr/analyses/identifier/functions/recv_until.py +312 -0
  320. angr/analyses/identifier/functions/skip_calloc.py +73 -0
  321. angr/analyses/identifier/functions/skip_realloc.py +97 -0
  322. angr/analyses/identifier/functions/skip_recv_n.py +105 -0
  323. angr/analyses/identifier/functions/snprintf.py +112 -0
  324. angr/analyses/identifier/functions/sprintf.py +116 -0
  325. angr/analyses/identifier/functions/strcasecmp.py +33 -0
  326. angr/analyses/identifier/functions/strcmp.py +113 -0
  327. angr/analyses/identifier/functions/strcpy.py +43 -0
  328. angr/analyses/identifier/functions/strlen.py +27 -0
  329. angr/analyses/identifier/functions/strncmp.py +104 -0
  330. angr/analyses/identifier/functions/strncpy.py +65 -0
  331. angr/analyses/identifier/functions/strtol.py +89 -0
  332. angr/analyses/identifier/identify.py +825 -0
  333. angr/analyses/identifier/runner.py +360 -0
  334. angr/analyses/init_finder.py +289 -0
  335. angr/analyses/loop_analysis/__init__.py +4 -0
  336. angr/analyses/loop_analysis/loop_analysis.py +464 -0
  337. angr/analyses/loop_analysis.py +349 -0
  338. angr/analyses/loop_unroller/__init__.py +4 -0
  339. angr/analyses/loop_unroller/loop_unroller.py +222 -0
  340. angr/analyses/loopfinder.py +171 -0
  341. angr/analyses/outliner/__init__.py +7 -0
  342. angr/analyses/outliner/outliner.py +402 -0
  343. angr/analyses/patchfinder.py +137 -0
  344. angr/analyses/pathfinder.py +282 -0
  345. angr/analyses/propagator/__init__.py +5 -0
  346. angr/analyses/propagator/engine_base.py +62 -0
  347. angr/analyses/propagator/engine_vex.py +297 -0
  348. angr/analyses/propagator/propagator.py +361 -0
  349. angr/analyses/propagator/top_checker_mixin.py +218 -0
  350. angr/analyses/propagator/values.py +117 -0
  351. angr/analyses/propagator/vex_vars.py +68 -0
  352. angr/analyses/proximity_graph.py +444 -0
  353. angr/analyses/purity/__init__.py +15 -0
  354. angr/analyses/purity/analysis.py +78 -0
  355. angr/analyses/purity/engine.py +593 -0
  356. angr/analyses/reaching_definitions/__init__.py +67 -0
  357. angr/analyses/reaching_definitions/call_trace.py +73 -0
  358. angr/analyses/reaching_definitions/dep_graph.py +433 -0
  359. angr/analyses/reaching_definitions/engine_ail.py +1128 -0
  360. angr/analyses/reaching_definitions/engine_vex.py +1128 -0
  361. angr/analyses/reaching_definitions/external_codeloc.py +0 -0
  362. angr/analyses/reaching_definitions/function_handler.py +639 -0
  363. angr/analyses/reaching_definitions/function_handler_library/__init__.py +12 -0
  364. angr/analyses/reaching_definitions/function_handler_library/stdio.py +269 -0
  365. angr/analyses/reaching_definitions/function_handler_library/stdlib.py +195 -0
  366. angr/analyses/reaching_definitions/function_handler_library/string.py +158 -0
  367. angr/analyses/reaching_definitions/function_handler_library/unistd.py +51 -0
  368. angr/analyses/reaching_definitions/heap_allocator.py +70 -0
  369. angr/analyses/reaching_definitions/rd_initializer.py +237 -0
  370. angr/analyses/reaching_definitions/rd_state.py +579 -0
  371. angr/analyses/reaching_definitions/reaching_definitions.py +581 -0
  372. angr/analyses/reaching_definitions/subject.py +65 -0
  373. angr/analyses/reassembler.py +2900 -0
  374. angr/analyses/s_liveness.py +254 -0
  375. angr/analyses/s_propagator.py +575 -0
  376. angr/analyses/s_reaching_definitions/__init__.py +12 -0
  377. angr/analyses/s_reaching_definitions/s_rda_model.py +145 -0
  378. angr/analyses/s_reaching_definitions/s_rda_view.py +344 -0
  379. angr/analyses/s_reaching_definitions/s_reaching_definitions.py +230 -0
  380. angr/analyses/smc.py +160 -0
  381. angr/analyses/soot_class_hierarchy.py +273 -0
  382. angr/analyses/stack_pointer_tracker.py +954 -0
  383. angr/analyses/static_hooker.py +53 -0
  384. angr/analyses/typehoon/__init__.py +5 -0
  385. angr/analyses/typehoon/dfa.py +118 -0
  386. angr/analyses/typehoon/lifter.py +133 -0
  387. angr/analyses/typehoon/simple_solver.py +2009 -0
  388. angr/analyses/typehoon/translator.py +283 -0
  389. angr/analyses/typehoon/typeconsts.py +439 -0
  390. angr/analyses/typehoon/typehoon.py +338 -0
  391. angr/analyses/typehoon/typevars.py +633 -0
  392. angr/analyses/typehoon/variance.py +11 -0
  393. angr/analyses/unpacker/__init__.py +6 -0
  394. angr/analyses/unpacker/obfuscation_detector.py +103 -0
  395. angr/analyses/unpacker/packing_detector.py +138 -0
  396. angr/analyses/variable_recovery/__init__.py +9 -0
  397. angr/analyses/variable_recovery/annotations.py +58 -0
  398. angr/analyses/variable_recovery/engine_ail.py +978 -0
  399. angr/analyses/variable_recovery/engine_base.py +1256 -0
  400. angr/analyses/variable_recovery/engine_vex.py +594 -0
  401. angr/analyses/variable_recovery/irsb_scanner.py +143 -0
  402. angr/analyses/variable_recovery/variable_recovery.py +574 -0
  403. angr/analyses/variable_recovery/variable_recovery_base.py +489 -0
  404. angr/analyses/variable_recovery/variable_recovery_fast.py +669 -0
  405. angr/analyses/veritesting.py +626 -0
  406. angr/analyses/vfg.py +1898 -0
  407. angr/analyses/vsa_ddg.py +420 -0
  408. angr/analyses/vtable.py +92 -0
  409. angr/analyses/xrefs.py +286 -0
  410. angr/angrdb/__init__.py +14 -0
  411. angr/angrdb/db.py +215 -0
  412. angr/angrdb/models.py +184 -0
  413. angr/angrdb/serializers/__init__.py +10 -0
  414. angr/angrdb/serializers/cfg_model.py +41 -0
  415. angr/angrdb/serializers/comments.py +60 -0
  416. angr/angrdb/serializers/funcs.py +61 -0
  417. angr/angrdb/serializers/kb.py +111 -0
  418. angr/angrdb/serializers/labels.py +59 -0
  419. angr/angrdb/serializers/loader.py +165 -0
  420. angr/angrdb/serializers/structured_code.py +167 -0
  421. angr/angrdb/serializers/variables.py +58 -0
  422. angr/angrdb/serializers/xrefs.py +48 -0
  423. angr/annocfg.py +317 -0
  424. angr/blade.py +431 -0
  425. angr/block.py +509 -0
  426. angr/callable.py +176 -0
  427. angr/calling_conventions.py +2613 -0
  428. angr/code_location.py +249 -0
  429. angr/codenode.py +145 -0
  430. angr/concretization_strategies/__init__.py +32 -0
  431. angr/concretization_strategies/any.py +17 -0
  432. angr/concretization_strategies/any_named.py +35 -0
  433. angr/concretization_strategies/base.py +81 -0
  434. angr/concretization_strategies/controlled_data.py +58 -0
  435. angr/concretization_strategies/eval.py +19 -0
  436. angr/concretization_strategies/logging.py +35 -0
  437. angr/concretization_strategies/max.py +25 -0
  438. angr/concretization_strategies/nonzero.py +16 -0
  439. angr/concretization_strategies/nonzero_range.py +22 -0
  440. angr/concretization_strategies/norepeats.py +37 -0
  441. angr/concretization_strategies/norepeats_range.py +37 -0
  442. angr/concretization_strategies/range.py +19 -0
  443. angr/concretization_strategies/signed_add.py +31 -0
  444. angr/concretization_strategies/single.py +15 -0
  445. angr/concretization_strategies/solutions.py +20 -0
  446. angr/concretization_strategies/unlimited_range.py +17 -0
  447. angr/distributed/__init__.py +9 -0
  448. angr/distributed/server.py +197 -0
  449. angr/distributed/worker.py +185 -0
  450. angr/emulator.py +144 -0
  451. angr/engines/__init__.py +69 -0
  452. angr/engines/ail/__init__.py +16 -0
  453. angr/engines/ail/callstack.py +58 -0
  454. angr/engines/ail/engine_light.py +903 -0
  455. angr/engines/ail/engine_successors.py +24 -0
  456. angr/engines/ail/setup.py +57 -0
  457. angr/engines/concrete.py +66 -0
  458. angr/engines/engine.py +29 -0
  459. angr/engines/failure.py +27 -0
  460. angr/engines/hook.py +93 -0
  461. angr/engines/icicle.py +294 -0
  462. angr/engines/light/__init__.py +23 -0
  463. angr/engines/light/data.py +681 -0
  464. angr/engines/light/engine.py +1297 -0
  465. angr/engines/pcode/__init__.py +9 -0
  466. angr/engines/pcode/behavior.py +998 -0
  467. angr/engines/pcode/cc.py +148 -0
  468. angr/engines/pcode/emulate.py +440 -0
  469. angr/engines/pcode/engine.py +242 -0
  470. angr/engines/pcode/lifter.py +1428 -0
  471. angr/engines/procedure.py +70 -0
  472. angr/engines/soot/__init__.py +5 -0
  473. angr/engines/soot/engine.py +410 -0
  474. angr/engines/soot/exceptions.py +17 -0
  475. angr/engines/soot/expressions/__init__.py +87 -0
  476. angr/engines/soot/expressions/arrayref.py +22 -0
  477. angr/engines/soot/expressions/base.py +21 -0
  478. angr/engines/soot/expressions/binop.py +28 -0
  479. angr/engines/soot/expressions/cast.py +22 -0
  480. angr/engines/soot/expressions/condition.py +35 -0
  481. angr/engines/soot/expressions/constants.py +47 -0
  482. angr/engines/soot/expressions/instanceOf.py +15 -0
  483. angr/engines/soot/expressions/instancefieldref.py +8 -0
  484. angr/engines/soot/expressions/invoke.py +114 -0
  485. angr/engines/soot/expressions/length.py +8 -0
  486. angr/engines/soot/expressions/local.py +8 -0
  487. angr/engines/soot/expressions/new.py +16 -0
  488. angr/engines/soot/expressions/newArray.py +54 -0
  489. angr/engines/soot/expressions/newMultiArray.py +86 -0
  490. angr/engines/soot/expressions/paramref.py +8 -0
  491. angr/engines/soot/expressions/phi.py +30 -0
  492. angr/engines/soot/expressions/staticfieldref.py +8 -0
  493. angr/engines/soot/expressions/thisref.py +7 -0
  494. angr/engines/soot/expressions/unsupported.py +7 -0
  495. angr/engines/soot/field_dispatcher.py +46 -0
  496. angr/engines/soot/method_dispatcher.py +46 -0
  497. angr/engines/soot/statements/__init__.py +44 -0
  498. angr/engines/soot/statements/assign.py +30 -0
  499. angr/engines/soot/statements/base.py +79 -0
  500. angr/engines/soot/statements/goto.py +14 -0
  501. angr/engines/soot/statements/identity.py +15 -0
  502. angr/engines/soot/statements/if_.py +19 -0
  503. angr/engines/soot/statements/invoke.py +12 -0
  504. angr/engines/soot/statements/return_.py +20 -0
  505. angr/engines/soot/statements/switch.py +41 -0
  506. angr/engines/soot/statements/throw.py +15 -0
  507. angr/engines/soot/values/__init__.py +38 -0
  508. angr/engines/soot/values/arrayref.py +122 -0
  509. angr/engines/soot/values/base.py +7 -0
  510. angr/engines/soot/values/constants.py +18 -0
  511. angr/engines/soot/values/instancefieldref.py +44 -0
  512. angr/engines/soot/values/local.py +18 -0
  513. angr/engines/soot/values/paramref.py +18 -0
  514. angr/engines/soot/values/staticfieldref.py +38 -0
  515. angr/engines/soot/values/strref.py +38 -0
  516. angr/engines/soot/values/thisref.py +149 -0
  517. angr/engines/successors.py +608 -0
  518. angr/engines/syscall.py +51 -0
  519. angr/engines/unicorn.py +490 -0
  520. angr/engines/vex/__init__.py +20 -0
  521. angr/engines/vex/claripy/__init__.py +5 -0
  522. angr/engines/vex/claripy/ccall.py +2097 -0
  523. angr/engines/vex/claripy/datalayer.py +141 -0
  524. angr/engines/vex/claripy/irop.py +1276 -0
  525. angr/engines/vex/heavy/__init__.py +16 -0
  526. angr/engines/vex/heavy/actions.py +231 -0
  527. angr/engines/vex/heavy/concretizers.py +403 -0
  528. angr/engines/vex/heavy/dirty.py +466 -0
  529. angr/engines/vex/heavy/heavy.py +370 -0
  530. angr/engines/vex/heavy/inspect.py +52 -0
  531. angr/engines/vex/heavy/resilience.py +85 -0
  532. angr/engines/vex/heavy/super_fastpath.py +34 -0
  533. angr/engines/vex/lifter.py +420 -0
  534. angr/engines/vex/light/__init__.py +11 -0
  535. angr/engines/vex/light/light.py +551 -0
  536. angr/engines/vex/light/resilience.py +74 -0
  537. angr/engines/vex/light/slicing.py +52 -0
  538. angr/errors.py +611 -0
  539. angr/exploration_techniques/__init__.py +53 -0
  540. angr/exploration_techniques/base.py +126 -0
  541. angr/exploration_techniques/bucketizer.py +94 -0
  542. angr/exploration_techniques/common.py +56 -0
  543. angr/exploration_techniques/dfs.py +37 -0
  544. angr/exploration_techniques/director.py +520 -0
  545. angr/exploration_techniques/driller_core.py +100 -0
  546. angr/exploration_techniques/explorer.py +152 -0
  547. angr/exploration_techniques/lengthlimiter.py +22 -0
  548. angr/exploration_techniques/local_loop_seer.py +65 -0
  549. angr/exploration_techniques/loop_seer.py +236 -0
  550. angr/exploration_techniques/manual_mergepoint.py +82 -0
  551. angr/exploration_techniques/memory_watcher.py +43 -0
  552. angr/exploration_techniques/oppologist.py +92 -0
  553. angr/exploration_techniques/slicecutor.py +118 -0
  554. angr/exploration_techniques/spiller.py +280 -0
  555. angr/exploration_techniques/spiller_db.py +27 -0
  556. angr/exploration_techniques/stochastic.py +56 -0
  557. angr/exploration_techniques/stub_stasher.py +19 -0
  558. angr/exploration_techniques/suggestions.py +159 -0
  559. angr/exploration_techniques/tech_builder.py +49 -0
  560. angr/exploration_techniques/threading.py +69 -0
  561. angr/exploration_techniques/timeout.py +34 -0
  562. angr/exploration_techniques/tracer.py +1098 -0
  563. angr/exploration_techniques/unique.py +106 -0
  564. angr/exploration_techniques/veritesting.py +37 -0
  565. angr/factory.py +413 -0
  566. angr/flirt/__init__.py +124 -0
  567. angr/flirt/build_sig.py +305 -0
  568. angr/graph_utils.py +0 -0
  569. angr/keyed_region.py +525 -0
  570. angr/knowledge_base.py +146 -0
  571. angr/knowledge_plugins/__init__.py +43 -0
  572. angr/knowledge_plugins/callsite_prototypes.py +95 -0
  573. angr/knowledge_plugins/cfg/__init__.py +18 -0
  574. angr/knowledge_plugins/cfg/cfg_manager.py +95 -0
  575. angr/knowledge_plugins/cfg/cfg_model.py +1043 -0
  576. angr/knowledge_plugins/cfg/cfg_node.py +536 -0
  577. angr/knowledge_plugins/cfg/indirect_jump.py +131 -0
  578. angr/knowledge_plugins/cfg/memory_data.py +156 -0
  579. angr/knowledge_plugins/comments.py +16 -0
  580. angr/knowledge_plugins/custom_strings.py +38 -0
  581. angr/knowledge_plugins/data.py +22 -0
  582. angr/knowledge_plugins/debug_variables.py +216 -0
  583. angr/knowledge_plugins/functions/__init__.py +9 -0
  584. angr/knowledge_plugins/functions/function.py +1830 -0
  585. angr/knowledge_plugins/functions/function_manager.py +621 -0
  586. angr/knowledge_plugins/functions/function_parser.py +360 -0
  587. angr/knowledge_plugins/functions/soot_function.py +128 -0
  588. angr/knowledge_plugins/indirect_jumps.py +35 -0
  589. angr/knowledge_plugins/key_definitions/__init__.py +17 -0
  590. angr/knowledge_plugins/key_definitions/atoms.py +374 -0
  591. angr/knowledge_plugins/key_definitions/constants.py +29 -0
  592. angr/knowledge_plugins/key_definitions/definition.py +216 -0
  593. angr/knowledge_plugins/key_definitions/environment.py +96 -0
  594. angr/knowledge_plugins/key_definitions/heap_address.py +33 -0
  595. angr/knowledge_plugins/key_definitions/key_definition_manager.py +82 -0
  596. angr/knowledge_plugins/key_definitions/live_definitions.py +1020 -0
  597. angr/knowledge_plugins/key_definitions/liveness.py +165 -0
  598. angr/knowledge_plugins/key_definitions/rd_model.py +171 -0
  599. angr/knowledge_plugins/key_definitions/tag.py +78 -0
  600. angr/knowledge_plugins/key_definitions/undefined.py +70 -0
  601. angr/knowledge_plugins/key_definitions/unknown_size.py +86 -0
  602. angr/knowledge_plugins/key_definitions/uses.py +178 -0
  603. angr/knowledge_plugins/labels.py +110 -0
  604. angr/knowledge_plugins/obfuscations.py +40 -0
  605. angr/knowledge_plugins/patches.py +126 -0
  606. angr/knowledge_plugins/plugin.py +24 -0
  607. angr/knowledge_plugins/propagations/__init__.py +10 -0
  608. angr/knowledge_plugins/propagations/prop_value.py +191 -0
  609. angr/knowledge_plugins/propagations/propagation_manager.py +60 -0
  610. angr/knowledge_plugins/propagations/propagation_model.py +80 -0
  611. angr/knowledge_plugins/propagations/states.py +552 -0
  612. angr/knowledge_plugins/structured_code.py +63 -0
  613. angr/knowledge_plugins/types.py +95 -0
  614. angr/knowledge_plugins/variables/__init__.py +8 -0
  615. angr/knowledge_plugins/variables/variable_access.py +113 -0
  616. angr/knowledge_plugins/variables/variable_manager.py +1375 -0
  617. angr/knowledge_plugins/xrefs/__init__.py +12 -0
  618. angr/knowledge_plugins/xrefs/xref.py +150 -0
  619. angr/knowledge_plugins/xrefs/xref_manager.py +127 -0
  620. angr/knowledge_plugins/xrefs/xref_types.py +16 -0
  621. angr/misc/__init__.py +19 -0
  622. angr/misc/ansi.py +47 -0
  623. angr/misc/autoimport.py +90 -0
  624. angr/misc/bug_report.py +126 -0
  625. angr/misc/hookset.py +106 -0
  626. angr/misc/loggers.py +130 -0
  627. angr/misc/picklable_lock.py +46 -0
  628. angr/misc/plugins.py +289 -0
  629. angr/misc/telemetry.py +54 -0
  630. angr/misc/testing.py +24 -0
  631. angr/misc/ux.py +31 -0
  632. angr/procedures/__init__.py +12 -0
  633. angr/procedures/advapi32/__init__.py +0 -0
  634. angr/procedures/cgc/__init__.py +3 -0
  635. angr/procedures/cgc/_terminate.py +11 -0
  636. angr/procedures/cgc/allocate.py +75 -0
  637. angr/procedures/cgc/deallocate.py +67 -0
  638. angr/procedures/cgc/fdwait.py +65 -0
  639. angr/procedures/cgc/random.py +67 -0
  640. angr/procedures/cgc/receive.py +93 -0
  641. angr/procedures/cgc/transmit.py +65 -0
  642. angr/procedures/definitions/__init__.py +1043 -0
  643. angr/procedures/definitions/cgc.py +23 -0
  644. angr/procedures/definitions/common/glibc.json +3516 -0
  645. angr/procedures/definitions/gnulib.py +41 -0
  646. angr/procedures/definitions/libstdcpp.py +25 -0
  647. angr/procedures/definitions/linux_kernel.py +8382 -0
  648. angr/procedures/definitions/linux_loader.py +7 -0
  649. angr/procedures/definitions/macho_libsystem.py +18 -0
  650. angr/procedures/definitions/msvcr.py +25 -0
  651. angr/procedures/definitions/parse_glibc.py +77 -0
  652. angr/procedures/definitions/parse_syscalls_from_local_system.py +54 -0
  653. angr/procedures/definitions/parse_win32json.py +2540 -0
  654. angr/procedures/definitions/types_stl.py +22 -0
  655. angr/procedures/definitions/wdk/api-ms-win-dx-d3dkmt-l1-1-4.json +24 -0
  656. angr/procedures/definitions/wdk/api-ms-win-dx-d3dkmt-l1-1-6.json +18 -0
  657. angr/procedures/definitions/wdk/clfs.json +189 -0
  658. angr/procedures/definitions/wdk/fltmgr.json +813 -0
  659. angr/procedures/definitions/wdk/fwpkclnt.json +24 -0
  660. angr/procedures/definitions/wdk/fwpuclnt.json +453 -0
  661. angr/procedures/definitions/wdk/gdi32.json +528 -0
  662. angr/procedures/definitions/wdk/hal.json +96 -0
  663. angr/procedures/definitions/wdk/ksecdd.json +72 -0
  664. angr/procedures/definitions/wdk/ndis.json +336 -0
  665. angr/procedures/definitions/wdk/ntoskrnl.json +5158 -0
  666. angr/procedures/definitions/wdk/offreg.json +87 -0
  667. angr/procedures/definitions/wdk/pshed.json +33 -0
  668. angr/procedures/definitions/wdk/secur32.json +39 -0
  669. angr/procedures/definitions/wdk/vhfum.json +30 -0
  670. angr/procedures/definitions/win32/_types_win32.json +34480 -0
  671. angr/procedures/definitions/win32/aclui.json +24 -0
  672. angr/procedures/definitions/win32/activeds.json +81 -0
  673. angr/procedures/definitions/win32/advapi32.json +2505 -0
  674. angr/procedures/definitions/win32/advpack.json +165 -0
  675. angr/procedures/definitions/win32/amsi.json +36 -0
  676. angr/procedures/definitions/win32/api-ms-win-appmodel-runtime-l1-1-1.json +45 -0
  677. angr/procedures/definitions/win32/api-ms-win-appmodel-runtime-l1-1-3.json +30 -0
  678. angr/procedures/definitions/win32/api-ms-win-appmodel-runtime-l1-1-6.json +18 -0
  679. angr/procedures/definitions/win32/api-ms-win-core-apiquery-l2-1-0.json +18 -0
  680. angr/procedures/definitions/win32/api-ms-win-core-backgroundtask-l1-1-0.json +18 -0
  681. angr/procedures/definitions/win32/api-ms-win-core-comm-l1-1-1.json +18 -0
  682. angr/procedures/definitions/win32/api-ms-win-core-comm-l1-1-2.json +18 -0
  683. angr/procedures/definitions/win32/api-ms-win-core-enclave-l1-1-1.json +24 -0
  684. angr/procedures/definitions/win32/api-ms-win-core-errorhandling-l1-1-3.json +18 -0
  685. angr/procedures/definitions/win32/api-ms-win-core-featurestaging-l1-1-0.json +30 -0
  686. angr/procedures/definitions/win32/api-ms-win-core-featurestaging-l1-1-1.json +18 -0
  687. angr/procedures/definitions/win32/api-ms-win-core-file-fromapp-l1-1-0.json +48 -0
  688. angr/procedures/definitions/win32/api-ms-win-core-handle-l1-1-0.json +18 -0
  689. angr/procedures/definitions/win32/api-ms-win-core-ioring-l1-1-0.json +51 -0
  690. angr/procedures/definitions/win32/api-ms-win-core-marshal-l1-1-0.json +27 -0
  691. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-3.json +27 -0
  692. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-4.json +18 -0
  693. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-5.json +24 -0
  694. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-6.json +27 -0
  695. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-7.json +21 -0
  696. angr/procedures/definitions/win32/api-ms-win-core-memory-l1-1-8.json +24 -0
  697. angr/procedures/definitions/win32/api-ms-win-core-path-l1-1-0.json +81 -0
  698. angr/procedures/definitions/win32/api-ms-win-core-psm-appnotify-l1-1-0.json +21 -0
  699. angr/procedures/definitions/win32/api-ms-win-core-psm-appnotify-l1-1-1.json +21 -0
  700. angr/procedures/definitions/win32/api-ms-win-core-realtime-l1-1-1.json +24 -0
  701. angr/procedures/definitions/win32/api-ms-win-core-realtime-l1-1-2.json +24 -0
  702. angr/procedures/definitions/win32/api-ms-win-core-slapi-l1-1-0.json +18 -0
  703. angr/procedures/definitions/win32/api-ms-win-core-state-helpers-l1-1-0.json +18 -0
  704. angr/procedures/definitions/win32/api-ms-win-core-synch-l1-2-0.json +24 -0
  705. angr/procedures/definitions/win32/api-ms-win-core-sysinfo-l1-2-0.json +18 -0
  706. angr/procedures/definitions/win32/api-ms-win-core-sysinfo-l1-2-3.json +21 -0
  707. angr/procedures/definitions/win32/api-ms-win-core-sysinfo-l1-2-4.json +21 -0
  708. angr/procedures/definitions/win32/api-ms-win-core-sysinfo-l1-2-6.json +18 -0
  709. angr/procedures/definitions/win32/api-ms-win-core-util-l1-1-1.json +21 -0
  710. angr/procedures/definitions/win32/api-ms-win-core-wow64-l1-1-1.json +24 -0
  711. angr/procedures/definitions/win32/api-ms-win-devices-query-l1-1-0.json +42 -0
  712. angr/procedures/definitions/win32/api-ms-win-devices-query-l1-1-1.json +30 -0
  713. angr/procedures/definitions/win32/api-ms-win-dx-d3dkmt-l1-1-0.json +18 -0
  714. angr/procedures/definitions/win32/api-ms-win-gaming-deviceinformation-l1-1-0.json +18 -0
  715. angr/procedures/definitions/win32/api-ms-win-gaming-expandedresources-l1-1-0.json +24 -0
  716. angr/procedures/definitions/win32/api-ms-win-gaming-tcui-l1-1-0.json +36 -0
  717. angr/procedures/definitions/win32/api-ms-win-gaming-tcui-l1-1-1.json +21 -0
  718. angr/procedures/definitions/win32/api-ms-win-gaming-tcui-l1-1-2.json +36 -0
  719. angr/procedures/definitions/win32/api-ms-win-gaming-tcui-l1-1-3.json +21 -0
  720. angr/procedures/definitions/win32/api-ms-win-gaming-tcui-l1-1-4.json +39 -0
  721. angr/procedures/definitions/win32/api-ms-win-mm-misc-l1-1-1.json +18 -0
  722. angr/procedures/definitions/win32/api-ms-win-net-isolation-l1-1-0.json +39 -0
  723. angr/procedures/definitions/win32/api-ms-win-security-base-l1-2-2.json +18 -0
  724. angr/procedures/definitions/win32/api-ms-win-security-isolatedcontainer-l1-1-0.json +18 -0
  725. angr/procedures/definitions/win32/api-ms-win-security-isolatedcontainer-l1-1-1.json +18 -0
  726. angr/procedures/definitions/win32/api-ms-win-service-core-l1-1-3.json +18 -0
  727. angr/procedures/definitions/win32/api-ms-win-service-core-l1-1-4.json +18 -0
  728. angr/procedures/definitions/win32/api-ms-win-service-core-l1-1-5.json +21 -0
  729. angr/procedures/definitions/win32/api-ms-win-shcore-scaling-l1-1-0.json +24 -0
  730. angr/procedures/definitions/win32/api-ms-win-shcore-scaling-l1-1-1.json +33 -0
  731. angr/procedures/definitions/win32/api-ms-win-shcore-scaling-l1-1-2.json +18 -0
  732. angr/procedures/definitions/win32/api-ms-win-wsl-api-l1-1-0.json +36 -0
  733. angr/procedures/definitions/win32/apphelp.json +18 -0
  734. angr/procedures/definitions/win32/authz.json +114 -0
  735. angr/procedures/definitions/win32/avicap32.json +27 -0
  736. angr/procedures/definitions/win32/avifil32.json +195 -0
  737. angr/procedures/definitions/win32/avrt.json +57 -0
  738. angr/procedures/definitions/win32/bcp47mrm.json +21 -0
  739. angr/procedures/definitions/win32/bcrypt.json +174 -0
  740. angr/procedures/definitions/win32/bcryptprimitives.json +21 -0
  741. angr/procedures/definitions/win32/bluetoothapis.json +138 -0
  742. angr/procedures/definitions/win32/bthprops_cpl.json +33 -0
  743. angr/procedures/definitions/win32/cabinet.json +81 -0
  744. angr/procedures/definitions/win32/certadm.json +69 -0
  745. angr/procedures/definitions/win32/certpoleng.json +39 -0
  746. angr/procedures/definitions/win32/cfgmgr32.json +732 -0
  747. angr/procedures/definitions/win32/chakra.json +270 -0
  748. angr/procedures/definitions/win32/cldapi.json +123 -0
  749. angr/procedures/definitions/win32/clfsw32.json +192 -0
  750. angr/procedures/definitions/win32/clusapi.json +855 -0
  751. angr/procedures/definitions/win32/comctl32.json +360 -0
  752. angr/procedures/definitions/win32/comdlg32.json +78 -0
  753. angr/procedures/definitions/win32/compstui.json +27 -0
  754. angr/procedures/definitions/win32/computecore.json +177 -0
  755. angr/procedures/definitions/win32/computenetwork.json +144 -0
  756. angr/procedures/definitions/win32/computestorage.json +51 -0
  757. angr/procedures/definitions/win32/comsvcs.json +36 -0
  758. angr/procedures/definitions/win32/credui.json +72 -0
  759. angr/procedures/definitions/win32/crypt32.json +702 -0
  760. angr/procedures/definitions/win32/cryptnet.json +30 -0
  761. angr/procedures/definitions/win32/cryptui.json +45 -0
  762. angr/procedures/definitions/win32/cryptxml.json +72 -0
  763. angr/procedures/definitions/win32/cscapi.json +27 -0
  764. angr/procedures/definitions/win32/d2d1.json +54 -0
  765. angr/procedures/definitions/win32/d3d10.json +96 -0
  766. angr/procedures/definitions/win32/d3d10_1.json +21 -0
  767. angr/procedures/definitions/win32/d3d11.json +24 -0
  768. angr/procedures/definitions/win32/d3d12.json +39 -0
  769. angr/procedures/definitions/win32/d3d9.json +48 -0
  770. angr/procedures/definitions/win32/d3dcompiler_47.json +93 -0
  771. angr/procedures/definitions/win32/d3dcsx.json +42 -0
  772. angr/procedures/definitions/win32/davclnt.json +69 -0
  773. angr/procedures/definitions/win32/dbgeng.json +27 -0
  774. angr/procedures/definitions/win32/dbghelp.json +663 -0
  775. angr/procedures/definitions/win32/dbgmodel.json +18 -0
  776. angr/procedures/definitions/win32/dciman32.json +75 -0
  777. angr/procedures/definitions/win32/dcomp.json +51 -0
  778. angr/procedures/definitions/win32/ddraw.json +36 -0
  779. angr/procedures/definitions/win32/deviceaccess.json +18 -0
  780. angr/procedures/definitions/win32/dflayout.json +18 -0
  781. angr/procedures/definitions/win32/dhcpcsvc.json +60 -0
  782. angr/procedures/definitions/win32/dhcpcsvc6.json +33 -0
  783. angr/procedures/definitions/win32/dhcpsapi.json +603 -0
  784. angr/procedures/definitions/win32/diagnosticdataquery.json +120 -0
  785. angr/procedures/definitions/win32/dinput8.json +18 -0
  786. angr/procedures/definitions/win32/directml.json +21 -0
  787. angr/procedures/definitions/win32/dmprocessxmlfiltered.json +18 -0
  788. angr/procedures/definitions/win32/dnsapi.json +207 -0
  789. angr/procedures/definitions/win32/drt.json +63 -0
  790. angr/procedures/definitions/win32/drtprov.json +42 -0
  791. angr/procedures/definitions/win32/drttransport.json +21 -0
  792. angr/procedures/definitions/win32/dsound.json +45 -0
  793. angr/procedures/definitions/win32/dsparse.json +72 -0
  794. angr/procedures/definitions/win32/dsprop.json +36 -0
  795. angr/procedures/definitions/win32/dssec.json +27 -0
  796. angr/procedures/definitions/win32/dsuiext.json +27 -0
  797. angr/procedures/definitions/win32/dwmapi.json +108 -0
  798. angr/procedures/definitions/win32/dwrite.json +18 -0
  799. angr/procedures/definitions/win32/dxcompiler.json +21 -0
  800. angr/procedures/definitions/win32/dxcore.json +18 -0
  801. angr/procedures/definitions/win32/dxgi.json +33 -0
  802. angr/procedures/definitions/win32/dxva2.json +129 -0
  803. angr/procedures/definitions/win32/eappcfg.json +57 -0
  804. angr/procedures/definitions/win32/eappprxy.json +69 -0
  805. angr/procedures/definitions/win32/efswrt.json +21 -0
  806. angr/procedures/definitions/win32/elscore.json +30 -0
  807. angr/procedures/definitions/win32/esent.json +702 -0
  808. angr/procedures/definitions/win32/evr.json +36 -0
  809. angr/procedures/definitions/win32/faultrep.json +27 -0
  810. angr/procedures/definitions/win32/fhsvcctl.json +36 -0
  811. angr/procedures/definitions/win32/firewallapi.json +24 -0
  812. angr/procedures/definitions/win32/fltlib.json +99 -0
  813. angr/procedures/definitions/win32/fontsub.json +21 -0
  814. angr/procedures/definitions/win32/forceinline.json +24 -0
  815. angr/procedures/definitions/win32/fwpuclnt.json +591 -0
  816. angr/procedures/definitions/win32/fxsutility.json +21 -0
  817. angr/procedures/definitions/win32/gdi32.json +1308 -0
  818. angr/procedures/definitions/win32/gdiplus.json +1902 -0
  819. angr/procedures/definitions/win32/glu32.json +171 -0
  820. angr/procedures/definitions/win32/gpedit.json +33 -0
  821. angr/procedures/definitions/win32/hhctrl_ocx.json +21 -0
  822. angr/procedures/definitions/win32/hid.json +150 -0
  823. angr/procedures/definitions/win32/hlink.json +99 -0
  824. angr/procedures/definitions/win32/hrtfapo.json +18 -0
  825. angr/procedures/definitions/win32/httpapi.json +144 -0
  826. angr/procedures/definitions/win32/icm32.json +78 -0
  827. angr/procedures/definitions/win32/icmui.json +21 -0
  828. angr/procedures/definitions/win32/icu.json +3090 -0
  829. angr/procedures/definitions/win32/ieframe.json +102 -0
  830. angr/procedures/definitions/win32/imagehlp.json +84 -0
  831. angr/procedures/definitions/win32/imgutil.json +42 -0
  832. angr/procedures/definitions/win32/imm32.json +261 -0
  833. angr/procedures/definitions/win32/infocardapi.json +66 -0
  834. angr/procedures/definitions/win32/inkobjcore.json +96 -0
  835. angr/procedures/definitions/win32/iphlpapi.json +618 -0
  836. angr/procedures/definitions/win32/iscsidsc.json +252 -0
  837. angr/procedures/definitions/win32/isolatedwindowsenvironmentutils.json +21 -0
  838. angr/procedures/definitions/win32/kernel32.json +4566 -0
  839. angr/procedures/definitions/win32/kernelbase.json +33 -0
  840. angr/procedures/definitions/win32/keycredmgr.json +27 -0
  841. angr/procedures/definitions/win32/ksproxy_ax.json +33 -0
  842. angr/procedures/definitions/win32/ksuser.json +39 -0
  843. angr/procedures/definitions/win32/ktmw32.json +132 -0
  844. angr/procedures/definitions/win32/licenseprotection.json +21 -0
  845. angr/procedures/definitions/win32/loadperf.json +51 -0
  846. angr/procedures/definitions/win32/magnification.json +72 -0
  847. angr/procedures/definitions/win32/mapi32.json +213 -0
  848. angr/procedures/definitions/win32/mdmlocalmanagement.json +24 -0
  849. angr/procedures/definitions/win32/mdmregistration.json +60 -0
  850. angr/procedures/definitions/win32/mf.json +201 -0
  851. angr/procedures/definitions/win32/mfcore.json +21 -0
  852. angr/procedures/definitions/win32/mfplat.json +450 -0
  853. angr/procedures/definitions/win32/mfplay.json +18 -0
  854. angr/procedures/definitions/win32/mfreadwrite.json +30 -0
  855. angr/procedures/definitions/win32/mfsensorgroup.json +45 -0
  856. angr/procedures/definitions/win32/mfsrcsnk.json +21 -0
  857. angr/procedures/definitions/win32/mgmtapi.json +42 -0
  858. angr/procedures/definitions/win32/mi.json +18 -0
  859. angr/procedures/definitions/win32/mmdevapi.json +18 -0
  860. angr/procedures/definitions/win32/mpr.json +156 -0
  861. angr/procedures/definitions/win32/mprapi.json +351 -0
  862. angr/procedures/definitions/win32/mqrt.json +117 -0
  863. angr/procedures/definitions/win32/mrmsupport.json +96 -0
  864. angr/procedures/definitions/win32/msacm32.json +141 -0
  865. angr/procedures/definitions/win32/msajapi.json +1656 -0
  866. angr/procedures/definitions/win32/mscms.json +252 -0
  867. angr/procedures/definitions/win32/mscoree.json +96 -0
  868. angr/procedures/definitions/win32/msctfmonitor.json +24 -0
  869. angr/procedures/definitions/win32/msdelta.json +63 -0
  870. angr/procedures/definitions/win32/msdmo.json +48 -0
  871. angr/procedures/definitions/win32/msdrm.json +267 -0
  872. angr/procedures/definitions/win32/msi.json +807 -0
  873. angr/procedures/definitions/win32/msimg32.json +24 -0
  874. angr/procedures/definitions/win32/mspatcha.json +63 -0
  875. angr/procedures/definitions/win32/mspatchc.json +42 -0
  876. angr/procedures/definitions/win32/msports.json +36 -0
  877. angr/procedures/definitions/win32/msrating.json +72 -0
  878. angr/procedures/definitions/win32/mssign32.json +45 -0
  879. angr/procedures/definitions/win32/mstask.json +21 -0
  880. angr/procedures/definitions/win32/msvfw32.json +144 -0
  881. angr/procedures/definitions/win32/mswsock.json +63 -0
  882. angr/procedures/definitions/win32/mtxdm.json +18 -0
  883. angr/procedures/definitions/win32/ncrypt.json +132 -0
  884. angr/procedures/definitions/win32/ndfapi.json +63 -0
  885. angr/procedures/definitions/win32/netapi32.json +633 -0
  886. angr/procedures/definitions/win32/netsh.json +39 -0
  887. angr/procedures/definitions/win32/netshell.json +21 -0
  888. angr/procedures/definitions/win32/newdev.json +48 -0
  889. angr/procedures/definitions/win32/ninput.json +105 -0
  890. angr/procedures/definitions/win32/normaliz.json +21 -0
  891. angr/procedures/definitions/win32/ntdll.json +234 -0
  892. angr/procedures/definitions/win32/ntdllk.json +18 -0
  893. angr/procedures/definitions/win32/ntdsapi.json +258 -0
  894. angr/procedures/definitions/win32/ntlanman.json +45 -0
  895. angr/procedures/definitions/win32/odbc32.json +477 -0
  896. angr/procedures/definitions/win32/odbcbcp.json +96 -0
  897. angr/procedures/definitions/win32/ole32.json +966 -0
  898. angr/procedures/definitions/win32/oleacc.json +66 -0
  899. angr/procedures/definitions/win32/oleaut32.json +1230 -0
  900. angr/procedures/definitions/win32/oledlg.json +84 -0
  901. angr/procedures/definitions/win32/ondemandconnroutehelper.json +30 -0
  902. angr/procedures/definitions/win32/opengl32.json +1080 -0
  903. angr/procedures/definitions/win32/opmxbox.json +24 -0
  904. angr/procedures/definitions/win32/p2p.json +339 -0
  905. angr/procedures/definitions/win32/p2pgraph.json +126 -0
  906. angr/procedures/definitions/win32/pdh.json +309 -0
  907. angr/procedures/definitions/win32/peerdist.json +99 -0
  908. angr/procedures/definitions/win32/powrprof.json +267 -0
  909. angr/procedures/definitions/win32/prntvpt.json +48 -0
  910. angr/procedures/definitions/win32/projectedfslib.json +72 -0
  911. angr/procedures/definitions/win32/propsys.json +669 -0
  912. angr/procedures/definitions/win32/psapi.json +96 -0
  913. angr/procedures/definitions/win32/quartz.json +21 -0
  914. angr/procedures/definitions/win32/query.json +27 -0
  915. angr/procedures/definitions/win32/qwave.json +48 -0
  916. angr/procedures/definitions/win32/rasapi32.json +267 -0
  917. angr/procedures/definitions/win32/rasdlg.json +33 -0
  918. angr/procedures/definitions/win32/resutils.json +375 -0
  919. angr/procedures/definitions/win32/rpcns4.json +198 -0
  920. angr/procedures/definitions/win32/rpcproxy.json +27 -0
  921. angr/procedures/definitions/win32/rpcrt4.json +1356 -0
  922. angr/procedures/definitions/win32/rstrtmgr.json +48 -0
  923. angr/procedures/definitions/win32/rtm.json +243 -0
  924. angr/procedures/definitions/win32/rtutils.json +138 -0
  925. angr/procedures/definitions/win32/rtworkq.json +114 -0
  926. angr/procedures/definitions/win32/sas.json +18 -0
  927. angr/procedures/definitions/win32/scarddlg.json +30 -0
  928. angr/procedures/definitions/win32/schannel.json +42 -0
  929. angr/procedures/definitions/win32/sechost.json +21 -0
  930. angr/procedures/definitions/win32/secur32.json +282 -0
  931. angr/procedures/definitions/win32/sensapi.json +24 -0
  932. angr/procedures/definitions/win32/sensorsutilsv2.json +135 -0
  933. angr/procedures/definitions/win32/setupapi.json +1017 -0
  934. angr/procedures/definitions/win32/sfc.json +33 -0
  935. angr/procedures/definitions/win32/shdocvw.json +24 -0
  936. angr/procedures/definitions/win32/shell32.json +747 -0
  937. angr/procedures/definitions/win32/shlwapi.json +1095 -0
  938. angr/procedures/definitions/win32/slc.json +111 -0
  939. angr/procedures/definitions/win32/slcext.json +27 -0
  940. angr/procedures/definitions/win32/slwga.json +18 -0
  941. angr/procedures/definitions/win32/snmpapi.json +93 -0
  942. angr/procedures/definitions/win32/spoolss.json +93 -0
  943. angr/procedures/definitions/win32/srclient.json +18 -0
  944. angr/procedures/definitions/win32/srpapi.json +48 -0
  945. angr/procedures/definitions/win32/sspicli.json +36 -0
  946. angr/procedures/definitions/win32/sti.json +18 -0
  947. angr/procedures/definitions/win32/t2embed.json +57 -0
  948. angr/procedures/definitions/win32/tapi32.json +762 -0
  949. angr/procedures/definitions/win32/tbs.json +57 -0
  950. angr/procedures/definitions/win32/tdh.json +96 -0
  951. angr/procedures/definitions/win32/tokenbinding.json +45 -0
  952. angr/procedures/definitions/win32/traffic.json +75 -0
  953. angr/procedures/definitions/win32/txfw32.json +42 -0
  954. angr/procedures/definitions/win32/ualapi.json +27 -0
  955. angr/procedures/definitions/win32/uiautomationcore.json +309 -0
  956. angr/procedures/definitions/win32/urlmon.json +246 -0
  957. angr/procedures/definitions/win32/user32.json +2298 -0
  958. angr/procedures/definitions/win32/userenv.json +147 -0
  959. angr/procedures/definitions/win32/usp10.json +135 -0
  960. angr/procedures/definitions/win32/uxtheme.json +246 -0
  961. angr/procedures/definitions/win32/verifier.json +18 -0
  962. angr/procedures/definitions/win32/version.json +57 -0
  963. angr/procedures/definitions/win32/vertdll.json +36 -0
  964. angr/procedures/definitions/win32/virtdisk.json +102 -0
  965. angr/procedures/definitions/win32/vmdevicehost.json +54 -0
  966. angr/procedures/definitions/win32/vmsavedstatedumpprovider.json +144 -0
  967. angr/procedures/definitions/win32/vssapi.json +18 -0
  968. angr/procedures/definitions/win32/wcmapi.json +30 -0
  969. angr/procedures/definitions/win32/wdsbp.json +36 -0
  970. angr/procedures/definitions/win32/wdsclientapi.json +126 -0
  971. angr/procedures/definitions/win32/wdsmc.json +33 -0
  972. angr/procedures/definitions/win32/wdspxe.json +108 -0
  973. angr/procedures/definitions/win32/wdstptc.json +54 -0
  974. angr/procedures/definitions/win32/webauthn.json +54 -0
  975. angr/procedures/definitions/win32/webservices.json +594 -0
  976. angr/procedures/definitions/win32/websocket.json +54 -0
  977. angr/procedures/definitions/win32/wecapi.json +60 -0
  978. angr/procedures/definitions/win32/wer.json +78 -0
  979. angr/procedures/definitions/win32/wevtapi.json +120 -0
  980. angr/procedures/definitions/win32/winbio.json +177 -0
  981. angr/procedures/definitions/win32/windows_ai_machinelearning.json +18 -0
  982. angr/procedures/definitions/win32/windows_media_mediacontrol.json +39 -0
  983. angr/procedures/definitions/win32/windows_networking.json +18 -0
  984. angr/procedures/definitions/win32/windows_ui_xaml.json +21 -0
  985. angr/procedures/definitions/win32/windowscodecs.json +42 -0
  986. angr/procedures/definitions/win32/winfax.json +183 -0
  987. angr/procedures/definitions/win32/winhttp.json +183 -0
  988. angr/procedures/definitions/win32/winhvemulation.json +27 -0
  989. angr/procedures/definitions/win32/winhvplatform.json +213 -0
  990. angr/procedures/definitions/win32/wininet.json +903 -0
  991. angr/procedures/definitions/win32/winml.json +18 -0
  992. angr/procedures/definitions/win32/winmm.json +543 -0
  993. angr/procedures/definitions/win32/winscard.json +225 -0
  994. angr/procedures/definitions/win32/winspool_drv.json +531 -0
  995. angr/procedures/definitions/win32/wintrust.json +195 -0
  996. angr/procedures/definitions/win32/winusb.json +117 -0
  997. angr/procedures/definitions/win32/wlanapi.json +195 -0
  998. angr/procedures/definitions/win32/wlanui.json +18 -0
  999. angr/procedures/definitions/win32/wldap32.json +744 -0
  1000. angr/procedures/definitions/win32/wldp.json +42 -0
  1001. angr/procedures/definitions/win32/wmvcore.json +48 -0
  1002. angr/procedures/definitions/win32/wnvapi.json +21 -0
  1003. angr/procedures/definitions/win32/wofutil.json +48 -0
  1004. angr/procedures/definitions/win32/ws2_32.json +495 -0
  1005. angr/procedures/definitions/win32/wscapi.json +33 -0
  1006. angr/procedures/definitions/win32/wsclient.json +24 -0
  1007. angr/procedures/definitions/win32/wsdapi.json +111 -0
  1008. angr/procedures/definitions/win32/wsmsvc.json +114 -0
  1009. angr/procedures/definitions/win32/wsnmp32.json +162 -0
  1010. angr/procedures/definitions/win32/wtsapi32.json +204 -0
  1011. angr/procedures/definitions/win32/xaudio2_8.json +27 -0
  1012. angr/procedures/definitions/win32/xinput1_4.json +36 -0
  1013. angr/procedures/definitions/win32/xmllite.json +33 -0
  1014. angr/procedures/definitions/win32/xolehlp.json +27 -0
  1015. angr/procedures/definitions/win32/xpsprint.json +21 -0
  1016. angr/procedures/glibc/__ctype_b_loc.py +21 -0
  1017. angr/procedures/glibc/__ctype_tolower_loc.py +21 -0
  1018. angr/procedures/glibc/__ctype_toupper_loc.py +21 -0
  1019. angr/procedures/glibc/__errno_location.py +7 -0
  1020. angr/procedures/glibc/__init__.py +3 -0
  1021. angr/procedures/glibc/__libc_init.py +37 -0
  1022. angr/procedures/glibc/__libc_start_main.py +301 -0
  1023. angr/procedures/glibc/dynamic_loading.py +20 -0
  1024. angr/procedures/glibc/scanf.py +19 -0
  1025. angr/procedures/glibc/sscanf.py +10 -0
  1026. angr/procedures/gnulib/__init__.py +3 -0
  1027. angr/procedures/gnulib/xalloc_die.py +14 -0
  1028. angr/procedures/gnulib/xstrtol_fatal.py +14 -0
  1029. angr/procedures/java/__init__.py +42 -0
  1030. angr/procedures/java/unconstrained.py +65 -0
  1031. angr/procedures/java_io/__init__.py +0 -0
  1032. angr/procedures/java_io/read.py +12 -0
  1033. angr/procedures/java_io/write.py +17 -0
  1034. angr/procedures/java_jni/__init__.py +482 -0
  1035. angr/procedures/java_jni/array_operations.py +312 -0
  1036. angr/procedures/java_jni/class_and_interface_operations.py +31 -0
  1037. angr/procedures/java_jni/field_access.py +173 -0
  1038. angr/procedures/java_jni/global_and_local_refs.py +57 -0
  1039. angr/procedures/java_jni/method_calls.py +365 -0
  1040. angr/procedures/java_jni/not_implemented.py +26 -0
  1041. angr/procedures/java_jni/object_operations.py +94 -0
  1042. angr/procedures/java_jni/string_operations.py +87 -0
  1043. angr/procedures/java_jni/version_information.py +12 -0
  1044. angr/procedures/java_lang/__init__.py +0 -0
  1045. angr/procedures/java_lang/character.py +30 -0
  1046. angr/procedures/java_lang/double.py +24 -0
  1047. angr/procedures/java_lang/exit.py +13 -0
  1048. angr/procedures/java_lang/getsimplename.py +18 -0
  1049. angr/procedures/java_lang/integer.py +43 -0
  1050. angr/procedures/java_lang/load_library.py +9 -0
  1051. angr/procedures/java_lang/math.py +15 -0
  1052. angr/procedures/java_lang/string.py +78 -0
  1053. angr/procedures/java_lang/stringbuilder.py +44 -0
  1054. angr/procedures/java_lang/system.py +18 -0
  1055. angr/procedures/java_util/__init__.py +0 -0
  1056. angr/procedures/java_util/collection.py +35 -0
  1057. angr/procedures/java_util/iterator.py +46 -0
  1058. angr/procedures/java_util/list.py +99 -0
  1059. angr/procedures/java_util/map.py +131 -0
  1060. angr/procedures/java_util/random.py +14 -0
  1061. angr/procedures/java_util/scanner_nextline.py +23 -0
  1062. angr/procedures/libc/__init__.py +3 -0
  1063. angr/procedures/libc/abort.py +9 -0
  1064. angr/procedures/libc/access.py +13 -0
  1065. angr/procedures/libc/atoi.py +14 -0
  1066. angr/procedures/libc/atol.py +13 -0
  1067. angr/procedures/libc/calloc.py +8 -0
  1068. angr/procedures/libc/closelog.py +10 -0
  1069. angr/procedures/libc/err.py +14 -0
  1070. angr/procedures/libc/error.py +54 -0
  1071. angr/procedures/libc/exit.py +11 -0
  1072. angr/procedures/libc/fclose.py +19 -0
  1073. angr/procedures/libc/feof.py +21 -0
  1074. angr/procedures/libc/fflush.py +16 -0
  1075. angr/procedures/libc/fgetc.py +27 -0
  1076. angr/procedures/libc/fgets.py +69 -0
  1077. angr/procedures/libc/fopen.py +63 -0
  1078. angr/procedures/libc/fprintf.py +25 -0
  1079. angr/procedures/libc/fputc.py +23 -0
  1080. angr/procedures/libc/fputs.py +24 -0
  1081. angr/procedures/libc/fread.py +24 -0
  1082. angr/procedures/libc/free.py +9 -0
  1083. angr/procedures/libc/fscanf.py +20 -0
  1084. angr/procedures/libc/fseek.py +34 -0
  1085. angr/procedures/libc/ftell.py +22 -0
  1086. angr/procedures/libc/fwrite.py +19 -0
  1087. angr/procedures/libc/getchar.py +13 -0
  1088. angr/procedures/libc/getdelim.py +99 -0
  1089. angr/procedures/libc/getegid.py +8 -0
  1090. angr/procedures/libc/geteuid.py +8 -0
  1091. angr/procedures/libc/getgid.py +8 -0
  1092. angr/procedures/libc/gets.py +68 -0
  1093. angr/procedures/libc/getuid.py +8 -0
  1094. angr/procedures/libc/malloc.py +12 -0
  1095. angr/procedures/libc/memcmp.py +69 -0
  1096. angr/procedures/libc/memcpy.py +45 -0
  1097. angr/procedures/libc/memset.py +72 -0
  1098. angr/procedures/libc/openlog.py +10 -0
  1099. angr/procedures/libc/perror.py +13 -0
  1100. angr/procedures/libc/printf.py +34 -0
  1101. angr/procedures/libc/putchar.py +13 -0
  1102. angr/procedures/libc/puts.py +19 -0
  1103. angr/procedures/libc/rand.py +8 -0
  1104. angr/procedures/libc/realloc.py +8 -0
  1105. angr/procedures/libc/rewind.py +12 -0
  1106. angr/procedures/libc/scanf.py +20 -0
  1107. angr/procedures/libc/setbuf.py +9 -0
  1108. angr/procedures/libc/setvbuf.py +7 -0
  1109. angr/procedures/libc/snprintf.py +36 -0
  1110. angr/procedures/libc/sprintf.py +25 -0
  1111. angr/procedures/libc/srand.py +7 -0
  1112. angr/procedures/libc/sscanf.py +13 -0
  1113. angr/procedures/libc/stpcpy.py +18 -0
  1114. angr/procedures/libc/strcat.py +14 -0
  1115. angr/procedures/libc/strchr.py +48 -0
  1116. angr/procedures/libc/strcmp.py +31 -0
  1117. angr/procedures/libc/strcpy.py +13 -0
  1118. angr/procedures/libc/strlen.py +114 -0
  1119. angr/procedures/libc/strncat.py +19 -0
  1120. angr/procedures/libc/strncmp.py +183 -0
  1121. angr/procedures/libc/strncpy.py +22 -0
  1122. angr/procedures/libc/strnlen.py +13 -0
  1123. angr/procedures/libc/strstr.py +101 -0
  1124. angr/procedures/libc/strtol.py +261 -0
  1125. angr/procedures/libc/strtoul.py +9 -0
  1126. angr/procedures/libc/system.py +13 -0
  1127. angr/procedures/libc/time.py +9 -0
  1128. angr/procedures/libc/tmpnam.py +20 -0
  1129. angr/procedures/libc/tolower.py +10 -0
  1130. angr/procedures/libc/toupper.py +10 -0
  1131. angr/procedures/libc/ungetc.py +20 -0
  1132. angr/procedures/libc/vsnprintf.py +17 -0
  1133. angr/procedures/libc/wchar.py +16 -0
  1134. angr/procedures/libstdcpp/__init__.py +0 -0
  1135. angr/procedures/libstdcpp/_unwind_resume.py +11 -0
  1136. angr/procedures/libstdcpp/std____throw_bad_alloc.py +13 -0
  1137. angr/procedures/libstdcpp/std____throw_bad_cast.py +13 -0
  1138. angr/procedures/libstdcpp/std____throw_length_error.py +13 -0
  1139. angr/procedures/libstdcpp/std____throw_logic_error.py +13 -0
  1140. angr/procedures/libstdcpp/std__terminate.py +13 -0
  1141. angr/procedures/linux_kernel/__init__.py +3 -0
  1142. angr/procedures/linux_kernel/access.py +18 -0
  1143. angr/procedures/linux_kernel/arch_prctl.py +34 -0
  1144. angr/procedures/linux_kernel/arm_user_helpers.py +59 -0
  1145. angr/procedures/linux_kernel/brk.py +18 -0
  1146. angr/procedures/linux_kernel/cwd.py +28 -0
  1147. angr/procedures/linux_kernel/fstat.py +138 -0
  1148. angr/procedures/linux_kernel/fstat64.py +170 -0
  1149. angr/procedures/linux_kernel/futex.py +17 -0
  1150. angr/procedures/linux_kernel/getegid.py +17 -0
  1151. angr/procedures/linux_kernel/geteuid.py +17 -0
  1152. angr/procedures/linux_kernel/getgid.py +17 -0
  1153. angr/procedures/linux_kernel/getpid.py +14 -0
  1154. angr/procedures/linux_kernel/getrlimit.py +24 -0
  1155. angr/procedures/linux_kernel/gettid.py +9 -0
  1156. angr/procedures/linux_kernel/getuid.py +17 -0
  1157. angr/procedures/linux_kernel/iovec.py +47 -0
  1158. angr/procedures/linux_kernel/lseek.py +42 -0
  1159. angr/procedures/linux_kernel/mmap.py +16 -0
  1160. angr/procedures/linux_kernel/mprotect.py +42 -0
  1161. angr/procedures/linux_kernel/munmap.py +8 -0
  1162. angr/procedures/linux_kernel/openat.py +26 -0
  1163. angr/procedures/linux_kernel/set_tid_address.py +8 -0
  1164. angr/procedures/linux_kernel/sigaction.py +19 -0
  1165. angr/procedures/linux_kernel/sigprocmask.py +23 -0
  1166. angr/procedures/linux_kernel/stat.py +23 -0
  1167. angr/procedures/linux_kernel/sysinfo.py +59 -0
  1168. angr/procedures/linux_kernel/tgkill.py +10 -0
  1169. angr/procedures/linux_kernel/time.py +34 -0
  1170. angr/procedures/linux_kernel/uid.py +30 -0
  1171. angr/procedures/linux_kernel/uname.py +29 -0
  1172. angr/procedures/linux_kernel/unlink.py +22 -0
  1173. angr/procedures/linux_kernel/vsyscall.py +16 -0
  1174. angr/procedures/linux_loader/__init__.py +3 -0
  1175. angr/procedures/linux_loader/_dl_initial_error_catch_tsd.py +7 -0
  1176. angr/procedures/linux_loader/_dl_rtld_lock.py +15 -0
  1177. angr/procedures/linux_loader/sim_loader.py +54 -0
  1178. angr/procedures/linux_loader/tls.py +40 -0
  1179. angr/procedures/msvcr/__getmainargs.py +16 -0
  1180. angr/procedures/msvcr/__init__.py +4 -0
  1181. angr/procedures/msvcr/_initterm.py +38 -0
  1182. angr/procedures/msvcr/fmode.py +31 -0
  1183. angr/procedures/ntdll/__init__.py +0 -0
  1184. angr/procedures/ntdll/exceptions.py +60 -0
  1185. angr/procedures/posix/__init__.py +3 -0
  1186. angr/procedures/posix/accept.py +29 -0
  1187. angr/procedures/posix/bind.py +13 -0
  1188. angr/procedures/posix/bzero.py +9 -0
  1189. angr/procedures/posix/chroot.py +27 -0
  1190. angr/procedures/posix/close.py +9 -0
  1191. angr/procedures/posix/closedir.py +7 -0
  1192. angr/procedures/posix/dup.py +56 -0
  1193. angr/procedures/posix/fcntl.py +10 -0
  1194. angr/procedures/posix/fdopen.py +76 -0
  1195. angr/procedures/posix/fileno.py +18 -0
  1196. angr/procedures/posix/fork.py +13 -0
  1197. angr/procedures/posix/getenv.py +35 -0
  1198. angr/procedures/posix/gethostbyname.py +43 -0
  1199. angr/procedures/posix/getpass.py +19 -0
  1200. angr/procedures/posix/getsockopt.py +11 -0
  1201. angr/procedures/posix/htonl.py +11 -0
  1202. angr/procedures/posix/htons.py +11 -0
  1203. angr/procedures/posix/inet_ntoa.py +59 -0
  1204. angr/procedures/posix/listen.py +13 -0
  1205. angr/procedures/posix/mmap.py +144 -0
  1206. angr/procedures/posix/open.py +18 -0
  1207. angr/procedures/posix/opendir.py +10 -0
  1208. angr/procedures/posix/poll.py +55 -0
  1209. angr/procedures/posix/pread64.py +46 -0
  1210. angr/procedures/posix/pthread.py +87 -0
  1211. angr/procedures/posix/pwrite64.py +46 -0
  1212. angr/procedures/posix/read.py +13 -0
  1213. angr/procedures/posix/readdir.py +62 -0
  1214. angr/procedures/posix/recv.py +13 -0
  1215. angr/procedures/posix/recvfrom.py +13 -0
  1216. angr/procedures/posix/select.py +48 -0
  1217. angr/procedures/posix/send.py +23 -0
  1218. angr/procedures/posix/setsockopt.py +9 -0
  1219. angr/procedures/posix/sigaction.py +23 -0
  1220. angr/procedures/posix/sim_time.py +48 -0
  1221. angr/procedures/posix/sleep.py +8 -0
  1222. angr/procedures/posix/socket.py +18 -0
  1223. angr/procedures/posix/strcasecmp.py +26 -0
  1224. angr/procedures/posix/strdup.py +18 -0
  1225. angr/procedures/posix/strtok_r.py +64 -0
  1226. angr/procedures/posix/syslog.py +15 -0
  1227. angr/procedures/posix/tz.py +9 -0
  1228. angr/procedures/posix/unlink.py +11 -0
  1229. angr/procedures/posix/usleep.py +8 -0
  1230. angr/procedures/posix/write.py +13 -0
  1231. angr/procedures/procedure_dict.py +50 -0
  1232. angr/procedures/stubs/CallReturn.py +13 -0
  1233. angr/procedures/stubs/NoReturnUnconstrained.py +13 -0
  1234. angr/procedures/stubs/Nop.py +7 -0
  1235. angr/procedures/stubs/PathTerminator.py +9 -0
  1236. angr/procedures/stubs/Redirect.py +18 -0
  1237. angr/procedures/stubs/ReturnChar.py +11 -0
  1238. angr/procedures/stubs/ReturnUnconstrained.py +24 -0
  1239. angr/procedures/stubs/UnresolvableCallTarget.py +9 -0
  1240. angr/procedures/stubs/UnresolvableJumpTarget.py +9 -0
  1241. angr/procedures/stubs/UserHook.py +18 -0
  1242. angr/procedures/stubs/__init__.py +3 -0
  1243. angr/procedures/stubs/b64_decode.py +15 -0
  1244. angr/procedures/stubs/caller.py +14 -0
  1245. angr/procedures/stubs/crazy_scanf.py +20 -0
  1246. angr/procedures/stubs/format_parser.py +669 -0
  1247. angr/procedures/stubs/syscall_stub.py +24 -0
  1248. angr/procedures/testing/__init__.py +3 -0
  1249. angr/procedures/testing/manyargs.py +9 -0
  1250. angr/procedures/testing/retreg.py +8 -0
  1251. angr/procedures/tracer/__init__.py +4 -0
  1252. angr/procedures/tracer/random.py +9 -0
  1253. angr/procedures/tracer/receive.py +23 -0
  1254. angr/procedures/tracer/transmit.py +26 -0
  1255. angr/procedures/uclibc/__init__.py +3 -0
  1256. angr/procedures/uclibc/__uClibc_main.py +10 -0
  1257. angr/procedures/win32/EncodePointer.py +7 -0
  1258. angr/procedures/win32/ExitProcess.py +9 -0
  1259. angr/procedures/win32/GetCommandLine.py +12 -0
  1260. angr/procedures/win32/GetCurrentProcessId.py +7 -0
  1261. angr/procedures/win32/GetCurrentThreadId.py +7 -0
  1262. angr/procedures/win32/GetLastInputInfo.py +40 -0
  1263. angr/procedures/win32/GetModuleHandle.py +29 -0
  1264. angr/procedures/win32/GetProcessAffinityMask.py +37 -0
  1265. angr/procedures/win32/InterlockedExchange.py +15 -0
  1266. angr/procedures/win32/IsProcessorFeaturePresent.py +7 -0
  1267. angr/procedures/win32/VirtualAlloc.py +114 -0
  1268. angr/procedures/win32/VirtualProtect.py +60 -0
  1269. angr/procedures/win32/__init__.py +3 -0
  1270. angr/procedures/win32/critical_section.py +12 -0
  1271. angr/procedures/win32/dynamic_loading.py +104 -0
  1272. angr/procedures/win32/file_handles.py +47 -0
  1273. angr/procedures/win32/gethostbyname.py +12 -0
  1274. angr/procedures/win32/heap.py +45 -0
  1275. angr/procedures/win32/is_bad_ptr.py +26 -0
  1276. angr/procedures/win32/local_storage.py +88 -0
  1277. angr/procedures/win32/mutex.py +11 -0
  1278. angr/procedures/win32/sim_time.py +135 -0
  1279. angr/procedures/win32/system_paths.py +35 -0
  1280. angr/procedures/win32_kernel/ExAllocatePool.py +13 -0
  1281. angr/procedures/win32_kernel/ExFreePoolWithTag.py +8 -0
  1282. angr/procedures/win32_kernel/__fastfail.py +15 -0
  1283. angr/procedures/win32_kernel/__init__.py +3 -0
  1284. angr/procedures/win_user32/__init__.py +0 -0
  1285. angr/procedures/win_user32/chars.py +15 -0
  1286. angr/procedures/win_user32/keyboard.py +14 -0
  1287. angr/procedures/win_user32/messagebox.py +49 -0
  1288. angr/project.py +860 -0
  1289. angr/protos/__init__.py +19 -0
  1290. angr/protos/cfg_pb2.py +42 -0
  1291. angr/protos/function_pb2.py +38 -0
  1292. angr/protos/primitives_pb2.py +59 -0
  1293. angr/protos/variables_pb2.py +55 -0
  1294. angr/protos/xrefs_pb2.py +36 -0
  1295. angr/py.typed +1 -0
  1296. angr/rustylib.cpython-311-darwin.so +0 -0
  1297. angr/serializable.py +66 -0
  1298. angr/sim_manager.py +971 -0
  1299. angr/sim_options.py +436 -0
  1300. angr/sim_procedure.py +626 -0
  1301. angr/sim_state.py +926 -0
  1302. angr/sim_state_options.py +403 -0
  1303. angr/sim_type.py +4026 -0
  1304. angr/sim_variable.py +470 -0
  1305. angr/simos/__init__.py +47 -0
  1306. angr/simos/cgc.py +153 -0
  1307. angr/simos/javavm.py +458 -0
  1308. angr/simos/linux.py +509 -0
  1309. angr/simos/simos.py +444 -0
  1310. angr/simos/snimmuc_nxp.py +149 -0
  1311. angr/simos/userland.py +163 -0
  1312. angr/simos/windows.py +615 -0
  1313. angr/simos/xbox.py +32 -0
  1314. angr/slicer.py +352 -0
  1315. angr/state_hierarchy.py +262 -0
  1316. angr/state_plugins/__init__.py +84 -0
  1317. angr/state_plugins/callstack.py +478 -0
  1318. angr/state_plugins/cgc.py +155 -0
  1319. angr/state_plugins/debug_variables.py +192 -0
  1320. angr/state_plugins/filesystem.py +463 -0
  1321. angr/state_plugins/gdb.py +148 -0
  1322. angr/state_plugins/globals.py +65 -0
  1323. angr/state_plugins/heap/__init__.py +15 -0
  1324. angr/state_plugins/heap/heap_base.py +128 -0
  1325. angr/state_plugins/heap/heap_brk.py +136 -0
  1326. angr/state_plugins/heap/heap_freelist.py +213 -0
  1327. angr/state_plugins/heap/heap_libc.py +46 -0
  1328. angr/state_plugins/heap/heap_ptmalloc.py +620 -0
  1329. angr/state_plugins/heap/utils.py +22 -0
  1330. angr/state_plugins/history.py +564 -0
  1331. angr/state_plugins/inspect.py +375 -0
  1332. angr/state_plugins/javavm_classloader.py +134 -0
  1333. angr/state_plugins/jni_references.py +95 -0
  1334. angr/state_plugins/libc.py +1263 -0
  1335. angr/state_plugins/light_registers.py +168 -0
  1336. angr/state_plugins/log.py +84 -0
  1337. angr/state_plugins/loop_data.py +92 -0
  1338. angr/state_plugins/plugin.py +176 -0
  1339. angr/state_plugins/posix.py +703 -0
  1340. angr/state_plugins/preconstrainer.py +196 -0
  1341. angr/state_plugins/scratch.py +173 -0
  1342. angr/state_plugins/sim_action.py +326 -0
  1343. angr/state_plugins/sim_action_object.py +271 -0
  1344. angr/state_plugins/sim_event.py +59 -0
  1345. angr/state_plugins/solver.py +1128 -0
  1346. angr/state_plugins/symbolizer.py +291 -0
  1347. angr/state_plugins/trace_additions.py +738 -0
  1348. angr/state_plugins/uc_manager.py +94 -0
  1349. angr/state_plugins/unicorn_engine.py +1920 -0
  1350. angr/state_plugins/view.py +340 -0
  1351. angr/storage/__init__.py +15 -0
  1352. angr/storage/file.py +1210 -0
  1353. angr/storage/memory_mixins/__init__.py +317 -0
  1354. angr/storage/memory_mixins/actions_mixin.py +72 -0
  1355. angr/storage/memory_mixins/address_concretization_mixin.py +384 -0
  1356. angr/storage/memory_mixins/bvv_conversion_mixin.py +73 -0
  1357. angr/storage/memory_mixins/clouseau_mixin.py +137 -0
  1358. angr/storage/memory_mixins/conditional_store_mixin.py +25 -0
  1359. angr/storage/memory_mixins/convenient_mappings_mixin.py +256 -0
  1360. angr/storage/memory_mixins/default_filler_mixin.py +144 -0
  1361. angr/storage/memory_mixins/dirty_addrs_mixin.py +11 -0
  1362. angr/storage/memory_mixins/hex_dumper_mixin.py +82 -0
  1363. angr/storage/memory_mixins/javavm_memory_mixin.py +392 -0
  1364. angr/storage/memory_mixins/keyvalue_memory_mixin.py +43 -0
  1365. angr/storage/memory_mixins/label_merger_mixin.py +31 -0
  1366. angr/storage/memory_mixins/memory_mixin.py +175 -0
  1367. angr/storage/memory_mixins/multi_value_merger_mixin.py +79 -0
  1368. angr/storage/memory_mixins/name_resolution_mixin.py +67 -0
  1369. angr/storage/memory_mixins/paged_memory/__init__.py +0 -0
  1370. angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +266 -0
  1371. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +743 -0
  1372. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +65 -0
  1373. angr/storage/memory_mixins/paged_memory/pages/__init__.py +26 -0
  1374. angr/storage/memory_mixins/paged_memory/pages/base.py +31 -0
  1375. angr/storage/memory_mixins/paged_memory/pages/cooperation.py +341 -0
  1376. angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py +92 -0
  1377. angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py +55 -0
  1378. angr/storage/memory_mixins/paged_memory/pages/list_page.py +338 -0
  1379. angr/storage/memory_mixins/paged_memory/pages/multi_values.py +324 -0
  1380. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +419 -0
  1381. angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py +36 -0
  1382. angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py +52 -0
  1383. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +529 -0
  1384. angr/storage/memory_mixins/paged_memory/privileged_mixin.py +36 -0
  1385. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +74 -0
  1386. angr/storage/memory_mixins/regioned_memory/__init__.py +17 -0
  1387. angr/storage/memory_mixins/regioned_memory/abstract_address_descriptor.py +36 -0
  1388. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +31 -0
  1389. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +9 -0
  1390. angr/storage/memory_mixins/regioned_memory/region_data.py +246 -0
  1391. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +241 -0
  1392. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +119 -0
  1393. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +442 -0
  1394. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +69 -0
  1395. angr/storage/memory_mixins/simple_interface_mixin.py +71 -0
  1396. angr/storage/memory_mixins/simplification_mixin.py +15 -0
  1397. angr/storage/memory_mixins/size_resolution_mixin.py +143 -0
  1398. angr/storage/memory_mixins/slotted_memory.py +140 -0
  1399. angr/storage/memory_mixins/smart_find_mixin.py +161 -0
  1400. angr/storage/memory_mixins/symbolic_merger_mixin.py +16 -0
  1401. angr/storage/memory_mixins/top_merger_mixin.py +25 -0
  1402. angr/storage/memory_mixins/underconstrained_mixin.py +67 -0
  1403. angr/storage/memory_mixins/unwrapper_mixin.py +26 -0
  1404. angr/storage/memory_object.py +195 -0
  1405. angr/tablespecs.py +91 -0
  1406. angr/unicornlib.dylib +0 -0
  1407. angr/utils/__init__.py +46 -0
  1408. angr/utils/ail.py +176 -0
  1409. angr/utils/algo.py +34 -0
  1410. angr/utils/balancer.py +776 -0
  1411. angr/utils/bits.py +46 -0
  1412. angr/utils/constants.py +9 -0
  1413. angr/utils/cowdict.py +63 -0
  1414. angr/utils/cpp.py +17 -0
  1415. angr/utils/doms.py +150 -0
  1416. angr/utils/dynamic_dictlist.py +89 -0
  1417. angr/utils/endness.py +18 -0
  1418. angr/utils/enums_conv.py +97 -0
  1419. angr/utils/env.py +12 -0
  1420. angr/utils/formatting.py +128 -0
  1421. angr/utils/funcid.py +244 -0
  1422. angr/utils/graph.py +981 -0
  1423. angr/utils/lazy_import.py +13 -0
  1424. angr/utils/library.py +236 -0
  1425. angr/utils/loader.py +55 -0
  1426. angr/utils/mp.py +66 -0
  1427. angr/utils/orderedset.py +74 -0
  1428. angr/utils/ssa/__init__.py +455 -0
  1429. angr/utils/ssa/tmp_uses_collector.py +23 -0
  1430. angr/utils/ssa/vvar_uses_collector.py +36 -0
  1431. angr/utils/strings.py +20 -0
  1432. angr/utils/tagged_interval_map.py +112 -0
  1433. angr/utils/timing.py +74 -0
  1434. angr/utils/types.py +193 -0
  1435. angr/utils/vex.py +11 -0
  1436. angr/vaults.py +367 -0
  1437. angr-9.2.192.dist-info/METADATA +112 -0
  1438. angr-9.2.192.dist-info/RECORD +1442 -0
  1439. angr-9.2.192.dist-info/WHEEL +6 -0
  1440. angr-9.2.192.dist-info/entry_points.txt +2 -0
  1441. angr-9.2.192.dist-info/licenses/LICENSE +27 -0
  1442. angr-9.2.192.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1297 @@
1
+ # pylint:disable=no-self-use,unused-argument
2
+ from __future__ import annotations
3
+ from typing import Any, Protocol, cast, TypeVar, Generic, TYPE_CHECKING
4
+ from collections.abc import Callable
5
+ from abc import abstractmethod
6
+ import re
7
+ import logging
8
+
9
+ import pyvex
10
+ import claripy
11
+ from pyvex.expr import IRExpr
12
+
13
+ import angr.ailment as ailment
14
+ from angr.misc.ux import once
15
+ from angr.engines.vex.claripy.irop import UnsupportedIROpError, SimOperationError, vexop_to_simop
16
+ from angr.code_location import CodeLocation
17
+ from angr.engines.engine import DataType_co, SimEngine, StateType
18
+ from angr.block import Block
19
+
20
+ if TYPE_CHECKING:
21
+ from angr.project import Project
22
+
23
+
24
+ class BlockProtocol(Protocol):
25
+ """
26
+ The minimum protocol that a block an engine can process should adhere to.
27
+ Requires just an addr attribute.
28
+ """
29
+
30
+ addr: int
31
+
32
+
33
+ BlockType = TypeVar("BlockType", bound=BlockProtocol)
34
+ ResultType = TypeVar("ResultType")
35
+ StmtDataType = TypeVar("StmtDataType")
36
+
37
+
38
+ class IRTop(pyvex.expr.IRExpr):
39
+ """
40
+ A dummy IRExpr used for intra-engine communication and code-reuse.
41
+ """
42
+
43
+ def __init__(self, ty: str):
44
+ super().__init__()
45
+ self.ty = ty
46
+
47
+ def result_type(self, tyenv):
48
+ return self.ty
49
+
50
+
51
+ class SimEngineLight(Generic[StateType, DataType_co, BlockType, ResultType], SimEngine[StateType, ResultType]):
52
+ """
53
+ A full-featured engine base class, suitable for static analysis
54
+ """
55
+
56
+ # local variables
57
+ block: BlockType
58
+ _call_stack: list[Any]
59
+ state: StateType
60
+
61
+ stmt_idx: int
62
+ ins_addr: int
63
+ tmps: dict[int, DataType_co]
64
+
65
+ def __init__(self, project: Project, logger=None):
66
+ self.l = logger or logging.getLogger(self.__module__ + "." + self.__class__.__name__)
67
+ super().__init__(project)
68
+
69
+ @abstractmethod
70
+ def process(self, state: StateType, *, block: BlockType | None = None, **kwargs) -> ResultType: ...
71
+
72
+ def lift(self, state: StateType) -> BlockType:
73
+ raise TypeError(f"{type(self)} requires `block` to be passed to `process`")
74
+
75
+ #
76
+ # Helper methods
77
+ #
78
+
79
+ def _codeloc(self, block_only=False, context=None):
80
+ return CodeLocation(
81
+ self.block.addr,
82
+ None if block_only else self.stmt_idx,
83
+ ins_addr=None if block_only else self.ins_addr,
84
+ context=context,
85
+ )
86
+
87
+ @abstractmethod
88
+ def _top(self, bits: int) -> DataType_co: ...
89
+
90
+ @abstractmethod
91
+ def _is_top(self, expr: Any) -> bool: ...
92
+
93
+ @staticmethod
94
+ def sp_offset(bits: int, offset: int) -> claripy.ast.BV:
95
+ base = claripy.BVS("SpOffset", bits, explicit_name=True)
96
+ if offset:
97
+ base += offset
98
+ return base
99
+
100
+ @staticmethod
101
+ def extract_offset_to_sp(spoffset_expr: claripy.ast.Base) -> int | None:
102
+ """
103
+ Extract the offset to the original stack pointer.
104
+
105
+ :param spoffset_expr: The claripy AST to parse.
106
+ :return: The offset to the original stack pointer, or None if `spoffset_expr` is not a supported
107
+ type of SpOffset expression.
108
+ """
109
+
110
+ if "SpOffset" in spoffset_expr.variables:
111
+ # Local variable
112
+ if spoffset_expr.op == "BVS":
113
+ return 0
114
+ if spoffset_expr.op == "__add__":
115
+ if len(spoffset_expr.args) == 1:
116
+ # Unexpected but fine
117
+ return 0
118
+ if isinstance(spoffset_expr.args[1], claripy.ast.Base) and spoffset_expr.args[1].op == "BVV":
119
+ return cast(int, spoffset_expr.args[1].args[0])
120
+ elif spoffset_expr.op == "__sub__":
121
+ if len(spoffset_expr.args) == 1:
122
+ # Unexpected but fine
123
+ return 0
124
+ if isinstance(spoffset_expr.args[1], claripy.ast.Base) and spoffset_expr.args[1].op == "BVV":
125
+ return -cast(int, spoffset_expr.args[1].args[0]) & (
126
+ (1 << cast(claripy.ast.BV, spoffset_expr).size()) - 1
127
+ )
128
+ return None
129
+
130
+
131
+ T = TypeVar("T")
132
+
133
+
134
+ def longest_prefix_lookup(haystack: str, mapping: dict[str, T]) -> T | None:
135
+ for l in reversed(range(len(haystack))):
136
+ handler = mapping.get(haystack[:l], None)
137
+ if handler is not None:
138
+ return handler
139
+ return None
140
+
141
+
142
+ # noinspection PyPep8Naming
143
+ class SimEngineLightVEX(
144
+ Generic[StateType, DataType_co, ResultType, StmtDataType], SimEngineLight[StateType, DataType_co, Block, ResultType]
145
+ ):
146
+ """
147
+ A mixin for doing static analysis on VEX
148
+ """
149
+
150
+ tyenv: pyvex.IRTypeEnv
151
+
152
+ @staticmethod
153
+ def unop_handler(f: Callable[[T, pyvex.expr.Unop], DataType_co]) -> Callable[[T, pyvex.expr.Unop], DataType_co]:
154
+ f.unop_handler = True
155
+ return f
156
+
157
+ @staticmethod
158
+ def binop_handler(f: Callable[[T, pyvex.expr.Binop], DataType_co]) -> Callable[[T, pyvex.expr.Binop], DataType_co]:
159
+ f.binop_handler = True
160
+ return f
161
+
162
+ @staticmethod
163
+ def binopv_handler(
164
+ f: Callable[[T, int, int, pyvex.expr.Binop], DataType_co],
165
+ ) -> Callable[[T, int, int, pyvex.expr.Binop], DataType_co]:
166
+ f.binopv_handler = True
167
+ return f
168
+
169
+ @staticmethod
170
+ def triop_handler(f: Callable[[T, pyvex.expr.Triop], DataType_co]) -> Callable[[T, pyvex.expr.Triop], DataType_co]:
171
+ f.triop_handler = True
172
+ return f
173
+
174
+ @staticmethod
175
+ def qop_handler(f: Callable[[T, pyvex.expr.Qop], DataType_co]) -> Callable[[T, pyvex.expr.Qop], DataType_co]:
176
+ f.qop_handler = True
177
+ return f
178
+
179
+ @staticmethod
180
+ def ccall_handler(f: Callable[[T, pyvex.expr.CCall], DataType_co]) -> Callable[[T, pyvex.expr.CCall], DataType_co]:
181
+ f.ccall_handler = True
182
+ return f
183
+
184
+ @staticmethod
185
+ def dirty_handler(
186
+ f: Callable[[T, pyvex.stmt.Dirty], StmtDataType],
187
+ ) -> Callable[[T, pyvex.stmt.Dirty], StmtDataType]:
188
+ f.dirty_handler = True
189
+ return f
190
+
191
+ def __init__(self, *args, **kwargs):
192
+ super().__init__(*args, **kwargs)
193
+
194
+ def checked(h: T, attr: str) -> T:
195
+ if not getattr(h, attr, False):
196
+ raise TypeError(f"Handle {h} is not validated for {attr}")
197
+ return h
198
+
199
+ self._stmt_handlers: dict[str, Callable[[Any], StmtDataType]] = {
200
+ "Ist_WrTmp": self._handle_stmt_WrTmp,
201
+ "Ist_Put": self._handle_stmt_Put,
202
+ "Ist_PutI": self._handle_stmt_PutI,
203
+ "Ist_Store": self._handle_stmt_Store,
204
+ "Ist_StoreG": self._handle_stmt_StoreG,
205
+ "Ist_LoadG": self._handle_stmt_LoadG,
206
+ "Ist_CAS": self._handle_stmt_CAS,
207
+ "Ist_LLSC": self._handle_stmt_LLSC,
208
+ "Ist_MBE": self._handle_stmt_MBE,
209
+ "Ist_Exit": self._handle_stmt_Exit,
210
+ "Ist_NoOp": self._handle_stmt_NoOp,
211
+ "Ist_IMark": self._handle_stmt_IMark,
212
+ "Ist_AbiHint": self._handle_stmt_AbiHint,
213
+ "Ist_Dirty": self._handle_stmt_Dirty,
214
+ }
215
+ self._expr_handlers: dict[str, Callable[[Any], DataType_co]] = {
216
+ "IRTop": self._handle_expr_IRTop,
217
+ "VECRET": self._handle_expr_VECRET,
218
+ "GSPTR": self._handle_expr_GSPTR,
219
+ "RdTmp": self._handle_expr_RdTmp,
220
+ "Get": self._handle_expr_Get,
221
+ "GetI": self._handle_expr_GetI,
222
+ "Load": self._handle_expr_Load,
223
+ "ITE": self._handle_expr_ITE,
224
+ "Unop": self._handle_expr_Unop,
225
+ "Binop": self._handle_expr_Binop,
226
+ "Triop": self._handle_expr_Triop,
227
+ "Qop": self._handle_expr_Qop,
228
+ "CCall": self._handle_expr_CCall,
229
+ "Const": self._handle_expr_Const,
230
+ }
231
+ self._unop_handlers: dict[str, Callable[[pyvex.expr.Unop], DataType_co]] = {
232
+ name.split("_", 3)[-1]: checked(getattr(self, name), "unop_handler")
233
+ for name in dir(self)
234
+ if name.startswith("_handle_unop_")
235
+ }
236
+ self._binop_handlers: dict[str, Callable[[pyvex.expr.Binop], DataType_co]] = {
237
+ name.split("_", 3)[-1]: checked(getattr(self, name), "binop_handler")
238
+ for name in dir(self)
239
+ if name.startswith("_handle_binop_")
240
+ }
241
+ self._binopv_handlers: dict[str, Callable[[int, int, pyvex.expr.Binop], DataType_co]] = {
242
+ name.split("_", 3)[-1]: checked(getattr(self, name), "binopv_handler")
243
+ for name in dir(self)
244
+ if name.startswith("_handle_binopv_")
245
+ }
246
+ self._triop_handlers: dict[str, Callable[[pyvex.expr.Triop], DataType_co]] = {
247
+ name.split("_", 3)[-1]: checked(getattr(self, name), "triop_handler")
248
+ for name in dir(self)
249
+ if name.startswith("_handle_triop_")
250
+ }
251
+ self._qop_handlers: dict[str, Callable[[pyvex.expr.Qop], DataType_co]] = {
252
+ name.split("_", 3)[-1]: checked(getattr(self, name), "qop_handler")
253
+ for name in dir(self)
254
+ if name.startswith("_handle_qop_")
255
+ }
256
+ self._ccall_handlers: dict[str, Callable[[pyvex.expr.CCall], DataType_co]] = {
257
+ name.split("_", 3)[-1]: checked(getattr(self, name), "ccall_handler")
258
+ for name in dir(self)
259
+ if name.startswith("_handle_ccall_")
260
+ }
261
+ self._dirty_handlers: dict[str, Callable[[pyvex.stmt.Dirty], StmtDataType]] = {
262
+ name.split("_", 3)[-1]: checked(getattr(self, name), "dirty_handler")
263
+ for name in dir(self)
264
+ if name.startswith("_handle_dirty_")
265
+ }
266
+
267
+ def process(
268
+ self, state: StateType, *, block: Block | None = None, whitelist: set[int] | None = None, **kwargs
269
+ ) -> ResultType:
270
+ # initialize local variables
271
+ self.tmps = {}
272
+
273
+ if block is None:
274
+ block = self.lift(state)
275
+ self.block = block
276
+ self.state = state
277
+ self.arch = self.project.arch
278
+ self.tyenv = block.vex.tyenv
279
+ self.stmt_idx = -1
280
+ self.ins_addr = -1
281
+
282
+ result = self._process_block(whitelist=whitelist)
283
+ del self.stmt_idx
284
+ del self.ins_addr
285
+ del self.tmps
286
+ del self.block
287
+ del self.state
288
+ del self.tyenv
289
+ return result
290
+
291
+ def _process_block(self, whitelist: set[int] | None = None) -> ResultType:
292
+ result = []
293
+ for stmt_idx, stmt in enumerate(self.block.vex.statements):
294
+ if whitelist is not None and stmt_idx not in whitelist:
295
+ continue
296
+ self.stmt_idx = stmt_idx
297
+
298
+ if type(stmt) is pyvex.IRStmt.IMark:
299
+ # Note that we cannot skip IMarks as they are used later to trigger observation events
300
+ # The bug caused by skipping IMarks is reported at https://github.com/angr/angr/pull/1150
301
+ self.ins_addr = stmt.addr + stmt.delta
302
+
303
+ result.append(self._stmt(stmt))
304
+
305
+ return self._process_block_end(result, whitelist)
306
+
307
+ def _stmt(self, stmt: pyvex.stmt.IRStmt) -> StmtDataType:
308
+ return self._stmt_handlers[stmt.tag](stmt)
309
+
310
+ @abstractmethod
311
+ def _process_block_end(self, stmt_result: list[StmtDataType], whitelist: set[int] | None) -> ResultType: ...
312
+
313
+ #
314
+ # Statement handlers
315
+ #
316
+
317
+ @abstractmethod
318
+ def _handle_stmt_WrTmp(self, stmt: pyvex.stmt.WrTmp) -> StmtDataType: ...
319
+
320
+ @abstractmethod
321
+ def _handle_stmt_Put(self, stmt: pyvex.stmt.Put) -> StmtDataType: ...
322
+
323
+ @abstractmethod
324
+ def _handle_stmt_PutI(self, stmt: pyvex.stmt.PutI) -> StmtDataType: ...
325
+
326
+ @abstractmethod
327
+ def _handle_stmt_Store(self, stmt: pyvex.stmt.Store) -> StmtDataType: ...
328
+
329
+ @abstractmethod
330
+ def _handle_stmt_StoreG(self, stmt: pyvex.stmt.StoreG) -> StmtDataType: ...
331
+
332
+ @abstractmethod
333
+ def _handle_stmt_LoadG(self, stmt: pyvex.stmt.LoadG) -> StmtDataType: ...
334
+
335
+ @abstractmethod
336
+ def _handle_stmt_CAS(self, stmt: pyvex.stmt.CAS) -> StmtDataType: ...
337
+
338
+ @abstractmethod
339
+ def _handle_stmt_LLSC(self, stmt: pyvex.stmt.LLSC) -> StmtDataType: ...
340
+
341
+ @abstractmethod
342
+ def _handle_stmt_MBE(self, stmt: pyvex.stmt.MBE) -> StmtDataType: ...
343
+
344
+ @abstractmethod
345
+ def _handle_stmt_Exit(self, stmt: pyvex.stmt.Exit) -> StmtDataType: ...
346
+
347
+ @abstractmethod
348
+ def _handle_stmt_NoOp(self, stmt: pyvex.stmt.NoOp) -> StmtDataType: ...
349
+
350
+ @abstractmethod
351
+ def _handle_stmt_IMark(self, stmt: pyvex.stmt.IMark) -> StmtDataType: ...
352
+
353
+ @abstractmethod
354
+ def _handle_stmt_AbiHint(self, stmt: pyvex.stmt.AbiHint) -> StmtDataType: ...
355
+
356
+ def _handle_stmt_Dirty(self, stmt: pyvex.stmt.Dirty) -> StmtDataType:
357
+ handler = longest_prefix_lookup(stmt.cee.name, self._dirty_handlers)
358
+ if handler is not None:
359
+ return handler(stmt)
360
+
361
+ if once(stmt.cee.name) and self.l is not None:
362
+ self.l.error("Unsupported Dirty %s.", stmt.cee.name)
363
+ if stmt.tmp in (-1, 0xFFFFFFFF):
364
+ return self._handle_stmt_NoOp(pyvex.stmt.NoOp())
365
+ return self._handle_stmt_WrTmp(pyvex.stmt.WrTmp(stmt.tmp, IRTop(self.tyenv.lookup(stmt.tmp))))
366
+
367
+ #
368
+ # Expression handlers
369
+ #
370
+
371
+ def _expr(self, expr: IRExpr) -> DataType_co:
372
+ handler = type(expr).__name__
373
+ return self._expr_handlers[handler](expr)
374
+
375
+ # not generated by vex
376
+ def _handle_expr_IRTop(self, expr: IRTop) -> DataType_co:
377
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
378
+
379
+ @abstractmethod
380
+ def _handle_expr_VECRET(self, expr: pyvex.expr.VECRET) -> DataType_co: ...
381
+
382
+ @abstractmethod
383
+ def _handle_expr_GSPTR(self, expr: pyvex.expr.GSPTR) -> DataType_co: ...
384
+
385
+ @abstractmethod
386
+ def _handle_expr_RdTmp(self, expr: pyvex.expr.RdTmp) -> DataType_co: ...
387
+
388
+ @abstractmethod
389
+ def _handle_expr_Get(self, expr: pyvex.expr.Get) -> DataType_co: ...
390
+
391
+ @abstractmethod
392
+ def _handle_expr_GetI(self, expr: pyvex.expr.GetI) -> DataType_co: ...
393
+
394
+ @abstractmethod
395
+ def _handle_expr_Load(self, expr: pyvex.expr.Load) -> DataType_co: ...
396
+
397
+ @abstractmethod
398
+ def _handle_expr_ITE(self, expr: pyvex.expr.ITE) -> DataType_co: ...
399
+
400
+ def _handle_expr_Unop(self, expr: pyvex.expr.Unop) -> DataType_co:
401
+ handler = None
402
+ assert expr.op.startswith("Iop_")
403
+ handler = longest_prefix_lookup(expr.op[4:], self._unop_handlers)
404
+ if handler is not None:
405
+ return handler(expr)
406
+
407
+ # All conversions are handled by the Conversion handler
408
+ try:
409
+ simop = vexop_to_simop(expr.op)
410
+ except (UnsupportedIROpError, SimOperationError):
411
+ simop = None
412
+
413
+ if simop is not None and "Reinterp" not in expr.op and simop.op_attrs.get("conversion", None):
414
+ return self._handle_conversion(simop._from_size, simop._to_size, simop.is_signed, expr.args[0])
415
+
416
+ if once(expr.op) and self.l is not None:
417
+ self.l.error("Unsupported Unop %s.", expr.op)
418
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
419
+
420
+ @abstractmethod
421
+ def _handle_conversion(self, from_size: int, to_size: int, signed: bool, operand: IRExpr) -> DataType_co: ...
422
+
423
+ def _handle_expr_Binop(self, expr: pyvex.expr.Binop) -> DataType_co:
424
+ assert expr.op.startswith("Iop_")
425
+
426
+ # vector information
427
+ m = re.match(r"Iop_[^\d]+(\d+)[SU]{0,1}x(\d+)", expr.op)
428
+ if m is not None:
429
+ vector_size = int(m.group(1))
430
+ vector_count = int(m.group(2))
431
+ handler_v = longest_prefix_lookup(expr.op[4:], self._binopv_handlers)
432
+ if handler_v is not None:
433
+ return handler_v(vector_size, vector_count, expr)
434
+
435
+ handler = longest_prefix_lookup(expr.op[4:], self._binop_handlers)
436
+ if handler is not None:
437
+ return handler(expr)
438
+
439
+ if once(expr.op) and self.l is not None:
440
+ self.l.warning("Unsupported Binop %s.", expr.op)
441
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
442
+
443
+ def _handle_expr_Triop(self, expr: pyvex.expr.Triop) -> DataType_co:
444
+ assert expr.op.startswith("Iop_")
445
+ handler = longest_prefix_lookup(expr.op[4:], self._triop_handlers)
446
+ if handler is not None:
447
+ return handler(expr)
448
+
449
+ # should we try dispatching some triops with roundingmode as binops?
450
+
451
+ if once(expr.op) and self.l is not None:
452
+ self.l.error("Unsupported Triop %s.", expr.op)
453
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
454
+
455
+ def _handle_expr_Qop(self, expr: pyvex.expr.Qop) -> DataType_co:
456
+ assert expr.op.startswith("Iop_")
457
+ handler = longest_prefix_lookup(expr.op[4:], self._qop_handlers)
458
+ if handler is not None:
459
+ return handler(expr)
460
+
461
+ if once(expr.op) and self.l is not None:
462
+ self.l.error("Unsupported Qop %s.", expr.op)
463
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
464
+
465
+ def _handle_expr_CCall(self, expr: pyvex.expr.CCall) -> DataType_co: # pylint:disable=useless-return
466
+ handler = longest_prefix_lookup(expr.cee.name, self._ccall_handlers)
467
+ if handler is not None:
468
+ return handler(expr)
469
+
470
+ if once(expr.cee.name) and self.l is not None:
471
+ self.l.error("Unsupported CCall %s.", expr.cee.name)
472
+ return self._top(pyvex.get_type_size(expr.result_type(self.tyenv)))
473
+
474
+ @abstractmethod
475
+ def _handle_expr_Const(self, expr: pyvex.expr.Const) -> DataType_co: ...
476
+
477
+
478
+ class SimEngineNostmtVEX(
479
+ Generic[StateType, DataType_co, ResultType], SimEngineLightVEX[StateType, DataType_co, ResultType, None]
480
+ ):
481
+ """
482
+ A base class of SimEngineLightVEX that has default handlers for statements if they just need to return None, so you
483
+ don't have to implement every single statement handler as ``return None``.
484
+ """
485
+
486
+ def _handle_stmt_WrTmp(self, stmt):
487
+ pass
488
+
489
+ def _handle_stmt_Put(self, stmt):
490
+ pass
491
+
492
+ def _handle_stmt_PutI(self, stmt):
493
+ pass
494
+
495
+ def _handle_stmt_Store(self, stmt):
496
+ pass
497
+
498
+ def _handle_stmt_StoreG(self, stmt):
499
+ pass
500
+
501
+ def _handle_stmt_LoadG(self, stmt):
502
+ pass
503
+
504
+ def _handle_stmt_CAS(self, stmt):
505
+ pass
506
+
507
+ def _handle_stmt_LLSC(self, stmt):
508
+ pass
509
+
510
+ def _handle_stmt_MBE(self, stmt):
511
+ pass
512
+
513
+ def _handle_stmt_Exit(self, stmt):
514
+ pass
515
+
516
+ def _handle_stmt_NoOp(self, stmt):
517
+ pass
518
+
519
+ def _handle_stmt_IMark(self, stmt):
520
+ pass
521
+
522
+ def _handle_stmt_AbiHint(self, stmt):
523
+ pass
524
+
525
+
526
+ # noinspection PyPep8Naming
527
+ class SimEngineLightAIL(
528
+ Generic[StateType, DataType_co, StmtDataType, ResultType],
529
+ SimEngineLight[StateType, DataType_co, ailment.Block, ResultType],
530
+ ):
531
+ """
532
+ A mixin for doing static analysis on AIL
533
+ """
534
+
535
+ def __init__(self, *args, **kwargs):
536
+ self._stmt_handlers: dict[str, Callable[[Any], StmtDataType]] = {
537
+ "Assignment": self._handle_stmt_Assignment,
538
+ "CAS": self._handle_stmt_CAS,
539
+ "WeakAssignment": self._handle_stmt_WeakAssignment,
540
+ "Store": self._handle_stmt_Store,
541
+ "Jump": self._handle_stmt_Jump,
542
+ "ConditionalJump": self._handle_stmt_ConditionalJump,
543
+ "Call": self._handle_stmt_Call,
544
+ "Return": self._handle_stmt_Return,
545
+ "DirtyStatement": self._handle_stmt_DirtyStatement,
546
+ "Label": self._handle_stmt_Label,
547
+ }
548
+ self._expr_handlers: dict[str, Callable[[Any], DataType_co]] = {
549
+ "Atom": self._handle_expr_Atom,
550
+ "Const": self._handle_expr_Const,
551
+ "Tmp": self._handle_expr_Tmp,
552
+ "VirtualVariable": self._handle_expr_VirtualVariable,
553
+ "Phi": self._handle_expr_Phi,
554
+ "Op": self._handle_expr_Op,
555
+ "UnaryOp": self._handle_expr_UnaryOp,
556
+ "BinaryOp": self._handle_expr_BinaryOp,
557
+ "Convert": self._handle_expr_Convert,
558
+ "Reinterpret": self._handle_expr_Reinterpret,
559
+ "Load": self._handle_expr_Load,
560
+ "Register": self._handle_expr_Register,
561
+ "ITE": self._handle_expr_ITE,
562
+ "Call": self._handle_expr_Call,
563
+ "DirtyExpression": self._handle_expr_DirtyExpression,
564
+ "VEXCCallExpression": self._handle_expr_VEXCCallExpression,
565
+ "MultiStatementExpression": self._handle_expr_MultiStatementExpression,
566
+ "BasePointerOffset": self._handle_expr_BasePointerOffset,
567
+ "StackBaseOffset": self._handle_expr_StackBaseOffset,
568
+ }
569
+ self._unop_handlers: dict[str, Callable[[ailment.UnaryOp], DataType_co]] = {
570
+ "Not": self._handle_unop_Not,
571
+ "Neg": self._handle_unop_Neg,
572
+ "BitwiseNeg": self._handle_unop_BitwiseNeg,
573
+ "Reference": self._handle_unop_Reference,
574
+ "Dereference": self._handle_unop_Dereference,
575
+ "Clz": self._handle_unop_Clz,
576
+ "Ctz": self._handle_unop_Ctz,
577
+ "GetMSBs": self._handle_unop_GetMSBs,
578
+ "unpack": self._handle_unop_unpack,
579
+ "Sqrt": self._handle_unop_Sqrt,
580
+ "RSqrtEst": self._handle_unop_RSqrtEst,
581
+ }
582
+ self._binop_handlers: dict[str, Callable[[ailment.BinaryOp], DataType_co]] = {
583
+ "Add": self._handle_binop_Add,
584
+ "AddF": self._handle_binop_AddF,
585
+ "AddV": self._handle_binop_AddV,
586
+ "Sub": self._handle_binop_Sub,
587
+ "SubF": self._handle_binop_SubF,
588
+ "SubV": self._handle_binop_SubV,
589
+ "Mul": self._handle_binop_Mul,
590
+ "Mull": self._handle_binop_Mull,
591
+ "MulF": self._handle_binop_MulF,
592
+ "MulV": self._handle_binop_MulV,
593
+ "MulHiV": self._handle_binop_MulHiV,
594
+ "Div": self._handle_binop_Div,
595
+ "DivF": self._handle_binop_DivF,
596
+ "DivV": self._handle_binop_DivV,
597
+ "Mod": self._handle_binop_Mod,
598
+ "Xor": self._handle_binop_Xor,
599
+ "And": self._handle_binop_And,
600
+ "LogicalAnd": self._handle_binop_LogicalAnd,
601
+ "Or": self._handle_binop_Or,
602
+ "LogicalOr": self._handle_binop_LogicalOr,
603
+ "Shl": self._handle_binop_Shl,
604
+ "Shr": self._handle_binop_Shr,
605
+ "Sar": self._handle_binop_Sar,
606
+ "CmpF": self._handle_binop_CmpF,
607
+ "CmpEQ": self._handle_binop_CmpEQ,
608
+ "CmpNE": self._handle_binop_CmpNE,
609
+ "CmpLT": self._handle_binop_CmpLT,
610
+ "CmpLE": self._handle_binop_CmpLE,
611
+ "CmpGT": self._handle_binop_CmpGT,
612
+ "CmpGE": self._handle_binop_CmpGE,
613
+ "CmpORD": self._handle_binop_CmpORD,
614
+ "Concat": self._handle_binop_Concat,
615
+ "Ror": self._handle_binop_Ror,
616
+ "Rol": self._handle_binop_Rol,
617
+ "Carry": self._handle_binop_Carry,
618
+ "SCarry": self._handle_binop_SCarry,
619
+ "SBorrow": self._handle_binop_SBorrow,
620
+ "InterleaveLOV": self._handle_binop_InterleaveLOV,
621
+ "InterleaveHIV": self._handle_binop_InterleaveHIV,
622
+ "CasCmpEQ": self._handle_binop_CasCmpEQ,
623
+ "CasCmpNE": self._handle_binop_CasCmpNE,
624
+ "ExpCmpNE": self._handle_binop_ExpCmpNE,
625
+ "SarNV": self._handle_binop_SarNV,
626
+ "ShrNV": self._handle_binop_ShrNV,
627
+ "ShlNV": self._handle_binop_ShlNV,
628
+ "CmpEQV": self._handle_binop_CmpEQV,
629
+ "CmpNEV": self._handle_binop_CmpNEV,
630
+ "CmpGEV": self._handle_binop_CmpGEV,
631
+ "CmpGTV": self._handle_binop_CmpGTV,
632
+ "CmpLEV": self._handle_binop_CmpLTV,
633
+ "CmpLTV": self._handle_binop_CmpLEV,
634
+ "MinV": self._handle_binop_MinV,
635
+ "MaxV": self._handle_binop_MaxV,
636
+ "QAddV": self._handle_binop_QAddV,
637
+ "QNarrowBinV": self._handle_binop_QNarrowBinV,
638
+ "PermV": self._handle_binop_PermV,
639
+ "Set": self._handle_binop_Set,
640
+ }
641
+ super().__init__(*args, **kwargs)
642
+
643
+ def _stmt_diverges(self, result: StmtDataType) -> bool:
644
+ return False
645
+
646
+ def process(
647
+ self, state: StateType, *, block: ailment.Block | None = None, whitelist: set[int] | None = None, **kwargs
648
+ ) -> ResultType:
649
+ self.tmps = {}
650
+ if block is None:
651
+ block = self.lift(state)
652
+ self.block = block
653
+ self.state = state
654
+ self.stmt_idx = 0
655
+ self.ins_addr = 0
656
+
657
+ stmt_data = self._process_stmts(whitelist=whitelist)
658
+ result = self._process_block_end(block, stmt_data, whitelist)
659
+ del self.tmps
660
+ del self.block
661
+ del self.state
662
+ del self.stmt_idx
663
+ del self.ins_addr
664
+ return result
665
+
666
+ @abstractmethod
667
+ def _process_block_end(
668
+ self, block: ailment.Block, stmt_data: list[StmtDataType], whitelist: set[int] | None
669
+ ) -> ResultType: ...
670
+
671
+ #
672
+ # Helper methods
673
+ #
674
+
675
+ def _codeloc(self, block_only=False, context=None):
676
+ return CodeLocation(
677
+ self.block.addr,
678
+ None if block_only else self.stmt_idx,
679
+ ins_addr=None if block_only else self.ins_addr,
680
+ context=context,
681
+ block_idx=self.block.idx,
682
+ )
683
+
684
+ #
685
+ # Statements
686
+ #
687
+
688
+ def _process_stmts(self, whitelist: set[int] | None) -> list[StmtDataType]:
689
+ result = []
690
+
691
+ for stmt_idx, stmt in enumerate(self.block.statements):
692
+ if whitelist is not None and stmt_idx not in whitelist:
693
+ continue
694
+
695
+ self.stmt_idx = stmt_idx
696
+ self.ins_addr = stmt.tags["ins_addr"]
697
+ stmt_result = self._stmt(stmt)
698
+ result.append(stmt_result)
699
+ if self._stmt_diverges(stmt_result):
700
+ break
701
+
702
+ return result
703
+
704
+ def _stmt(self, stmt: ailment.statement.Statement) -> StmtDataType:
705
+ stmt_type_name = type(stmt).__name__
706
+ return self._stmt_handlers[stmt_type_name](stmt)
707
+
708
+ @abstractmethod
709
+ def _handle_stmt_Assignment(self, stmt: ailment.statement.Assignment) -> StmtDataType: ...
710
+
711
+ @abstractmethod
712
+ def _handle_stmt_CAS(self, stmt: ailment.statement.CAS) -> StmtDataType: ...
713
+
714
+ @abstractmethod
715
+ def _handle_stmt_WeakAssignment(self, stmt: ailment.statement.WeakAssignment) -> StmtDataType: ...
716
+
717
+ @abstractmethod
718
+ def _handle_stmt_Store(self, stmt: ailment.statement.Store) -> StmtDataType: ...
719
+
720
+ @abstractmethod
721
+ def _handle_stmt_Jump(self, stmt: ailment.statement.Jump) -> StmtDataType: ...
722
+
723
+ @abstractmethod
724
+ def _handle_stmt_ConditionalJump(self, stmt: ailment.statement.ConditionalJump) -> StmtDataType: ...
725
+
726
+ @abstractmethod
727
+ def _handle_stmt_Call(self, stmt: ailment.statement.Call) -> StmtDataType: ...
728
+
729
+ @abstractmethod
730
+ def _handle_stmt_Return(self, stmt: ailment.statement.Return) -> StmtDataType: ...
731
+
732
+ @abstractmethod
733
+ def _handle_stmt_DirtyStatement(self, stmt: ailment.statement.DirtyStatement) -> StmtDataType: ...
734
+
735
+ @abstractmethod
736
+ def _handle_stmt_Label(self, stmt: ailment.statement.Label) -> StmtDataType: ...
737
+
738
+ #
739
+ # Expressions
740
+ #
741
+
742
+ def _expr(self, expr: ailment.Expression) -> DataType_co:
743
+ expr_type_name = type(expr).__name__
744
+ return self._expr_handlers[expr_type_name](expr)
745
+
746
+ def _handle_expr_Atom(self, expr: ailment.expression.Atom) -> DataType_co:
747
+ raise TypeError("We should never see raw Atoms")
748
+
749
+ @abstractmethod
750
+ def _handle_expr_Const(self, expr: ailment.expression.Const) -> DataType_co: ...
751
+
752
+ @abstractmethod
753
+ def _handle_expr_Tmp(self, expr: ailment.expression.Tmp) -> DataType_co: ...
754
+
755
+ @abstractmethod
756
+ def _handle_expr_VirtualVariable(self, expr: ailment.expression.VirtualVariable) -> DataType_co: ...
757
+
758
+ @abstractmethod
759
+ def _handle_expr_Phi(self, expr: ailment.expression.Phi) -> DataType_co: ...
760
+
761
+ def _handle_expr_Op(self, expr: ailment.expression.Op) -> DataType_co:
762
+ raise TypeError("We should never see raw Ops")
763
+
764
+ def _handle_expr_UnaryOp(self, expr: ailment.expression.UnaryOp) -> DataType_co:
765
+ return self._unop_handlers[expr.op](expr)
766
+
767
+ def _handle_expr_BinaryOp(self, expr: ailment.expression.BinaryOp) -> DataType_co:
768
+ return self._binop_handlers[expr.op](expr)
769
+
770
+ @abstractmethod
771
+ def _handle_expr_Convert(self, expr: ailment.expression.Convert) -> DataType_co: ...
772
+
773
+ @abstractmethod
774
+ def _handle_expr_Reinterpret(self, expr: ailment.expression.Reinterpret) -> DataType_co: ...
775
+
776
+ @abstractmethod
777
+ def _handle_expr_Load(self, expr: ailment.expression.Load) -> DataType_co: ...
778
+
779
+ @abstractmethod
780
+ def _handle_expr_Register(self, expr: ailment.expression.Register) -> DataType_co: ...
781
+
782
+ @abstractmethod
783
+ def _handle_expr_ITE(self, expr: ailment.expression.ITE) -> DataType_co: ...
784
+
785
+ @abstractmethod
786
+ def _handle_expr_Call(self, expr: ailment.statement.Call) -> DataType_co: ...
787
+
788
+ @abstractmethod
789
+ def _handle_expr_DirtyExpression(self, expr: ailment.expression.DirtyExpression) -> DataType_co: ...
790
+
791
+ @abstractmethod
792
+ def _handle_expr_VEXCCallExpression(self, expr: ailment.expression.VEXCCallExpression) -> DataType_co: ...
793
+
794
+ @abstractmethod
795
+ def _handle_expr_MultiStatementExpression(
796
+ self, expr: ailment.expression.MultiStatementExpression
797
+ ) -> DataType_co: ...
798
+
799
+ @abstractmethod
800
+ def _handle_expr_BasePointerOffset(self, expr: ailment.expression.BasePointerOffset) -> DataType_co: ...
801
+
802
+ @abstractmethod
803
+ def _handle_expr_StackBaseOffset(self, expr: ailment.expression.StackBaseOffset) -> DataType_co: ...
804
+
805
+ #
806
+ # UnOps
807
+ #
808
+
809
+ @abstractmethod
810
+ def _handle_unop_Not(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
811
+
812
+ @abstractmethod
813
+ def _handle_unop_Neg(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
814
+
815
+ @abstractmethod
816
+ def _handle_unop_BitwiseNeg(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
817
+
818
+ @abstractmethod
819
+ def _handle_unop_Reference(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
820
+
821
+ @abstractmethod
822
+ def _handle_unop_Dereference(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
823
+
824
+ @abstractmethod
825
+ def _handle_unop_Clz(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
826
+
827
+ @abstractmethod
828
+ def _handle_unop_Ctz(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
829
+
830
+ @abstractmethod
831
+ def _handle_unop_GetMSBs(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
832
+
833
+ @abstractmethod
834
+ def _handle_unop_unpack(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
835
+
836
+ @abstractmethod
837
+ def _handle_unop_Sqrt(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
838
+
839
+ @abstractmethod
840
+ def _handle_unop_RSqrtEst(self, expr: ailment.expression.UnaryOp) -> DataType_co: ...
841
+
842
+ #
843
+ # BinOps
844
+ #
845
+ @abstractmethod
846
+ def _handle_binop_Add(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
847
+
848
+ @abstractmethod
849
+ def _handle_binop_AddF(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
850
+
851
+ @abstractmethod
852
+ def _handle_binop_AddV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
853
+
854
+ @abstractmethod
855
+ def _handle_binop_Sub(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
856
+
857
+ @abstractmethod
858
+ def _handle_binop_SubF(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
859
+
860
+ @abstractmethod
861
+ def _handle_binop_SubV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
862
+
863
+ @abstractmethod
864
+ def _handle_binop_Mul(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
865
+
866
+ @abstractmethod
867
+ def _handle_binop_Mull(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
868
+
869
+ @abstractmethod
870
+ def _handle_binop_MulF(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
871
+
872
+ @abstractmethod
873
+ def _handle_binop_MulV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
874
+
875
+ @abstractmethod
876
+ def _handle_binop_MulHiV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
877
+
878
+ @abstractmethod
879
+ def _handle_binop_Div(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
880
+
881
+ @abstractmethod
882
+ def _handle_binop_DivF(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
883
+
884
+ @abstractmethod
885
+ def _handle_binop_DivV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
886
+
887
+ @abstractmethod
888
+ def _handle_binop_Mod(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
889
+
890
+ @abstractmethod
891
+ def _handle_binop_Xor(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
892
+
893
+ @abstractmethod
894
+ def _handle_binop_And(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
895
+
896
+ @abstractmethod
897
+ def _handle_binop_LogicalAnd(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
898
+
899
+ @abstractmethod
900
+ def _handle_binop_Or(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
901
+
902
+ @abstractmethod
903
+ def _handle_binop_LogicalOr(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
904
+
905
+ @abstractmethod
906
+ def _handle_binop_Shl(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
907
+
908
+ @abstractmethod
909
+ def _handle_binop_Shr(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
910
+
911
+ @abstractmethod
912
+ def _handle_binop_Sar(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
913
+
914
+ @abstractmethod
915
+ def _handle_binop_CmpF(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
916
+
917
+ @abstractmethod
918
+ def _handle_binop_CmpEQ(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
919
+
920
+ @abstractmethod
921
+ def _handle_binop_CmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
922
+
923
+ @abstractmethod
924
+ def _handle_binop_CmpLT(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
925
+
926
+ @abstractmethod
927
+ def _handle_binop_CmpLE(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
928
+
929
+ @abstractmethod
930
+ def _handle_binop_CmpGT(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
931
+
932
+ @abstractmethod
933
+ def _handle_binop_CmpGE(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
934
+
935
+ @abstractmethod
936
+ def _handle_binop_CmpORD(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
937
+
938
+ @abstractmethod
939
+ def _handle_binop_Concat(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
940
+
941
+ @abstractmethod
942
+ def _handle_binop_Ror(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
943
+
944
+ @abstractmethod
945
+ def _handle_binop_Rol(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
946
+
947
+ @abstractmethod
948
+ def _handle_binop_Carry(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
949
+
950
+ @abstractmethod
951
+ def _handle_binop_SCarry(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
952
+
953
+ @abstractmethod
954
+ def _handle_binop_SBorrow(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
955
+
956
+ @abstractmethod
957
+ def _handle_binop_InterleaveLOV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
958
+
959
+ @abstractmethod
960
+ def _handle_binop_InterleaveHIV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
961
+
962
+ @abstractmethod
963
+ def _handle_binop_CasCmpEQ(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
964
+
965
+ @abstractmethod
966
+ def _handle_binop_CasCmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
967
+
968
+ @abstractmethod
969
+ def _handle_binop_ExpCmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
970
+
971
+ @abstractmethod
972
+ def _handle_binop_SarNV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
973
+
974
+ @abstractmethod
975
+ def _handle_binop_ShrNV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
976
+
977
+ @abstractmethod
978
+ def _handle_binop_ShlNV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
979
+
980
+ @abstractmethod
981
+ def _handle_binop_CmpEQV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
982
+
983
+ @abstractmethod
984
+ def _handle_binop_CmpNEV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
985
+
986
+ @abstractmethod
987
+ def _handle_binop_CmpGEV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
988
+
989
+ @abstractmethod
990
+ def _handle_binop_CmpGTV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
991
+
992
+ @abstractmethod
993
+ def _handle_binop_CmpLEV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
994
+
995
+ @abstractmethod
996
+ def _handle_binop_CmpLTV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
997
+
998
+ @abstractmethod
999
+ def _handle_binop_MinV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1000
+
1001
+ @abstractmethod
1002
+ def _handle_binop_MaxV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1003
+
1004
+ @abstractmethod
1005
+ def _handle_binop_QAddV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1006
+
1007
+ @abstractmethod
1008
+ def _handle_binop_QNarrowBinV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1009
+
1010
+ @abstractmethod
1011
+ def _handle_binop_PermV(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1012
+
1013
+ @abstractmethod
1014
+ def _handle_binop_Set(self, expr: ailment.expression.BinaryOp) -> DataType_co: ...
1015
+
1016
+
1017
+ class SimEngineNostmtAIL(
1018
+ Generic[StateType, DataType_co, StmtDataType, ResultType],
1019
+ SimEngineLightAIL[StateType, DataType_co, StmtDataType | None, ResultType],
1020
+ ):
1021
+ """
1022
+ A base class of SimEngineLightAIL that has default handlers for statements if they just need to return None, so you
1023
+ don't have to implement every single statement handler as ``return None``.
1024
+ """
1025
+
1026
+ def _handle_stmt_Assignment(self, stmt) -> StmtDataType | None:
1027
+ pass
1028
+
1029
+ def _handle_stmt_WeakAssignment(self, stmt) -> StmtDataType | None:
1030
+ pass
1031
+
1032
+ def _handle_stmt_CAS(self, stmt) -> StmtDataType | None:
1033
+ pass
1034
+
1035
+ def _handle_stmt_Store(self, stmt) -> StmtDataType | None:
1036
+ pass
1037
+
1038
+ def _handle_stmt_Jump(self, stmt) -> StmtDataType | None:
1039
+ pass
1040
+
1041
+ def _handle_stmt_ConditionalJump(self, stmt) -> StmtDataType | None:
1042
+ pass
1043
+
1044
+ def _handle_stmt_Call(self, stmt) -> StmtDataType | None:
1045
+ pass
1046
+
1047
+ def _handle_stmt_Return(self, stmt) -> StmtDataType | None:
1048
+ pass
1049
+
1050
+ def _handle_stmt_DirtyStatement(self, stmt) -> StmtDataType | None:
1051
+ pass
1052
+
1053
+ def _handle_stmt_Label(self, stmt) -> StmtDataType | None:
1054
+ pass
1055
+
1056
+
1057
+ class SimEngineNoexprAIL(
1058
+ Generic[StateType, DataType_co, StmtDataType, ResultType],
1059
+ SimEngineLightAIL[StateType, DataType_co | None, StmtDataType, ResultType],
1060
+ ):
1061
+ """
1062
+ A base class of SimEngineLightAIL that has default handlers for expressions if they just need to return None, so you
1063
+ don't have to implement every single expression handler as ``return None``.
1064
+ """
1065
+
1066
+ def _handle_expr_Atom(self, expr: ailment.expression.Atom) -> DataType_co | None:
1067
+ pass
1068
+
1069
+ def _handle_expr_Const(self, expr: ailment.expression.Const) -> DataType_co | None:
1070
+ pass
1071
+
1072
+ def _handle_expr_Tmp(self, expr: ailment.expression.Tmp) -> DataType_co | None:
1073
+ pass
1074
+
1075
+ def _handle_expr_VirtualVariable(self, expr: ailment.expression.VirtualVariable) -> DataType_co | None:
1076
+ pass
1077
+
1078
+ def _handle_expr_Phi(self, expr: ailment.expression.Phi) -> DataType_co | None:
1079
+ pass
1080
+
1081
+ def _handle_expr_Convert(self, expr: ailment.expression.Convert) -> DataType_co | None:
1082
+ pass
1083
+
1084
+ def _handle_expr_Reinterpret(self, expr: ailment.expression.Reinterpret) -> DataType_co | None:
1085
+ pass
1086
+
1087
+ def _handle_expr_Load(self, expr: ailment.expression.Load) -> DataType_co | None:
1088
+ pass
1089
+
1090
+ def _handle_expr_Register(self, expr: ailment.expression.Register) -> DataType_co | None:
1091
+ pass
1092
+
1093
+ def _handle_expr_ITE(self, expr: ailment.expression.ITE) -> DataType_co | None:
1094
+ pass
1095
+
1096
+ def _handle_expr_Call(self, expr: ailment.statement.Call) -> DataType_co | None:
1097
+ pass
1098
+
1099
+ def _handle_expr_DirtyExpression(self, expr: ailment.expression.DirtyExpression) -> DataType_co | None:
1100
+ pass
1101
+
1102
+ def _handle_expr_VEXCCallExpression(self, expr: ailment.expression.VEXCCallExpression) -> DataType_co | None:
1103
+ pass
1104
+
1105
+ def _handle_expr_MultiStatementExpression(
1106
+ self, expr: ailment.expression.MultiStatementExpression
1107
+ ) -> DataType_co | None:
1108
+ pass
1109
+
1110
+ def _handle_expr_BasePointerOffset(self, expr: ailment.expression.BasePointerOffset) -> DataType_co | None:
1111
+ pass
1112
+
1113
+ def _handle_expr_StackBaseOffset(self, expr: ailment.expression.StackBaseOffset) -> DataType_co | None:
1114
+ pass
1115
+
1116
+ def _handle_unop_Not(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1117
+ pass
1118
+
1119
+ def _handle_unop_Neg(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1120
+ pass
1121
+
1122
+ def _handle_unop_BitwiseNeg(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1123
+ pass
1124
+
1125
+ def _handle_unop_Reference(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1126
+ pass
1127
+
1128
+ def _handle_unop_Dereference(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1129
+ pass
1130
+
1131
+ def _handle_unop_GetMSBs(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1132
+ pass
1133
+
1134
+ def _handle_unop_unpack(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1135
+ pass
1136
+
1137
+ def _handle_unop_RSqrtEst(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1138
+ pass
1139
+
1140
+ def _handle_binop_Add(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1141
+ pass
1142
+
1143
+ def _handle_binop_AddF(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1144
+ pass
1145
+
1146
+ def _handle_binop_AddV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1147
+ pass
1148
+
1149
+ def _handle_binop_Sub(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1150
+ pass
1151
+
1152
+ def _handle_binop_SubF(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1153
+ pass
1154
+
1155
+ def _handle_binop_SubV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1156
+ pass
1157
+
1158
+ def _handle_binop_Mul(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1159
+ pass
1160
+
1161
+ def _handle_binop_Mull(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1162
+ pass
1163
+
1164
+ def _handle_binop_MulF(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1165
+ pass
1166
+
1167
+ def _handle_binop_MulV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1168
+ pass
1169
+
1170
+ def _handle_binop_MulHiV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1171
+ pass
1172
+
1173
+ def _handle_binop_Div(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1174
+ pass
1175
+
1176
+ def _handle_binop_DivF(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1177
+ pass
1178
+
1179
+ def _handle_binop_DivV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1180
+ pass
1181
+
1182
+ def _handle_binop_Mod(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1183
+ pass
1184
+
1185
+ def _handle_binop_Xor(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1186
+ pass
1187
+
1188
+ def _handle_binop_And(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1189
+ pass
1190
+
1191
+ def _handle_binop_LogicalAnd(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1192
+ pass
1193
+
1194
+ def _handle_binop_Or(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1195
+ pass
1196
+
1197
+ def _handle_binop_LogicalOr(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1198
+ pass
1199
+
1200
+ def _handle_binop_Shl(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1201
+ pass
1202
+
1203
+ def _handle_binop_Shr(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1204
+ pass
1205
+
1206
+ def _handle_binop_Sar(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1207
+ pass
1208
+
1209
+ def _handle_binop_CmpF(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1210
+ pass
1211
+
1212
+ def _handle_binop_CmpEQ(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1213
+ pass
1214
+
1215
+ def _handle_binop_CmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1216
+ pass
1217
+
1218
+ def _handle_binop_CmpLT(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1219
+ pass
1220
+
1221
+ def _handle_binop_CmpLE(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1222
+ pass
1223
+
1224
+ def _handle_binop_CmpGT(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1225
+ pass
1226
+
1227
+ def _handle_binop_CmpGE(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1228
+ pass
1229
+
1230
+ def _handle_binop_Concat(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1231
+ pass
1232
+
1233
+ def _handle_binop_Ror(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1234
+ pass
1235
+
1236
+ def _handle_binop_Rol(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1237
+ pass
1238
+
1239
+ def _handle_binop_Carry(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1240
+ pass
1241
+
1242
+ def _handle_binop_SCarry(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1243
+ pass
1244
+
1245
+ def _handle_binop_SBorrow(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1246
+ pass
1247
+
1248
+ def _handle_binop_InterleaveLOV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1249
+ pass
1250
+
1251
+ def _handle_binop_InterleaveHIV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1252
+ pass
1253
+
1254
+ def _handle_binop_CasCmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1255
+ pass
1256
+
1257
+ def _handle_binop_ExpCmpNE(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1258
+ pass
1259
+
1260
+ def _handle_binop_SarNV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1261
+ pass
1262
+
1263
+ def _handle_binop_ShrNV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1264
+ pass
1265
+
1266
+ def _handle_binop_ShlNV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1267
+ pass
1268
+
1269
+ def _handle_binop_CmpEQV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1270
+ pass
1271
+
1272
+ def _handle_binop_CmpNEV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1273
+ pass
1274
+
1275
+ def _handle_binop_CmpGEV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1276
+ pass
1277
+
1278
+ def _handle_binop_CmpGTV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1279
+ pass
1280
+
1281
+ def _handle_binop_CmpLEV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1282
+ pass
1283
+
1284
+ def _handle_binop_CmpLTV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1285
+ pass
1286
+
1287
+ def _handle_binop_PermV(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1288
+ pass
1289
+
1290
+ def _handle_binop_Set(self, expr: ailment.expression.BinaryOp) -> DataType_co | None:
1291
+ pass
1292
+
1293
+ def _handle_unop_Clz(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1294
+ pass
1295
+
1296
+ def _handle_unop_Ctz(self, expr: ailment.expression.UnaryOp) -> DataType_co | None:
1297
+ pass