angr 9.2.118__py3-none-manylinux2014_x86_64.whl → 9.2.120__py3-none-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of angr might be problematic. Click here for more details.

Files changed (838) hide show
  1. angr/__init__.py +217 -2
  2. angr/__main__.py +14 -4
  3. angr/analyses/__init__.py +54 -0
  4. angr/analyses/analysis.py +47 -5
  5. angr/analyses/backward_slice.py +4 -4
  6. angr/analyses/bindiff.py +2 -2
  7. angr/analyses/callee_cleanup_finder.py +1 -1
  8. angr/analyses/calling_convention.py +21 -15
  9. angr/analyses/cdg.py +1 -1
  10. angr/analyses/cfg/__init__.py +12 -1
  11. angr/analyses/cfg/cfb.py +2 -2
  12. angr/analyses/cfg/cfg.py +1 -1
  13. angr/analyses/cfg/cfg_base.py +28 -11
  14. angr/analyses/cfg/cfg_emulated.py +18 -18
  15. angr/analyses/cfg/cfg_fast.py +136 -24
  16. angr/analyses/cfg/cfg_fast_soot.py +5 -5
  17. angr/analyses/cfg/cfg_job_base.py +3 -3
  18. angr/analyses/cfg/indirect_jump_resolvers/__init__.py +13 -0
  19. angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +1 -1
  20. angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +2 -2
  21. angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +4 -4
  22. angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +21 -18
  23. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +5 -5
  24. angr/analyses/cfg/indirect_jump_resolvers/resolver.py +2 -2
  25. angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +1 -1
  26. angr/analyses/cfg_slice_to_sink/__init__.py +8 -0
  27. angr/analyses/class_identifier.py +2 -2
  28. angr/analyses/code_tagging.py +2 -2
  29. angr/analyses/complete_calling_conventions.py +3 -3
  30. angr/analyses/congruency_check.py +1 -2
  31. angr/analyses/data_dep/__init__.py +13 -0
  32. angr/analyses/data_dep/data_dependency_analysis.py +5 -5
  33. angr/analyses/datagraph_meta.py +1 -1
  34. angr/analyses/ddg.py +3 -3
  35. angr/analyses/decompiler/__init__.py +25 -0
  36. angr/analyses/decompiler/ail_simplifier.py +9 -9
  37. angr/analyses/decompiler/block_simplifier.py +3 -3
  38. angr/analyses/decompiler/callsite_maker.py +5 -3
  39. angr/analyses/decompiler/clinic.py +46 -36
  40. angr/analyses/decompiler/condition_processor.py +48 -21
  41. angr/analyses/decompiler/counters/__init__.py +11 -0
  42. angr/analyses/decompiler/decompiler.py +27 -10
  43. angr/analyses/decompiler/dephication/seqnode_dephication.py +19 -1
  44. angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +1 -1
  45. angr/analyses/decompiler/optimization_passes/__init__.py +66 -54
  46. angr/analyses/decompiler/optimization_passes/const_derefs.py +1 -1
  47. angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +3 -3
  48. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +1 -1
  49. angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +3 -0
  50. angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +7 -4
  51. angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +13 -9
  52. angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +1 -1
  53. angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +1 -1
  54. angr/analyses/decompiler/optimization_passes/engine_base.py +2 -2
  55. angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +2 -2
  56. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +4 -4
  57. angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +19 -19
  58. angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +6 -6
  59. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +2 -2
  60. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +7 -3
  61. angr/analyses/decompiler/optimization_passes/optimization_pass.py +34 -28
  62. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +2 -2
  63. angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +1 -1
  64. angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -3
  65. angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +5 -5
  66. angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -1
  67. angr/analyses/decompiler/peephole_optimizations/__init__.py +61 -19
  68. angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +1 -1
  69. angr/analyses/decompiler/presets/__init__.py +20 -0
  70. angr/analyses/decompiler/presets/basic.py +30 -0
  71. angr/analyses/decompiler/presets/fast.py +54 -0
  72. angr/analyses/decompiler/presets/full.py +64 -0
  73. angr/analyses/decompiler/presets/preset.py +37 -0
  74. angr/analyses/decompiler/region_identifier.py +21 -7
  75. angr/analyses/decompiler/region_simplifiers/__init__.py +3 -0
  76. angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +3 -3
  77. angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +3 -3
  78. angr/analyses/decompiler/region_simplifiers/expr_folding.py +2 -2
  79. angr/analyses/decompiler/region_simplifiers/goto.py +3 -3
  80. angr/analyses/decompiler/region_simplifiers/if_.py +2 -2
  81. angr/analyses/decompiler/region_simplifiers/ifelse.py +4 -4
  82. angr/analyses/decompiler/region_simplifiers/loop.py +4 -4
  83. angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -1
  84. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +6 -6
  85. angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -5
  86. angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +3 -3
  87. angr/analyses/decompiler/sequence_walker.py +11 -12
  88. angr/analyses/decompiler/structured_codegen/__init__.py +14 -0
  89. angr/analyses/decompiler/structured_codegen/base.py +1 -1
  90. angr/analyses/decompiler/structured_codegen/c.py +22 -15
  91. angr/analyses/decompiler/structured_codegen/dwarf_import.py +2 -2
  92. angr/analyses/decompiler/structuring/__init__.py +11 -1
  93. angr/analyses/decompiler/structuring/dream.py +16 -15
  94. angr/analyses/decompiler/structuring/phoenix.py +9 -9
  95. angr/analyses/decompiler/structuring/recursive_structurer.py +7 -7
  96. angr/analyses/decompiler/structuring/sailr.py +2 -2
  97. angr/analyses/decompiler/structuring/structurer_base.py +9 -4
  98. angr/analyses/decompiler/structuring/structurer_nodes.py +18 -9
  99. angr/analyses/decompiler/utils.py +4 -2
  100. angr/analyses/disassembly.py +6 -6
  101. angr/analyses/disassembly_utils.py +1 -1
  102. angr/analyses/dominance_frontier.py +1 -1
  103. angr/analyses/find_objects_static.py +5 -5
  104. angr/analyses/flirt.py +3 -3
  105. angr/analyses/forward_analysis/__init__.py +9 -0
  106. angr/analyses/forward_analysis/forward_analysis.py +4 -4
  107. angr/analyses/forward_analysis/job_info.py +1 -1
  108. angr/analyses/forward_analysis/visitors/__init__.py +9 -0
  109. angr/analyses/forward_analysis/visitors/graph.py +2 -2
  110. angr/analyses/identifier/__init__.py +3 -0
  111. angr/analyses/identifier/custom_callable.py +2 -3
  112. angr/analyses/identifier/errors.py +1 -1
  113. angr/analyses/identifier/functions/__init__.py +4 -4
  114. angr/analyses/identifier/functions/atoi.py +1 -1
  115. angr/analyses/identifier/functions/based_atoi.py +1 -1
  116. angr/analyses/identifier/functions/fdprintf.py +1 -1
  117. angr/analyses/identifier/functions/free.py +2 -2
  118. angr/analyses/identifier/functions/int2str.py +1 -1
  119. angr/analyses/identifier/functions/malloc.py +2 -2
  120. angr/analyses/identifier/functions/memcmp.py +1 -1
  121. angr/analyses/identifier/functions/memcpy.py +3 -3
  122. angr/analyses/identifier/functions/memset.py +1 -1
  123. angr/analyses/identifier/functions/printf.py +1 -1
  124. angr/analyses/identifier/functions/recv_until.py +2 -2
  125. angr/analyses/identifier/functions/skip_calloc.py +2 -2
  126. angr/analyses/identifier/functions/skip_realloc.py +2 -2
  127. angr/analyses/identifier/functions/skip_recv_n.py +1 -1
  128. angr/analyses/identifier/functions/snprintf.py +1 -1
  129. angr/analyses/identifier/functions/sprintf.py +1 -1
  130. angr/analyses/identifier/functions/strcmp.py +1 -1
  131. angr/analyses/identifier/functions/strcpy.py +1 -1
  132. angr/analyses/identifier/functions/strlen.py +1 -1
  133. angr/analyses/identifier/functions/strncmp.py +1 -1
  134. angr/analyses/identifier/functions/strncpy.py +1 -1
  135. angr/analyses/identifier/functions/strtol.py +1 -1
  136. angr/analyses/identifier/identify.py +3 -3
  137. angr/analyses/identifier/runner.py +6 -6
  138. angr/analyses/init_finder.py +1 -1
  139. angr/analyses/loop_analysis.py +2 -2
  140. angr/analyses/propagator/__init__.py +3 -0
  141. angr/analyses/propagator/engine_ail.py +6 -5
  142. angr/analyses/propagator/engine_base.py +2 -2
  143. angr/analyses/propagator/engine_vex.py +2 -2
  144. angr/analyses/propagator/outdated_definition_walker.py +3 -3
  145. angr/analyses/propagator/propagator.py +3 -3
  146. angr/analyses/propagator/top_checker_mixin.py +1 -1
  147. angr/analyses/proximity_graph.py +3 -3
  148. angr/analyses/reaching_definitions/__init__.py +6 -6
  149. angr/analyses/reaching_definitions/dep_graph.py +5 -5
  150. angr/analyses/reaching_definitions/engine_ail.py +8 -8
  151. angr/analyses/reaching_definitions/engine_vex.py +18 -13
  152. angr/analyses/reaching_definitions/function_handler.py +6 -2
  153. angr/analyses/reaching_definitions/heap_allocator.py +3 -3
  154. angr/analyses/reaching_definitions/rd_state.py +4 -10
  155. angr/analyses/reaching_definitions/reaching_definitions.py +11 -11
  156. angr/analyses/reaching_definitions/subject.py +3 -3
  157. angr/analyses/reassembler.py +5 -5
  158. angr/analyses/{s_propagator/s_propagator.py → s_propagator.py} +1 -1
  159. angr/analyses/s_reaching_definitions/__init__.py +11 -1
  160. angr/analyses/s_reaching_definitions/s_rda_model.py +117 -0
  161. angr/analyses/s_reaching_definitions/s_rda_view.py +213 -0
  162. angr/analyses/s_reaching_definitions/s_reaching_definitions.py +159 -0
  163. angr/analyses/stack_pointer_tracker.py +34 -16
  164. angr/analyses/static_hooker.py +2 -2
  165. angr/analyses/typehoon/__init__.py +3 -0
  166. angr/analyses/typehoon/lifter.py +1 -1
  167. angr/analyses/typehoon/translator.py +21 -4
  168. angr/analyses/typehoon/typeconsts.py +8 -0
  169. angr/analyses/typehoon/typehoon.py +3 -3
  170. angr/analyses/variable_recovery/__init__.py +6 -0
  171. angr/analyses/variable_recovery/engine_ail.py +5 -5
  172. angr/analyses/variable_recovery/engine_base.py +7 -7
  173. angr/analyses/variable_recovery/engine_vex.py +14 -17
  174. angr/analyses/variable_recovery/variable_recovery.py +5 -5
  175. angr/analyses/variable_recovery/variable_recovery_base.py +7 -7
  176. angr/analyses/variable_recovery/variable_recovery_fast.py +7 -7
  177. angr/analyses/veritesting.py +8 -8
  178. angr/analyses/vfg.py +13 -13
  179. angr/analyses/vsa_ddg.py +3 -3
  180. angr/analyses/vtable.py +1 -1
  181. angr/analyses/xrefs.py +3 -3
  182. angr/angrdb/__init__.py +3 -0
  183. angr/angrdb/db.py +2 -2
  184. angr/angrdb/serializers/__init__.py +7 -0
  185. angr/angrdb/serializers/cfg_model.py +2 -2
  186. angr/angrdb/serializers/comments.py +2 -2
  187. angr/angrdb/serializers/funcs.py +2 -2
  188. angr/angrdb/serializers/kb.py +2 -2
  189. angr/angrdb/serializers/labels.py +2 -2
  190. angr/angrdb/serializers/loader.py +2 -2
  191. angr/angrdb/serializers/structured_code.py +4 -4
  192. angr/angrdb/serializers/variables.py +3 -3
  193. angr/angrdb/serializers/xrefs.py +2 -2
  194. angr/calling_conventions.py +69 -24
  195. angr/concretization_strategies/__init__.py +17 -0
  196. angr/concretization_strategies/max.py +1 -1
  197. angr/concretization_strategies/norepeats.py +3 -3
  198. angr/concretization_strategies/norepeats_range.py +1 -1
  199. angr/distributed/__init__.py +6 -1
  200. angr/distributed/server.py +0 -1
  201. angr/distributed/worker.py +6 -4
  202. angr/engines/__init__.py +25 -0
  203. angr/engines/concrete.py +2 -3
  204. angr/engines/engine.py +3 -3
  205. angr/engines/failure.py +2 -2
  206. angr/engines/light/__init__.py +12 -0
  207. angr/engines/light/data.py +1 -1
  208. angr/engines/light/engine.py +12 -17
  209. angr/engines/pcode/__init__.py +7 -1
  210. angr/engines/pcode/behavior.py +1 -1
  211. angr/engines/pcode/cc.py +1 -1
  212. angr/engines/pcode/emulate.py +4 -4
  213. angr/engines/pcode/engine.py +5 -5
  214. angr/engines/pcode/lifter.py +7 -7
  215. angr/engines/procedure.py +3 -3
  216. angr/engines/soot/__init__.py +3 -0
  217. angr/engines/soot/engine.py +13 -13
  218. angr/engines/soot/expressions/__init__.py +33 -0
  219. angr/engines/soot/expressions/arrayref.py +1 -1
  220. angr/engines/soot/expressions/base.py +1 -1
  221. angr/engines/soot/expressions/cast.py +1 -1
  222. angr/engines/soot/expressions/condition.py +2 -2
  223. angr/engines/soot/expressions/constants.py +1 -1
  224. angr/engines/soot/expressions/invoke.py +2 -2
  225. angr/engines/soot/expressions/new.py +1 -1
  226. angr/engines/soot/expressions/newArray.py +1 -1
  227. angr/engines/soot/expressions/newMultiArray.py +1 -1
  228. angr/engines/soot/statements/__init__.py +16 -0
  229. angr/engines/soot/statements/assign.py +1 -1
  230. angr/engines/soot/statements/base.py +3 -3
  231. angr/engines/soot/statements/goto.py +1 -1
  232. angr/engines/soot/statements/if_.py +1 -1
  233. angr/engines/soot/statements/throw.py +1 -1
  234. angr/engines/soot/values/__init__.py +14 -0
  235. angr/engines/soot/values/arrayref.py +1 -1
  236. angr/engines/soot/values/instancefieldref.py +1 -1
  237. angr/engines/soot/values/staticfieldref.py +1 -1
  238. angr/engines/soot/values/thisref.py +2 -2
  239. angr/engines/successors.py +8 -8
  240. angr/engines/syscall.py +1 -1
  241. angr/engines/unicorn.py +13 -13
  242. angr/engines/vex/__init__.py +18 -3
  243. angr/engines/vex/claripy/__init__.py +3 -0
  244. angr/engines/vex/claripy/ccall.py +1 -2
  245. angr/engines/vex/claripy/datalayer.py +3 -3
  246. angr/engines/vex/heavy/__init__.py +11 -1
  247. angr/engines/vex/heavy/heavy.py +8 -8
  248. angr/engines/vex/heavy/inspect.py +2 -2
  249. angr/engines/vex/heavy/resilience.py +2 -2
  250. angr/engines/vex/heavy/super_fastpath.py +3 -3
  251. angr/engines/vex/lifter.py +5 -5
  252. angr/engines/vex/light/__init__.py +7 -0
  253. angr/engines/vex/light/light.py +2 -2
  254. angr/engines/vex/light/slicing.py +1 -1
  255. angr/errors.py +4 -4
  256. angr/exploration_techniques/__init__.py +0 -1
  257. angr/exploration_techniques/bucketizer.py +9 -10
  258. angr/exploration_techniques/common.py +2 -2
  259. angr/exploration_techniques/director.py +4 -4
  260. angr/exploration_techniques/driller_core.py +2 -3
  261. angr/exploration_techniques/explorer.py +3 -3
  262. angr/exploration_techniques/loop_seer.py +3 -3
  263. angr/exploration_techniques/oppologist.py +3 -3
  264. angr/exploration_techniques/slicecutor.py +1 -1
  265. angr/exploration_techniques/spiller.py +1 -1
  266. angr/exploration_techniques/suggestions.py +6 -6
  267. angr/exploration_techniques/symbion.py +0 -1
  268. angr/exploration_techniques/threading.py +2 -2
  269. angr/exploration_techniques/tracer.py +3 -3
  270. angr/exploration_techniques/veritesting.py +1 -1
  271. angr/flirt/__init__.py +0 -1
  272. angr/{knowledge_base/knowledge_base.py → knowledge_base.py} +13 -15
  273. angr/knowledge_plugins/__init__.py +23 -1
  274. angr/knowledge_plugins/callsite_prototypes.py +2 -2
  275. angr/knowledge_plugins/cfg/cfg_manager.py +1 -1
  276. angr/knowledge_plugins/cfg/cfg_model.py +8 -7
  277. angr/knowledge_plugins/cfg/indirect_jump.py +1 -1
  278. angr/knowledge_plugins/cfg/memory_data.py +3 -2
  279. angr/knowledge_plugins/debug_variables.py +2 -2
  280. angr/knowledge_plugins/functions/__init__.py +6 -0
  281. angr/knowledge_plugins/functions/function.py +21 -16
  282. angr/knowledge_plugins/functions/function_manager.py +2 -2
  283. angr/knowledge_plugins/functions/function_parser.py +3 -3
  284. angr/knowledge_plugins/functions/soot_function.py +2 -2
  285. angr/knowledge_plugins/key_definitions/atoms.py +2 -2
  286. angr/knowledge_plugins/key_definitions/definition.py +3 -3
  287. angr/knowledge_plugins/key_definitions/key_definition_manager.py +2 -2
  288. angr/knowledge_plugins/key_definitions/uses.py +2 -2
  289. angr/knowledge_plugins/propagations/__init__.py +7 -0
  290. angr/knowledge_plugins/propagations/prop_value.py +1 -1
  291. angr/knowledge_plugins/{structured_code/manager.py → structured_code.py} +6 -3
  292. angr/knowledge_plugins/types.py +1 -1
  293. angr/knowledge_plugins/variables/__init__.py +6 -0
  294. angr/knowledge_plugins/variables/variable_access.py +3 -3
  295. angr/knowledge_plugins/variables/variable_manager.py +7 -7
  296. angr/knowledge_plugins/xrefs/__init__.py +9 -1
  297. angr/knowledge_plugins/xrefs/xref.py +5 -5
  298. angr/knowledge_plugins/xrefs/xref_manager.py +3 -3
  299. angr/misc/__init__.py +12 -2
  300. angr/misc/loggers.py +2 -2
  301. angr/misc/telemetry.py +54 -0
  302. angr/procedures/__init__.py +9 -0
  303. angr/procedures/cgc/receive.py +2 -2
  304. angr/procedures/cgc/transmit.py +1 -1
  305. angr/procedures/definitions/__init__.py +8 -8
  306. angr/procedures/definitions/cgc.py +1 -1
  307. angr/procedures/definitions/glibc.py +2 -15
  308. angr/procedures/definitions/gnulib.py +2 -6
  309. angr/procedures/definitions/libstdcpp.py +2 -2
  310. angr/procedures/definitions/linux_kernel.py +2 -3
  311. angr/procedures/definitions/linux_loader.py +1 -1
  312. angr/procedures/definitions/msvcr.py +2 -2
  313. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +3 -18
  314. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +3 -18
  315. angr/procedures/definitions/wdk_clfs.py +3 -18
  316. angr/procedures/definitions/wdk_fltmgr.py +3 -18
  317. angr/procedures/definitions/wdk_fwpkclnt.py +3 -18
  318. angr/procedures/definitions/wdk_fwpuclnt.py +3 -18
  319. angr/procedures/definitions/wdk_gdi32.py +3 -18
  320. angr/procedures/definitions/wdk_hal.py +3 -18
  321. angr/procedures/definitions/wdk_ksecdd.py +3 -18
  322. angr/procedures/definitions/wdk_ndis.py +3 -18
  323. angr/procedures/definitions/wdk_ntoskrnl.py +3 -18
  324. angr/procedures/definitions/wdk_offreg.py +3 -18
  325. angr/procedures/definitions/wdk_pshed.py +3 -18
  326. angr/procedures/definitions/wdk_secur32.py +3 -18
  327. angr/procedures/definitions/wdk_vhfum.py +3 -18
  328. angr/procedures/definitions/win32_aclui.py +3 -18
  329. angr/procedures/definitions/win32_activeds.py +3 -18
  330. angr/procedures/definitions/win32_advapi32.py +3 -18
  331. angr/procedures/definitions/win32_advpack.py +3 -18
  332. angr/procedures/definitions/win32_amsi.py +3 -18
  333. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +3 -18
  334. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +3 -18
  335. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +3 -18
  336. angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +3 -18
  337. angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +3 -18
  338. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +3 -18
  339. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +3 -18
  340. angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +3 -18
  341. angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +3 -18
  342. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +3 -18
  343. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +3 -18
  344. angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +3 -18
  345. angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +3 -18
  346. angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +3 -18
  347. angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +3 -18
  348. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +3 -18
  349. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +3 -18
  350. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +3 -18
  351. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +3 -18
  352. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +3 -18
  353. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +3 -18
  354. angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +3 -18
  355. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +3 -18
  356. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +3 -18
  357. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +3 -18
  358. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +3 -18
  359. angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +3 -18
  360. angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +3 -18
  361. angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +3 -18
  362. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +3 -18
  363. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +3 -18
  364. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +3 -18
  365. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +3 -18
  366. angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +3 -18
  367. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +3 -3
  368. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +3 -3
  369. angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +3 -3
  370. angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +3 -3
  371. angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +3 -3
  372. angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +3 -3
  373. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +3 -3
  374. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +3 -3
  375. angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +3 -18
  376. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +3 -18
  377. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +3 -18
  378. angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +3 -18
  379. angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +3 -18
  380. angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +3 -18
  381. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +3 -18
  382. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +3 -18
  383. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +3 -18
  384. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +3 -18
  385. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +3 -18
  386. angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +3 -18
  387. angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +3 -18
  388. angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +3 -18
  389. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +3 -18
  390. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +3 -18
  391. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +3 -18
  392. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +3 -18
  393. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +3 -18
  394. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +3 -18
  395. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +3 -18
  396. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +3 -18
  397. angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +3 -3
  398. angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +3 -18
  399. angr/procedures/definitions/win32_apphelp.py +3 -18
  400. angr/procedures/definitions/win32_authz.py +3 -18
  401. angr/procedures/definitions/win32_avicap32.py +3 -18
  402. angr/procedures/definitions/win32_avifil32.py +3 -18
  403. angr/procedures/definitions/win32_avrt.py +3 -18
  404. angr/procedures/definitions/win32_bcp47mrm.py +3 -18
  405. angr/procedures/definitions/win32_bcrypt.py +3 -18
  406. angr/procedures/definitions/win32_bcryptprimitives.py +3 -18
  407. angr/procedures/definitions/win32_bluetoothapis.py +3 -18
  408. angr/procedures/definitions/win32_bthprops.py +3 -3
  409. angr/procedures/definitions/win32_bthprops_cpl.py +3 -18
  410. angr/procedures/definitions/win32_cabinet.py +3 -18
  411. angr/procedures/definitions/win32_certadm.py +3 -18
  412. angr/procedures/definitions/win32_certpoleng.py +3 -18
  413. angr/procedures/definitions/win32_cfgmgr32.py +3 -18
  414. angr/procedures/definitions/win32_chakra.py +3 -18
  415. angr/procedures/definitions/win32_cldapi.py +3 -18
  416. angr/procedures/definitions/win32_clfsw32.py +3 -18
  417. angr/procedures/definitions/win32_clusapi.py +3 -18
  418. angr/procedures/definitions/win32_comctl32.py +3 -18
  419. angr/procedures/definitions/win32_comdlg32.py +3 -18
  420. angr/procedures/definitions/win32_compstui.py +3 -18
  421. angr/procedures/definitions/win32_computecore.py +3 -18
  422. angr/procedures/definitions/win32_computenetwork.py +3 -18
  423. angr/procedures/definitions/win32_computestorage.py +3 -18
  424. angr/procedures/definitions/win32_comsvcs.py +3 -18
  425. angr/procedures/definitions/win32_coremessaging.py +3 -3
  426. angr/procedures/definitions/win32_credui.py +3 -18
  427. angr/procedures/definitions/win32_crypt32.py +3 -18
  428. angr/procedures/definitions/win32_cryptnet.py +3 -18
  429. angr/procedures/definitions/win32_cryptui.py +3 -18
  430. angr/procedures/definitions/win32_cryptxml.py +3 -18
  431. angr/procedures/definitions/win32_cscapi.py +3 -18
  432. angr/procedures/definitions/win32_d2d1.py +3 -18
  433. angr/procedures/definitions/win32_d3d10.py +3 -18
  434. angr/procedures/definitions/win32_d3d10_1.py +3 -18
  435. angr/procedures/definitions/win32_d3d11.py +3 -18
  436. angr/procedures/definitions/win32_d3d12.py +3 -18
  437. angr/procedures/definitions/win32_d3d9.py +3 -18
  438. angr/procedures/definitions/win32_d3dcompiler_47.py +3 -18
  439. angr/procedures/definitions/win32_d3dcsx.py +3 -18
  440. angr/procedures/definitions/win32_davclnt.py +3 -18
  441. angr/procedures/definitions/win32_dbgeng.py +3 -18
  442. angr/procedures/definitions/win32_dbghelp.py +3 -18
  443. angr/procedures/definitions/win32_dbgmodel.py +3 -18
  444. angr/procedures/definitions/win32_dciman32.py +3 -18
  445. angr/procedures/definitions/win32_dcomp.py +3 -18
  446. angr/procedures/definitions/win32_ddraw.py +3 -18
  447. angr/procedures/definitions/win32_deviceaccess.py +3 -18
  448. angr/procedures/definitions/win32_dflayout.py +3 -18
  449. angr/procedures/definitions/win32_dhcpcsvc.py +3 -18
  450. angr/procedures/definitions/win32_dhcpcsvc6.py +3 -18
  451. angr/procedures/definitions/win32_dhcpsapi.py +3 -18
  452. angr/procedures/definitions/win32_diagnosticdataquery.py +3 -18
  453. angr/procedures/definitions/win32_dinput8.py +3 -18
  454. angr/procedures/definitions/win32_directml.py +3 -18
  455. angr/procedures/definitions/win32_dmprocessxmlfiltered.py +3 -18
  456. angr/procedures/definitions/win32_dnsapi.py +3 -18
  457. angr/procedures/definitions/win32_drt.py +3 -18
  458. angr/procedures/definitions/win32_drtprov.py +3 -18
  459. angr/procedures/definitions/win32_drttransport.py +3 -18
  460. angr/procedures/definitions/win32_dsound.py +3 -18
  461. angr/procedures/definitions/win32_dsparse.py +3 -18
  462. angr/procedures/definitions/win32_dsprop.py +3 -18
  463. angr/procedures/definitions/win32_dssec.py +3 -18
  464. angr/procedures/definitions/win32_dsuiext.py +3 -18
  465. angr/procedures/definitions/win32_dwmapi.py +3 -18
  466. angr/procedures/definitions/win32_dwrite.py +3 -18
  467. angr/procedures/definitions/win32_dxcompiler.py +3 -18
  468. angr/procedures/definitions/win32_dxcore.py +3 -18
  469. angr/procedures/definitions/win32_dxgi.py +3 -18
  470. angr/procedures/definitions/win32_dxva2.py +3 -18
  471. angr/procedures/definitions/win32_eappcfg.py +3 -18
  472. angr/procedures/definitions/win32_eappprxy.py +3 -18
  473. angr/procedures/definitions/win32_efswrt.py +3 -18
  474. angr/procedures/definitions/win32_elscore.py +3 -18
  475. angr/procedures/definitions/win32_esent.py +3 -18
  476. angr/procedures/definitions/win32_evr.py +3 -18
  477. angr/procedures/definitions/win32_faultrep.py +3 -18
  478. angr/procedures/definitions/win32_fhsvcctl.py +3 -18
  479. angr/procedures/definitions/win32_firewallapi.py +3 -18
  480. angr/procedures/definitions/win32_fltlib.py +3 -18
  481. angr/procedures/definitions/win32_fontsub.py +3 -18
  482. angr/procedures/definitions/win32_forceinline.py +3 -18
  483. angr/procedures/definitions/win32_fwpuclnt.py +3 -18
  484. angr/procedures/definitions/win32_fxsutility.py +3 -18
  485. angr/procedures/definitions/win32_gdi32.py +3 -18
  486. angr/procedures/definitions/win32_gdiplus.py +3 -18
  487. angr/procedures/definitions/win32_glu32.py +3 -18
  488. angr/procedures/definitions/win32_gpedit.py +3 -18
  489. angr/procedures/definitions/win32_hhctrl_ocx.py +3 -18
  490. angr/procedures/definitions/win32_hid.py +3 -18
  491. angr/procedures/definitions/win32_hlink.py +3 -18
  492. angr/procedures/definitions/win32_hrtfapo.py +3 -18
  493. angr/procedures/definitions/win32_httpapi.py +3 -18
  494. angr/procedures/definitions/win32_icm32.py +3 -18
  495. angr/procedures/definitions/win32_icmui.py +3 -18
  496. angr/procedures/definitions/win32_icu.py +3 -18
  497. angr/procedures/definitions/win32_ieframe.py +3 -18
  498. angr/procedures/definitions/win32_imagehlp.py +3 -18
  499. angr/procedures/definitions/win32_imgutil.py +3 -18
  500. angr/procedures/definitions/win32_imm32.py +3 -18
  501. angr/procedures/definitions/win32_infocardapi.py +3 -18
  502. angr/procedures/definitions/win32_inkobjcore.py +3 -18
  503. angr/procedures/definitions/win32_iphlpapi.py +3 -18
  504. angr/procedures/definitions/win32_iscsidsc.py +3 -18
  505. angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +3 -18
  506. angr/procedures/definitions/win32_kernel32.py +3 -18
  507. angr/procedures/definitions/win32_kernelbase.py +3 -18
  508. angr/procedures/definitions/win32_keycredmgr.py +3 -18
  509. angr/procedures/definitions/win32_ksproxy_ax.py +3 -18
  510. angr/procedures/definitions/win32_ksuser.py +3 -18
  511. angr/procedures/definitions/win32_ktmw32.py +3 -18
  512. angr/procedures/definitions/win32_licenseprotection.py +3 -18
  513. angr/procedures/definitions/win32_loadperf.py +3 -18
  514. angr/procedures/definitions/win32_magnification.py +3 -18
  515. angr/procedures/definitions/win32_mapi32.py +3 -18
  516. angr/procedures/definitions/win32_mdmlocalmanagement.py +3 -18
  517. angr/procedures/definitions/win32_mdmregistration.py +3 -18
  518. angr/procedures/definitions/win32_mf.py +3 -18
  519. angr/procedures/definitions/win32_mfcore.py +3 -18
  520. angr/procedures/definitions/win32_mfplat.py +3 -18
  521. angr/procedures/definitions/win32_mfplay.py +3 -18
  522. angr/procedures/definitions/win32_mfreadwrite.py +3 -18
  523. angr/procedures/definitions/win32_mfsensorgroup.py +3 -18
  524. angr/procedures/definitions/win32_mfsrcsnk.py +3 -18
  525. angr/procedures/definitions/win32_mgmtapi.py +3 -18
  526. angr/procedures/definitions/win32_mi.py +3 -18
  527. angr/procedures/definitions/win32_mmdevapi.py +3 -18
  528. angr/procedures/definitions/win32_mpr.py +3 -18
  529. angr/procedures/definitions/win32_mprapi.py +3 -18
  530. angr/procedures/definitions/win32_mqrt.py +3 -18
  531. angr/procedures/definitions/win32_mrmsupport.py +3 -18
  532. angr/procedures/definitions/win32_msacm32.py +3 -18
  533. angr/procedures/definitions/win32_msajapi.py +3 -18
  534. angr/procedures/definitions/win32_mscms.py +3 -18
  535. angr/procedures/definitions/win32_mscoree.py +3 -18
  536. angr/procedures/definitions/win32_msctfmonitor.py +3 -18
  537. angr/procedures/definitions/win32_msdelta.py +3 -18
  538. angr/procedures/definitions/win32_msdmo.py +3 -18
  539. angr/procedures/definitions/win32_msdrm.py +3 -18
  540. angr/procedures/definitions/win32_msi.py +3 -18
  541. angr/procedures/definitions/win32_msimg32.py +3 -18
  542. angr/procedures/definitions/win32_mspatcha.py +3 -18
  543. angr/procedures/definitions/win32_mspatchc.py +3 -18
  544. angr/procedures/definitions/win32_msports.py +3 -18
  545. angr/procedures/definitions/win32_msrating.py +3 -18
  546. angr/procedures/definitions/win32_mssign32.py +3 -18
  547. angr/procedures/definitions/win32_mstask.py +3 -18
  548. angr/procedures/definitions/win32_msvfw32.py +3 -18
  549. angr/procedures/definitions/win32_mswsock.py +3 -18
  550. angr/procedures/definitions/win32_mtxdm.py +3 -18
  551. angr/procedures/definitions/win32_ncrypt.py +3 -18
  552. angr/procedures/definitions/win32_ndfapi.py +3 -18
  553. angr/procedures/definitions/win32_netapi32.py +3 -18
  554. angr/procedures/definitions/win32_netsh.py +3 -18
  555. angr/procedures/definitions/win32_netshell.py +3 -18
  556. angr/procedures/definitions/win32_newdev.py +3 -18
  557. angr/procedures/definitions/win32_ninput.py +3 -18
  558. angr/procedures/definitions/win32_normaliz.py +3 -18
  559. angr/procedures/definitions/win32_ntdll.py +3 -18
  560. angr/procedures/definitions/win32_ntdllk.py +3 -18
  561. angr/procedures/definitions/win32_ntdsapi.py +3 -18
  562. angr/procedures/definitions/win32_ntlanman.py +3 -18
  563. angr/procedures/definitions/win32_odbc32.py +3 -18
  564. angr/procedures/definitions/win32_odbcbcp.py +3 -18
  565. angr/procedures/definitions/win32_ole32.py +3 -18
  566. angr/procedures/definitions/win32_oleacc.py +3 -18
  567. angr/procedures/definitions/win32_oleaut32.py +3 -18
  568. angr/procedures/definitions/win32_oledlg.py +3 -18
  569. angr/procedures/definitions/win32_ondemandconnroutehelper.py +3 -18
  570. angr/procedures/definitions/win32_opengl32.py +3 -18
  571. angr/procedures/definitions/win32_opmxbox.py +3 -18
  572. angr/procedures/definitions/win32_p2p.py +3 -18
  573. angr/procedures/definitions/win32_p2pgraph.py +3 -18
  574. angr/procedures/definitions/win32_pdh.py +3 -18
  575. angr/procedures/definitions/win32_peerdist.py +3 -18
  576. angr/procedures/definitions/win32_powrprof.py +3 -18
  577. angr/procedures/definitions/win32_prntvpt.py +3 -18
  578. angr/procedures/definitions/win32_projectedfslib.py +3 -18
  579. angr/procedures/definitions/win32_propsys.py +3 -18
  580. angr/procedures/definitions/win32_psapi.py +3 -18
  581. angr/procedures/definitions/win32_quartz.py +3 -18
  582. angr/procedures/definitions/win32_query.py +3 -18
  583. angr/procedures/definitions/win32_qwave.py +3 -18
  584. angr/procedures/definitions/win32_rasapi32.py +3 -18
  585. angr/procedures/definitions/win32_rasdlg.py +3 -18
  586. angr/procedures/definitions/win32_resutils.py +3 -18
  587. angr/procedures/definitions/win32_rometadata.py +3 -3
  588. angr/procedures/definitions/win32_rpcns4.py +3 -18
  589. angr/procedures/definitions/win32_rpcproxy.py +3 -18
  590. angr/procedures/definitions/win32_rpcrt4.py +3 -18
  591. angr/procedures/definitions/win32_rstrtmgr.py +3 -18
  592. angr/procedures/definitions/win32_rtm.py +3 -18
  593. angr/procedures/definitions/win32_rtutils.py +3 -18
  594. angr/procedures/definitions/win32_rtworkq.py +3 -18
  595. angr/procedures/definitions/win32_sas.py +3 -18
  596. angr/procedures/definitions/win32_scarddlg.py +3 -18
  597. angr/procedures/definitions/win32_schannel.py +3 -18
  598. angr/procedures/definitions/win32_sechost.py +3 -18
  599. angr/procedures/definitions/win32_secur32.py +3 -18
  600. angr/procedures/definitions/win32_sensapi.py +3 -18
  601. angr/procedures/definitions/win32_sensorsutilsv2.py +3 -18
  602. angr/procedures/definitions/win32_setupapi.py +3 -18
  603. angr/procedures/definitions/win32_sfc.py +3 -18
  604. angr/procedures/definitions/win32_shdocvw.py +3 -18
  605. angr/procedures/definitions/win32_shell32.py +3 -18
  606. angr/procedures/definitions/win32_shlwapi.py +3 -18
  607. angr/procedures/definitions/win32_slc.py +3 -18
  608. angr/procedures/definitions/win32_slcext.py +3 -18
  609. angr/procedures/definitions/win32_slwga.py +3 -18
  610. angr/procedures/definitions/win32_snmpapi.py +3 -18
  611. angr/procedures/definitions/win32_spoolss.py +3 -18
  612. angr/procedures/definitions/win32_srclient.py +3 -18
  613. angr/procedures/definitions/win32_srpapi.py +3 -18
  614. angr/procedures/definitions/win32_sspicli.py +3 -18
  615. angr/procedures/definitions/win32_sti.py +3 -18
  616. angr/procedures/definitions/win32_t2embed.py +3 -18
  617. angr/procedures/definitions/win32_tapi32.py +3 -18
  618. angr/procedures/definitions/win32_tbs.py +3 -18
  619. angr/procedures/definitions/win32_tdh.py +3 -18
  620. angr/procedures/definitions/win32_tokenbinding.py +3 -18
  621. angr/procedures/definitions/win32_traffic.py +3 -18
  622. angr/procedures/definitions/win32_txfw32.py +3 -18
  623. angr/procedures/definitions/win32_ualapi.py +3 -18
  624. angr/procedures/definitions/win32_uiautomationcore.py +3 -18
  625. angr/procedures/definitions/win32_urlmon.py +3 -18
  626. angr/procedures/definitions/win32_user32.py +4 -19
  627. angr/procedures/definitions/win32_userenv.py +3 -18
  628. angr/procedures/definitions/win32_usp10.py +3 -18
  629. angr/procedures/definitions/win32_uxtheme.py +3 -18
  630. angr/procedures/definitions/win32_verifier.py +3 -18
  631. angr/procedures/definitions/win32_version.py +3 -18
  632. angr/procedures/definitions/win32_vertdll.py +3 -18
  633. angr/procedures/definitions/win32_virtdisk.py +3 -18
  634. angr/procedures/definitions/win32_vmdevicehost.py +3 -18
  635. angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +3 -18
  636. angr/procedures/definitions/win32_vssapi.py +3 -18
  637. angr/procedures/definitions/win32_wcmapi.py +3 -18
  638. angr/procedures/definitions/win32_wdsbp.py +3 -18
  639. angr/procedures/definitions/win32_wdsclientapi.py +3 -18
  640. angr/procedures/definitions/win32_wdsmc.py +3 -18
  641. angr/procedures/definitions/win32_wdspxe.py +3 -18
  642. angr/procedures/definitions/win32_wdstptc.py +3 -18
  643. angr/procedures/definitions/win32_webauthn.py +3 -18
  644. angr/procedures/definitions/win32_webservices.py +3 -18
  645. angr/procedures/definitions/win32_websocket.py +3 -18
  646. angr/procedures/definitions/win32_wecapi.py +3 -18
  647. angr/procedures/definitions/win32_wer.py +3 -18
  648. angr/procedures/definitions/win32_wevtapi.py +3 -18
  649. angr/procedures/definitions/win32_winbio.py +3 -18
  650. angr/procedures/definitions/win32_windows_ai_machinelearning.py +3 -18
  651. angr/procedures/definitions/win32_windows_data_pdf.py +3 -3
  652. angr/procedures/definitions/win32_windows_media_mediacontrol.py +3 -18
  653. angr/procedures/definitions/win32_windows_networking.py +3 -18
  654. angr/procedures/definitions/win32_windows_ui_xaml.py +3 -18
  655. angr/procedures/definitions/win32_windowscodecs.py +3 -18
  656. angr/procedures/definitions/win32_winfax.py +3 -18
  657. angr/procedures/definitions/win32_winhttp.py +3 -18
  658. angr/procedures/definitions/win32_winhvemulation.py +3 -18
  659. angr/procedures/definitions/win32_winhvplatform.py +3 -18
  660. angr/procedures/definitions/win32_wininet.py +3 -18
  661. angr/procedures/definitions/win32_winml.py +3 -18
  662. angr/procedures/definitions/win32_winmm.py +3 -18
  663. angr/procedures/definitions/win32_winscard.py +3 -18
  664. angr/procedures/definitions/win32_winspool.py +3 -3
  665. angr/procedures/definitions/win32_winspool_drv.py +3 -18
  666. angr/procedures/definitions/win32_wintrust.py +3 -18
  667. angr/procedures/definitions/win32_winusb.py +3 -18
  668. angr/procedures/definitions/win32_wlanapi.py +3 -18
  669. angr/procedures/definitions/win32_wlanui.py +3 -18
  670. angr/procedures/definitions/win32_wldap32.py +3 -18
  671. angr/procedures/definitions/win32_wldp.py +3 -18
  672. angr/procedures/definitions/win32_wmvcore.py +3 -18
  673. angr/procedures/definitions/win32_wnvapi.py +3 -18
  674. angr/procedures/definitions/win32_wofutil.py +3 -18
  675. angr/procedures/definitions/win32_ws2_32.py +3 -18
  676. angr/procedures/definitions/win32_wscapi.py +3 -18
  677. angr/procedures/definitions/win32_wsclient.py +3 -18
  678. angr/procedures/definitions/win32_wsdapi.py +3 -18
  679. angr/procedures/definitions/win32_wsmsvc.py +3 -18
  680. angr/procedures/definitions/win32_wsnmp32.py +3 -18
  681. angr/procedures/definitions/win32_wtsapi32.py +3 -18
  682. angr/procedures/definitions/win32_xaudio2_8.py +3 -18
  683. angr/procedures/definitions/win32_xinput1_4.py +3 -18
  684. angr/procedures/definitions/win32_xinputuap.py +3 -3
  685. angr/procedures/definitions/win32_xmllite.py +3 -18
  686. angr/procedures/definitions/win32_xolehlp.py +3 -18
  687. angr/procedures/definitions/win32_xpsprint.py +3 -18
  688. angr/procedures/glibc/scanf.py +2 -2
  689. angr/procedures/glibc/sscanf.py +1 -1
  690. angr/procedures/java/__init__.py +6 -3
  691. angr/procedures/java/unconstrained.py +4 -4
  692. angr/procedures/java_io/read.py +1 -1
  693. angr/procedures/java_io/write.py +1 -1
  694. angr/procedures/java_jni/__init__.py +25 -17
  695. angr/procedures/java_jni/array_operations.py +2 -2
  696. angr/procedures/java_jni/field_access.py +3 -3
  697. angr/procedures/java_jni/method_calls.py +2 -2
  698. angr/procedures/java_jni/object_operations.py +1 -1
  699. angr/procedures/java_jni/string_operations.py +2 -2
  700. angr/procedures/java_lang/character.py +1 -1
  701. angr/procedures/java_lang/double.py +2 -2
  702. angr/procedures/java_lang/exit.py +1 -1
  703. angr/procedures/java_lang/getsimplename.py +1 -1
  704. angr/procedures/java_lang/integer.py +2 -2
  705. angr/procedures/java_lang/load_library.py +1 -1
  706. angr/procedures/java_lang/math.py +1 -1
  707. angr/procedures/java_lang/string.py +4 -4
  708. angr/procedures/java_lang/stringbuilder.py +2 -2
  709. angr/procedures/java_lang/system.py +1 -1
  710. angr/procedures/java_util/collection.py +2 -2
  711. angr/procedures/java_util/iterator.py +2 -2
  712. angr/procedures/java_util/list.py +3 -3
  713. angr/procedures/java_util/map.py +3 -3
  714. angr/procedures/java_util/random.py +1 -1
  715. angr/procedures/java_util/scanner_nextline.py +3 -3
  716. angr/procedures/libc/fseek.py +1 -1
  717. angr/procedures/libc/memcpy.py +1 -1
  718. angr/procedures/libc/strlen.py +12 -4
  719. angr/procedures/libc/strncmp.py +9 -4
  720. angr/procedures/linux_kernel/iovec.py +3 -3
  721. angr/procedures/linux_kernel/mmap.py +1 -1
  722. angr/procedures/linux_kernel/stat.py +1 -1
  723. angr/procedures/linux_kernel/sysinfo.py +1 -1
  724. angr/procedures/linux_kernel/vsyscall.py +1 -1
  725. angr/procedures/posix/bzero.py +1 -1
  726. angr/procedures/posix/mmap.py +1 -1
  727. angr/procedures/posix/send.py +1 -1
  728. angr/procedures/posix/syslog.py +2 -3
  729. angr/procedures/procedure_dict.py +2 -2
  730. angr/procedures/stubs/Redirect.py +1 -1
  731. angr/procedures/stubs/UserHook.py +1 -1
  732. angr/procedures/stubs/format_parser.py +6 -6
  733. angr/procedures/tracer/random.py +1 -1
  734. angr/procedures/tracer/receive.py +1 -1
  735. angr/procedures/tracer/transmit.py +1 -1
  736. angr/procedures/uclibc/__uClibc_main.py +1 -1
  737. angr/protos/__init__.py +8 -0
  738. angr/sim_options.py +0 -4
  739. angr/sim_procedure.py +5 -5
  740. angr/sim_state.py +21 -34
  741. angr/sim_type.py +51 -18
  742. angr/simos/__init__.py +12 -0
  743. angr/simos/cgc.py +5 -5
  744. angr/simos/javavm.py +18 -23
  745. angr/simos/linux.py +6 -6
  746. angr/simos/simos.py +12 -16
  747. angr/simos/userland.py +3 -3
  748. angr/simos/windows.py +6 -11
  749. angr/state_hierarchy.py +1 -1
  750. angr/state_plugins/__init__.py +84 -28
  751. angr/state_plugins/callstack.py +1 -1
  752. angr/state_plugins/concrete.py +3 -4
  753. angr/state_plugins/filesystem.py +3 -3
  754. angr/state_plugins/gdb.py +1 -1
  755. angr/state_plugins/heap/__init__.py +14 -5
  756. angr/state_plugins/heap/heap_base.py +5 -4
  757. angr/state_plugins/heap/heap_brk.py +1 -1
  758. angr/state_plugins/heap/heap_freelist.py +1 -1
  759. angr/state_plugins/heap/heap_ptmalloc.py +2 -20
  760. angr/state_plugins/heap/utils.py +1 -1
  761. angr/state_plugins/history.py +2 -2
  762. angr/state_plugins/javavm_classloader.py +3 -3
  763. angr/state_plugins/jni_references.py +1 -1
  764. angr/state_plugins/light_registers.py +3 -3
  765. angr/state_plugins/log.py +1 -1
  766. angr/state_plugins/plugin.py +3 -2
  767. angr/state_plugins/posix.py +3 -3
  768. angr/state_plugins/preconstrainer.py +6 -6
  769. angr/state_plugins/scratch.py +4 -4
  770. angr/state_plugins/sim_action_object.py +1 -1
  771. angr/state_plugins/solver.py +15 -19
  772. angr/state_plugins/symbolizer.py +2 -3
  773. angr/state_plugins/trace_additions.py +8 -8
  774. angr/state_plugins/uc_manager.py +1 -1
  775. angr/state_plugins/unicorn_engine.py +4 -4
  776. angr/state_plugins/view.py +1 -1
  777. angr/storage/__init__.py +9 -3
  778. angr/storage/file.py +16 -16
  779. angr/storage/memory_mixins/__init__.py +88 -6
  780. angr/storage/memory_mixins/actions_mixin.py +3 -3
  781. angr/storage/memory_mixins/address_concretization_mixin.py +6 -6
  782. angr/storage/memory_mixins/bvv_conversion_mixin.py +1 -1
  783. angr/storage/memory_mixins/clouseau_mixin.py +1 -1
  784. angr/storage/memory_mixins/convenient_mappings_mixin.py +8 -10
  785. angr/storage/memory_mixins/default_filler_mixin.py +3 -3
  786. angr/storage/memory_mixins/hex_dumper_mixin.py +1 -1
  787. angr/storage/memory_mixins/{javavm_memory/javavm_memory_mixin.py → javavm_memory_mixin.py} +15 -12
  788. angr/storage/memory_mixins/{keyvalue_memory/keyvalue_memory_mixin.py → keyvalue_memory_mixin.py} +11 -6
  789. angr/storage/memory_mixins/multi_value_merger_mixin.py +5 -5
  790. angr/storage/memory_mixins/name_resolution_mixin.py +2 -2
  791. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +1 -1
  792. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -1
  793. angr/storage/memory_mixins/paged_memory/pages/__init__.py +15 -0
  794. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +1 -1
  795. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +2 -2
  796. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +2 -2
  797. angr/storage/memory_mixins/regioned_memory/__init__.py +10 -0
  798. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +1 -1
  799. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -1
  800. angr/storage/memory_mixins/regioned_memory/region_data.py +2 -2
  801. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +1 -1
  802. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +4 -4
  803. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +7 -19
  804. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +1 -1
  805. angr/storage/memory_mixins/simple_interface_mixin.py +1 -1
  806. angr/storage/memory_mixins/simplification_mixin.py +1 -1
  807. angr/storage/memory_mixins/size_resolution_mixin.py +2 -2
  808. angr/storage/memory_mixins/slotted_memory.py +1 -1
  809. angr/storage/memory_mixins/smart_find_mixin.py +3 -3
  810. angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
  811. angr/storage/memory_mixins/unwrapper_mixin.py +1 -1
  812. angr/storage/memory_object.py +8 -10
  813. angr/utils/__init__.py +12 -0
  814. angr/utils/enums_conv.py +1 -1
  815. angr/utils/library.py +2 -2
  816. angr/utils/mp.py +1 -1
  817. angr/utils/timing.py +30 -18
  818. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/METADATA +8 -7
  819. angr-9.2.120.dist-info/RECORD +1340 -0
  820. angr/analyses/s_liveness/__init__.py +0 -2
  821. angr/analyses/s_propagator/__init__.py +0 -2
  822. angr/analyses/s_reaching_definitions/s_rda.py +0 -479
  823. angr/knowledge_base/__init__.py +0 -2
  824. angr/knowledge_plugins/structured_code/__init__.py +0 -2
  825. angr/knowledge_plugins/sync/__init__.py +0 -2
  826. angr/knowledge_plugins/sync/sync_controller.py +0 -324
  827. angr/misc/range.py +0 -24
  828. angr/misc/weakpatch.py +0 -59
  829. angr/storage/memory_mixins/javavm_memory/__init__.py +0 -2
  830. angr/storage/memory_mixins/keyvalue_memory/__init__.py +0 -2
  831. angr/storage/pcap.py +0 -65
  832. angr/utils/typing.py +0 -18
  833. angr-9.2.118.dist-info/RECORD +0 -1344
  834. /angr/analyses/{s_liveness/s_liveness.py → s_liveness.py} +0 -0
  835. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/LICENSE +0 -0
  836. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/WHEEL +0 -0
  837. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/entry_points.txt +0 -0
  838. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/top_level.txt +0 -0
@@ -10,7 +10,7 @@ from ailment.expression import VirtualVariable, Phi
10
10
  from angr.utils.ail import is_phi_assignment
11
11
  from angr.knowledge_plugins.functions import Function
12
12
  from angr.analyses import register_analysis
13
- from angr.analyses.decompiler.structuring.structurer_nodes import SequenceNode
13
+ from angr.analyses.decompiler.structuring.structurer_nodes import SequenceNode, LoopNode
14
14
  from angr.analyses.decompiler.sequence_walker import SequenceWalker
15
15
  from .dephication_base import DephicationBase
16
16
  from .rewriting_engine import SimEngineDephiRewriting
@@ -57,6 +57,8 @@ class SeqNodeRewriter(SequenceWalker):
57
57
  super().__init__(
58
58
  handlers={
59
59
  Block: self._handle_Block,
60
+ # statement handlers
61
+ Assignment: self._handle_Assignment,
60
62
  }
61
63
  )
62
64
 
@@ -68,6 +70,9 @@ class SeqNodeRewriter(SequenceWalker):
68
70
  # nothing is changed during rewriting
69
71
  self.output = seq_node
70
72
 
73
+ def _handle_Assignment(self, stmt: Assignment, **kwargs) -> Assignment: # pylint:disable=unused-argument
74
+ return self.engine._handle_Assignment(stmt)
75
+
71
76
  def _handle_Block(self, block: Block, **kwargs) -> Block | None: # pylint:disable=unused-argument
72
77
  self.engine.out_block = None
73
78
  self.engine.process(None, block=block)
@@ -78,6 +83,19 @@ class SeqNodeRewriter(SequenceWalker):
78
83
  return out
79
84
  return None
80
85
 
86
+ def _handle_Loop(self, node: LoopNode, **kwargs):
87
+ new_loop = super()._handle_Loop(node, **kwargs)
88
+ changed = False
89
+ if new_loop is None:
90
+ new_loop = node
91
+ else:
92
+ changed = True
93
+
94
+ if is_phi_assignment(new_loop.initializer):
95
+ changed = True
96
+ new_loop.initializer = None
97
+ return new_loop if changed else None
98
+
81
99
 
82
100
  class SeqNodeDephication(DephicationBase):
83
101
  """
@@ -16,7 +16,7 @@ class JumpTableEntryConditionRewriter(SequenceWalker):
16
16
 
17
17
  def _process_expr(self, expr):
18
18
  if expr in self._jumptable_entry_conds:
19
- return claripy.true
19
+ return claripy.true()
20
20
 
21
21
  new_args = []
22
22
  replaced = False
@@ -1,6 +1,5 @@
1
1
  # pylint:disable=import-outside-toplevel
2
2
  from __future__ import annotations
3
- from typing import Optional, Union
4
3
 
5
4
  from archinfo import Arch
6
5
 
@@ -33,33 +32,33 @@ from .call_stmt_rewriter import CallStatementRewriter
33
32
  from .duplication_reverter import DuplicationReverter
34
33
 
35
34
  # order matters!
36
- _all_optimization_passes = [
37
- (RegisterSaveAreaSimplifier, True),
38
- (StackCanarySimplifier, True),
39
- (WinStackCanarySimplifier, True),
40
- (BasePointerSaveSimplifier, True),
41
- (DivSimplifier, True),
42
- (MultiSimplifier, True),
43
- (ModSimplifier, True),
44
- (ConstantDereferencesSimplifier, True),
45
- (RetAddrSaveSimplifier, True),
46
- (X86GccGetPcSimplifier, True),
47
- (ITERegionConverter, True),
48
- (ITEExprConverter, True),
49
- (ExprOpSwapper, True),
50
- (ReturnDuplicatorHigh, True),
51
- (DeadblockRemover, True),
52
- (SwitchDefaultCaseDuplicator, True),
53
- (ConstPropOptReverter, True),
54
- (DuplicationReverter, True),
55
- (LoweredSwitchSimplifier, True),
56
- (ReturnDuplicatorLow, True),
57
- (ReturnDeduplicator, True),
58
- (CodeMotionOptimization, False),
59
- (CrossJumpReverter, True),
60
- (FlipBooleanCmp, True),
61
- (InlinedStringTransformationSimplifier, True),
62
- (CallStatementRewriter, True),
35
+ ALL_OPTIMIZATION_PASSES = [
36
+ RegisterSaveAreaSimplifier,
37
+ StackCanarySimplifier,
38
+ WinStackCanarySimplifier,
39
+ BasePointerSaveSimplifier,
40
+ DivSimplifier,
41
+ MultiSimplifier,
42
+ ModSimplifier,
43
+ ConstantDereferencesSimplifier,
44
+ RetAddrSaveSimplifier,
45
+ X86GccGetPcSimplifier,
46
+ ITERegionConverter,
47
+ ITEExprConverter,
48
+ ExprOpSwapper,
49
+ ReturnDuplicatorHigh,
50
+ DeadblockRemover,
51
+ SwitchDefaultCaseDuplicator,
52
+ ConstPropOptReverter,
53
+ DuplicationReverter,
54
+ LoweredSwitchSimplifier,
55
+ ReturnDuplicatorLow,
56
+ ReturnDeduplicator,
57
+ CodeMotionOptimization,
58
+ CrossJumpReverter,
59
+ FlipBooleanCmp,
60
+ InlinedStringTransformationSimplifier,
61
+ CallStatementRewriter,
63
62
  ]
64
63
 
65
64
  # these passes may duplicate code to remove gotos or improve the structure of the graph
@@ -78,7 +77,7 @@ def get_optimization_passes(arch, platform):
78
77
  platform = "windows" # sigh
79
78
 
80
79
  passes = []
81
- for pass_, _ in _all_optimization_passes:
80
+ for pass_ in ALL_OPTIMIZATION_PASSES:
82
81
  if (pass_.ARCHES is None or arch in pass_.ARCHES) and (
83
82
  pass_.PLATFORMS is None or platform is None or platform in pass_.PLATFORMS
84
83
  ):
@@ -87,28 +86,41 @@ def get_optimization_passes(arch, platform):
87
86
  return passes
88
87
 
89
88
 
90
- def get_default_optimization_passes(arch: Arch | str, platform: str | None, enable_opts=None, disable_opts=None):
91
- if isinstance(arch, Arch):
92
- arch = arch.name
93
-
94
- if platform is not None:
95
- platform = platform.lower()
96
- if platform == "win32":
97
- platform = "windows" # sigh
98
-
99
- passes = []
100
- enable_opts = enable_opts or []
101
- disable_opts = disable_opts or []
102
- for pass_, default in _all_optimization_passes:
103
- if (not default and pass_ not in enable_opts) or pass_ in disable_opts:
104
- continue
105
- if (pass_.ARCHES is None or arch in pass_.ARCHES) and (
106
- pass_.PLATFORMS is None or platform is None or platform in pass_.PLATFORMS
107
- ):
108
- passes.append(pass_)
109
-
110
- return passes
111
-
112
-
113
- def register_optimization_pass(opt_pass, enable_by_default: bool):
114
- _all_optimization_passes.append((opt_pass, enable_by_default))
89
+ def register_optimization_pass(opt_pass):
90
+ ALL_OPTIMIZATION_PASSES.append(opt_pass)
91
+
92
+
93
+ __all__ = (
94
+ "OptimizationPassStage",
95
+ "StackCanarySimplifier",
96
+ "BasePointerSaveSimplifier",
97
+ "ExprOpSwapper",
98
+ "ITERegionConverter",
99
+ "ITEExprConverter",
100
+ "LoweredSwitchSimplifier",
101
+ "MultiSimplifier",
102
+ "DivSimplifier",
103
+ "ModSimplifier",
104
+ "ReturnDuplicatorLow",
105
+ "ReturnDuplicatorHigh",
106
+ "ConstantDereferencesSimplifier",
107
+ "RegisterSaveAreaSimplifier",
108
+ "RetAddrSaveSimplifier",
109
+ "X86GccGetPcSimplifier",
110
+ "FlipBooleanCmp",
111
+ "ReturnDeduplicator",
112
+ "WinStackCanarySimplifier",
113
+ "CrossJumpReverter",
114
+ "CodeMotionOptimization",
115
+ "SwitchDefaultCaseDuplicator",
116
+ "DeadblockRemover",
117
+ "InlinedStringTransformationSimplifier",
118
+ "ConstPropOptReverter",
119
+ "CallStatementRewriter",
120
+ "DuplicationReverter",
121
+ "ALL_OPTIMIZATION_PASSES",
122
+ "DUPLICATING_OPTS",
123
+ "CONDENSING_OPTS",
124
+ "get_optimization_passes",
125
+ "register_optimization_pass",
126
+ )
@@ -7,7 +7,7 @@ from ailment import Block, AILBlockWalker
7
7
  from ailment.expression import Load, Const, BinaryOp, UnaryOp
8
8
  from ailment.statement import Statement, Assignment, Call, ConditionalJump
9
9
 
10
- from ..ailgraph_walker import AILGraphWalker
10
+ from angr.analyses.decompiler.ailgraph_walker import AILGraphWalker
11
11
  from .optimization_pass import OptimizationPass, OptimizationPassStage
12
12
 
13
13
  if TYPE_CHECKING:
@@ -11,9 +11,9 @@ from ailment.statement import Call, Statement, ConditionalJump, Assignment, Stor
11
11
  from ailment.expression import Convert, Register, Expression
12
12
 
13
13
  from .optimization_pass import OptimizationPass, OptimizationPassStage
14
- from ..structuring import SAILRStructurer, DreamStructurer
15
- from ....knowledge_plugins.key_definitions.atoms import MemoryLocation
16
- from ....knowledge_plugins.key_definitions.constants import OP_BEFORE
14
+ from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
15
+ from angr.knowledge_plugins.key_definitions.atoms import MemoryLocation
16
+ from angr.knowledge_plugins.key_definitions.constants import OP_BEFORE
17
17
 
18
18
 
19
19
  _l = logging.getLogger(__name__)
@@ -6,7 +6,7 @@ import logging
6
6
  import inspect
7
7
 
8
8
  from .optimization_pass import OptimizationPassStage, StructuringOptimizationPass
9
- from ..counters import AILBlockCallCounter
9
+ from angr.analyses.decompiler.counters import AILBlockCallCounter
10
10
 
11
11
  l = logging.getLogger(__name__)
12
12
 
@@ -1,2 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .duplication_reverter import DuplicationReverter
4
+
5
+ __all__ = ("DuplicationReverter",)
@@ -140,7 +140,7 @@ class AILMergeGraph:
140
140
  self.starts = []
141
141
  self.original_ends = []
142
142
 
143
- def create_conditionless_graph(self, starting_blocks: list[Block], graph_lcs):
143
+ def create_conditionless_graph(self, starting_blocks: list[Block], graph_lcs) -> dict[Block, Block] | None:
144
144
  # get all the original blocks (reverted from the LCS) and their split blocks.
145
145
  # split-blocks are blocks that need to be split at some stmt index to make the two blocks
146
146
  # equal across both graphs. At a highlevel, the first block in both matching graphs either need
@@ -180,9 +180,12 @@ class AILMergeGraph:
180
180
  # we create a new graph, full of the original blocks of the base, with blocks
181
181
  # that should be split replaced.
182
182
  # this graph is only the initial merge_graph needed, where only the blocks
183
- self.graph, update_blocks = self.clone_graph_replace_splits(
184
- nx.subgraph(self.original_graph, self.original_blocks[merge_base]), base_to_split
185
- )
183
+ subgraph = nx.subgraph(self.original_graph, self.original_blocks[merge_base])
184
+ # ensure all base blocks are within the subgraph
185
+ for block in base_to_split:
186
+ if block not in subgraph:
187
+ return None
188
+ self.graph, update_blocks = self.clone_graph_replace_splits(subgraph, base_to_split)
186
189
  self._update_all_split_refs(update_blocks)
187
190
  for update_block, new_block in update_blocks.items():
188
191
  if update_block in starting_blocks:
@@ -22,13 +22,13 @@ from .utils import (
22
22
  correct_jump_targets,
23
23
  deepcopy_ail_anyjump,
24
24
  )
25
- from ..optimization_pass import StructuringOptimizationPass
26
- from ...block_io_finder import BlockIOFinder
27
- from ...block_similarity import is_similar, index_of_similar_stmts, longest_ail_subseq
28
- from ...utils import to_ail_supergraph, remove_labels
29
- from ...counters.boolean_counter import BooleanCounter
30
- from .....knowledge_plugins.key_definitions.atoms import MemoryLocation
31
- from .....utils.graph import dominates
25
+ from angr.analyses.decompiler.optimization_passes.optimization_pass import StructuringOptimizationPass
26
+ from angr.analyses.decompiler.block_io_finder import BlockIOFinder
27
+ from angr.analyses.decompiler.block_similarity import is_similar, index_of_similar_stmts, longest_ail_subseq
28
+ from angr.analyses.decompiler.utils import to_ail_supergraph, remove_labels
29
+ from angr.analyses.decompiler.counters.boolean_counter import BooleanCounter
30
+ from angr.knowledge_plugins.key_definitions.atoms import MemoryLocation
31
+ from angr.utils.graph import dominates
32
32
 
33
33
  _l = logging.getLogger(name=__name__)
34
34
 
@@ -51,7 +51,7 @@ class DuplicationReverter(StructuringOptimizationPass):
51
51
  strictly_less_gotos=False,
52
52
  recover_structure_fails=True,
53
53
  must_improve_rel_quality=True,
54
- max_opt_iters=30,
54
+ max_opt_iters=5,
55
55
  simplify_ail=True,
56
56
  require_gotos=True,
57
57
  readd_labels=True,
@@ -679,6 +679,10 @@ class DuplicationReverter(StructuringOptimizationPass):
679
679
  ail_merge_graph = AILMergeGraph(original_graph=graph)
680
680
  # some blocks in originals may update during this time (if-statements can change)
681
681
  update_blocks = ail_merge_graph.create_conditionless_graph(blocks, graph_lcs)
682
+ if update_blocks is None:
683
+ # failed to create the condition-less graph
684
+ self.candidate_blacklist.add(tuple(blocks))
685
+ raise SAILRSemanticError("Failed to create a condition-less graph, this analysis must skip it")
682
686
 
683
687
  #
684
688
  # SPECIAL CASE: the merged graph contains only 1 node and no splits
@@ -1170,9 +1174,9 @@ class DuplicationReverter(StructuringOptimizationPass):
1170
1174
  entry_blocks = [node for node in graph.nodes if graph.in_degree(node) == 0]
1171
1175
  entry_block = None if len(entry_blocks) != 1 else entry_blocks[0]
1172
1176
 
1173
- self._entry_node_cache[graph] = entry_block
1174
1177
  if entry_block is None:
1175
1178
  return None
1179
+ self._entry_node_cache[graph] = entry_block
1176
1180
 
1177
1181
  entry_blk = self._entry_node_cache[graph]
1178
1182
 
@@ -7,7 +7,7 @@ import networkx as nx
7
7
  from ailment.block import Block
8
8
 
9
9
  from .utils import bfs_list_blocks
10
- from ...block_similarity import longest_ail_subseq, is_similar
10
+ from angr.analyses.decompiler.block_similarity import longest_ail_subseq, is_similar
11
11
 
12
12
  _l = logging.getLogger(name=__name__)
13
13
 
@@ -9,7 +9,7 @@ from ailment.block import Block
9
9
  from ailment.statement import Statement, ConditionalJump, Jump
10
10
 
11
11
  from .errors import UnsupportedAILNodeError
12
- from ...structuring.structurer_nodes import IncompleteSwitchCaseHeadStatement
12
+ from angr.analyses.decompiler.structuring.structurer_nodes import IncompleteSwitchCaseHeadStatement
13
13
 
14
14
 
15
15
  _l = logging.getLogger(name=__name__)
@@ -4,8 +4,8 @@ import logging
4
4
 
5
5
  from ailment import Expr, Stmt
6
6
 
7
- from ....engines.light import SimEngineLightAILMixin
8
- from ....engines.light import SimEngineLight
7
+ from angr.engines.light import SimEngineLightAILMixin
8
+ from angr.engines.light import SimEngineLight
9
9
 
10
10
  _l = logging.getLogger(name=__name__)
11
11
 
@@ -7,8 +7,8 @@ from ailment.block import Block as AILBlock
7
7
  from ailment.statement import Statement
8
8
  from ailment.expression import Expression, BinaryOp
9
9
 
10
- from ..sequence_walker import SequenceWalker
11
- from ..ail_simplifier import AILBlockWalker
10
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
11
+ from angr.analyses.decompiler.ail_simplifier import AILBlockWalker
12
12
  from .optimization_pass import SequenceOptimizationPass, OptimizationPassStage
13
13
 
14
14
  if TYPE_CHECKING:
@@ -5,9 +5,9 @@ from typing import Any
5
5
  import ailment
6
6
  from ailment.expression import Op
7
7
 
8
- from ..structuring.structurer_nodes import ConditionNode
9
- from ..utils import structured_node_is_simple_return, sequence_to_statements
10
- from ..sequence_walker import SequenceWalker
8
+ from angr.analyses.decompiler.structuring.structurer_nodes import ConditionNode
9
+ from angr.analyses.decompiler.utils import structured_node_is_simple_return, sequence_to_statements
10
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
11
11
  from .optimization_pass import SequenceOptimizationPass, OptimizationPassStage
12
12
 
13
13
 
@@ -79,7 +79,7 @@ class FlipBooleanCmp(SequenceOptimizationPass):
79
79
 
80
80
  def __init__(self, func, flip_size=10, **kwargs):
81
81
  super().__init__(func, **kwargs)
82
- self._graph = kwargs.get("graph", None)
82
+ self._graph = kwargs.get("graph")
83
83
  self._flip_size = flip_size
84
84
  self.analyze()
85
85
 
@@ -60,12 +60,12 @@ class InlinedStringTransformationState:
60
60
  def _get_weakref(self):
61
61
  return self
62
62
 
63
- def reg_store(self, reg: Register, value: claripy.Bits) -> None:
63
+ def reg_store(self, reg: Register, value: claripy.ast.Bits) -> None:
64
64
  self.registers.store(
65
65
  reg.reg_offset, value, size=value.size() // self.arch.byte_width, endness=str(self.arch.register_endness)
66
66
  )
67
67
 
68
- def reg_load(self, reg: Register) -> claripy.Bits | None:
68
+ def reg_load(self, reg: Register) -> claripy.ast.Bits | None:
69
69
  try:
70
70
  return self.registers.load(
71
71
  reg.reg_offset, size=reg.size, endness=self.arch.register_endness, fill_missing=False
@@ -73,19 +73,19 @@ class InlinedStringTransformationState:
73
73
  except SimMemoryMissingError:
74
74
  return None
75
75
 
76
- def mem_store(self, addr: int, value: claripy.Bits, endness: str) -> None:
76
+ def mem_store(self, addr: int, value: claripy.ast.Bits, endness: str) -> None:
77
77
  self.memory.store(addr, value, size=value.size() // self.arch.byte_width, endness=endness)
78
78
 
79
- def mem_load(self, addr: int, size: int, endness) -> claripy.Bits | None:
79
+ def mem_load(self, addr: int, size: int, endness) -> claripy.ast.Bits | None:
80
80
  try:
81
81
  return self.memory.load(addr, size=size, endness=str(endness), fill_missing=False)
82
82
  except SimMemoryMissingError:
83
83
  return None
84
84
 
85
- def vvar_store(self, vvar: VirtualVariable, value: claripy.Bits | None) -> None:
85
+ def vvar_store(self, vvar: VirtualVariable, value: claripy.ast.Bits | None) -> None:
86
86
  self.virtual_variables[vvar.varid] = value
87
87
 
88
- def vvar_load(self, vvar: VirtualVariable) -> claripy.Bits | None:
88
+ def vvar_load(self, vvar: VirtualVariable) -> claripy.ast.Bits | None:
89
89
  if vvar.varid in self.virtual_variables:
90
90
  return self.virtual_variables[vvar.varid]
91
91
  return None
@@ -109,7 +109,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
109
109
  self.MASK = 0xFFFF_FFFF if self.arch.bits == 32 else 0xFFFF_FFFF_FFFF_FFFF
110
110
 
111
111
  state = InlinedStringTransformationState(project)
112
- self.stack_accesses: defaultdict[int, list[tuple[str, CodeLocation, claripy.Bits]]] = defaultdict(list)
112
+ self.stack_accesses: defaultdict[int, list[tuple[str, CodeLocation, claripy.ast.Bits]]] = defaultdict(list)
113
113
  self.finished: bool = False
114
114
 
115
115
  i = 0
@@ -140,7 +140,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
140
140
  if v0_and_type is not None:
141
141
  v0 = v0_and_type[0]
142
142
  v1 = self._expr(addr.operands[1])
143
- if isinstance(v1, claripy.Bits) and v1.concrete:
143
+ if isinstance(v1, claripy.ast.Bits) and v1.concrete:
144
144
  return (v0 + v1.concrete_value) & self.MASK, "stack"
145
145
  return None
146
146
 
@@ -148,7 +148,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
148
148
  if isinstance(stmt.dst, VirtualVariable):
149
149
  if stmt.dst.was_reg:
150
150
  val = self._expr(stmt.src)
151
- if isinstance(val, claripy.Bits):
151
+ if isinstance(val, claripy.ast.Bits):
152
152
  self.state.vvar_store(stmt.dst, val)
153
153
  elif stmt.dst.was_stack:
154
154
  addr = (stmt.dst.stack_offset + self.STACK_BASE) & self.MASK
@@ -190,9 +190,9 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
190
190
  if isinstance(stmt.true_target, Const) and isinstance(stmt.false_target, Const):
191
191
  cond = self._expr(stmt.condition)
192
192
  if cond is not None:
193
- if isinstance(cond, claripy.Bits) and cond.concrete_value == 1:
193
+ if isinstance(cond, claripy.ast.Bits) and cond.concrete_value == 1:
194
194
  self.pc = stmt.true_target.value
195
- elif isinstance(cond, claripy.Bits) and cond.concrete_value == 0:
195
+ elif isinstance(cond, claripy.ast.Bits) and cond.concrete_value == 0:
196
196
  self.pc = stmt.false_target.value
197
197
 
198
198
  def _handle_Const(self, expr):
@@ -220,7 +220,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
220
220
  if expr.was_stack:
221
221
  addr = (expr.stack_offset + self.STACK_BASE) & self.MASK
222
222
  v = self.state.mem_load(addr, expr.size, self.arch.memory_endness)
223
- if isinstance(v, claripy.Bits):
223
+ if isinstance(v, claripy.ast.Bits):
224
224
  # log it
225
225
  for i in range(expr.size):
226
226
  byte_off = i
@@ -240,7 +240,7 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
240
240
 
241
241
  def _handle_Convert(self, expr: Convert):
242
242
  v = self._expr(expr.operand)
243
- if isinstance(v, claripy.Bits):
243
+ if isinstance(v, claripy.ast.Bits):
244
244
  if expr.to_bits > expr.from_bits:
245
245
  if not expr.is_signed:
246
246
  return claripy.ZeroExt(expr.to_bits - expr.from_bits, v)
@@ -252,37 +252,37 @@ class InlinedStringTransformationAILEngine(SimEngineLightAILMixin):
252
252
 
253
253
  def _handle_CmpEQ(self, expr):
254
254
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
255
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
255
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
256
256
  return claripy.BVV(1, 1) if op0.concrete_value == op1.concrete_value else claripy.BVV(0, 1)
257
257
  return None
258
258
 
259
259
  def _handle_CmpNE(self, expr):
260
260
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
261
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
261
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
262
262
  return claripy.BVV(1, 1) if op0.concrete_value != op1.concrete_value else claripy.BVV(0, 1)
263
263
  return None
264
264
 
265
265
  def _handle_CmpLT(self, expr):
266
266
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
267
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
267
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
268
268
  return claripy.BVV(1, 1) if op0.concrete_value < op1.concrete_value else claripy.BVV(0, 1)
269
269
  return None
270
270
 
271
271
  def _handle_CmpLE(self, expr):
272
272
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
273
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
273
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
274
274
  return claripy.BVV(1, 1) if op0.concrete_value <= op1.concrete_value else claripy.BVV(0, 1)
275
275
  return None
276
276
 
277
277
  def _handle_CmpGT(self, expr):
278
278
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
279
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
279
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
280
280
  return claripy.BVV(1, 1) if op0.concrete_value > op1.concrete_value else claripy.BVV(0, 1)
281
281
  return None
282
282
 
283
283
  def _handle_CmpGE(self, expr):
284
284
  op0, op1 = self._expr(expr.operands[0]), self._expr(expr.operands[1])
285
- if isinstance(op0, claripy.Bits) and isinstance(op1, claripy.Bits) and op0.concrete and op1.concrete:
285
+ if isinstance(op0, claripy.ast.Bits) and isinstance(op1, claripy.ast.Bits) and op0.concrete and op1.concrete:
286
286
  return claripy.BVV(1, 1) if op0.concrete_value >= op1.concrete_value else claripy.BVV(0, 1)
287
287
  return None
288
288
 
@@ -6,12 +6,12 @@ from typing import Any, TYPE_CHECKING
6
6
  from ailment.statement import ConditionalJump, Assignment, Statement
7
7
  from ailment.expression import Const, ITE, Expression
8
8
 
9
- from ....analyses import ReachingDefinitionsAnalysis
10
- from ....code_location import CodeLocation
11
- from ..region_walker import RegionWalker
12
- from ..ail_simplifier import AILBlockWalker
13
- from ..condition_processor import ConditionProcessor
14
- from ..structuring.structurer_nodes import EmptyBlockNotice
9
+ from angr.analyses import ReachingDefinitionsAnalysis
10
+ from angr.code_location import CodeLocation
11
+ from angr.analyses.decompiler.region_walker import RegionWalker
12
+ from angr.analyses.decompiler.ail_simplifier import AILBlockWalker
13
+ from angr.analyses.decompiler.condition_processor import ConditionProcessor
14
+ from angr.analyses.decompiler.structuring.structurer_nodes import EmptyBlockNotice
15
15
  from .optimization_pass import OptimizationPass, OptimizationPassStage
16
16
 
17
17
  if TYPE_CHECKING:
@@ -7,8 +7,8 @@ from ailment.statement import Statement, Call, ConditionalJump, Assignment, Jump
7
7
  from ailment.expression import ITE, Const, VirtualVariable, Phi
8
8
 
9
9
  from angr.utils.ail import is_phi_assignment
10
- from ....utils.graph import subgraph_between_nodes
11
- from ..utils import remove_labels, to_ail_supergraph
10
+ from angr.utils.graph import subgraph_between_nodes
11
+ from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph
12
12
  from .optimization_pass import OptimizationPass, OptimizationPassStage
13
13
 
14
14
 
@@ -10,10 +10,14 @@ from ailment.statement import ConditionalJump, Label, Assignment, Jump
10
10
  from ailment.expression import Expression, BinaryOp, Const, Load
11
11
 
12
12
  from angr.utils.graph import GraphUtils
13
- from ..utils import first_nonlabel_nonphi_statement, remove_last_statement
14
- from ..structuring.structurer_nodes import IncompleteSwitchCaseHeadStatement, SequenceNode, MultiNode
13
+ from angr.analyses.decompiler.utils import first_nonlabel_nonphi_statement, remove_last_statement
14
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
15
+ IncompleteSwitchCaseHeadStatement,
16
+ SequenceNode,
17
+ MultiNode,
18
+ )
15
19
  from .optimization_pass import MultipleBlocksException, StructuringOptimizationPass
16
- from ..region_simplifiers.switch_cluster_simplifier import SwitchClusterFinder
20
+ from angr.analyses.decompiler.region_simplifiers.switch_cluster_simplifier import SwitchClusterFinder
17
21
 
18
22
  if TYPE_CHECKING:
19
23
  from ailment.expression import UnaryOp, Convert