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

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

Potentially problematic release.


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

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
@@ -100,34 +100,6 @@ class BaseOptimizationPass:
100
100
  """
101
101
  raise NotImplementedError
102
102
 
103
- def _simplify_graph(self, graph):
104
- MAX_SIMP_ITERATION = 8
105
- for _ in range(MAX_SIMP_ITERATION):
106
- simp = self.project.analyses.AILSimplifier(
107
- self._func,
108
- func_graph=graph,
109
- use_callee_saved_regs_at_return=False,
110
- gp=self._func.info.get("gp", None) if self.project.arch.name in {"MIPS32", "MIPS64"} else None,
111
- )
112
- if simp.simplified:
113
- graph = simp.func_graph
114
- else:
115
- break
116
- else:
117
- _l.warning("Failed to reach fixed point after %s simplification iterations.", MAX_SIMP_ITERATION)
118
- return graph
119
-
120
- def _recover_regions(self, graph: networkx.DiGraph, condition_processor=None, update_graph: bool = False):
121
- return self.project.analyses[RegionIdentifier].prep(kb=self.kb)(
122
- self._func,
123
- graph=graph,
124
- cond_proc=condition_processor or ConditionProcessor(self.project.arch),
125
- update_graph=update_graph,
126
- # TODO: find a way to pass Phoenix/DREAM options here (see decompiler.py for correct use)
127
- force_loop_single_exit=True,
128
- complete_successors=False,
129
- )
130
-
131
103
 
132
104
  class OptimizationPass(BaseOptimizationPass):
133
105
  """
@@ -144,6 +116,7 @@ class OptimizationPass(BaseOptimizationPass):
144
116
  region_identifier=None,
145
117
  reaching_definitions=None,
146
118
  vvar_id_start=None,
119
+ entry_node_addr=None,
147
120
  **kwargs,
148
121
  ):
149
122
  super().__init__(func)
@@ -156,6 +129,9 @@ class OptimizationPass(BaseOptimizationPass):
156
129
  self._rd = reaching_definitions
157
130
  self._new_block_addrs = set()
158
131
  self.vvar_id_start = vvar_id_start
132
+ self.entry_node_addr: tuple[int, int | None] = (
133
+ entry_node_addr if entry_node_addr is not None else (func.addr, None)
134
+ )
159
135
 
160
136
  # output
161
137
  self.out_graph: networkx.DiGraph | None = None
@@ -254,6 +230,35 @@ class OptimizationPass(BaseOptimizationPass):
254
230
  def _is_sub(expr):
255
231
  return isinstance(expr, ailment.Expr.BinaryOp) and expr.op == "Sub"
256
232
 
233
+ def _simplify_graph(self, graph):
234
+ MAX_SIMP_ITERATION = 8
235
+ for _ in range(MAX_SIMP_ITERATION):
236
+ simp = self.project.analyses.AILSimplifier(
237
+ self._func,
238
+ func_graph=graph,
239
+ use_callee_saved_regs_at_return=False,
240
+ gp=self._func.info.get("gp", None) if self.project.arch.name in {"MIPS32", "MIPS64"} else None,
241
+ )
242
+ if simp.simplified:
243
+ graph = simp.func_graph
244
+ else:
245
+ break
246
+ else:
247
+ _l.warning("Failed to reach fixed point after %s simplification iterations.", MAX_SIMP_ITERATION)
248
+ return graph
249
+
250
+ def _recover_regions(self, graph: networkx.DiGraph, condition_processor=None, update_graph: bool = False):
251
+ return self.project.analyses[RegionIdentifier].prep(kb=self.kb)(
252
+ self._func,
253
+ graph=graph,
254
+ cond_proc=condition_processor or ConditionProcessor(self.project.arch),
255
+ update_graph=update_graph,
256
+ # TODO: find a way to pass Phoenix/DREAM options here (see decompiler.py for correct use)
257
+ force_loop_single_exit=True,
258
+ complete_successors=False,
259
+ entry_node_addr=self.entry_node_addr,
260
+ )
261
+
257
262
 
258
263
  class SequenceOptimizationPass(BaseOptimizationPass):
259
264
  """
@@ -424,6 +429,7 @@ class StructuringOptimizationPass(OptimizationPass):
424
429
  cond_proc=self._ri.cond_proc,
425
430
  force_loop_single_exit=False,
426
431
  complete_successors=True,
432
+ entry_node_addr=self.entry_node_addr,
427
433
  )
428
434
  if self._ri is None:
429
435
  return False
@@ -5,8 +5,8 @@ import logging
5
5
  import archinfo
6
6
  import ailment
7
7
 
8
- from ....calling_conventions import SimRegArg
9
- from ....code_location import CodeLocation
8
+ from angr.calling_conventions import SimRegArg
9
+ from angr.code_location import CodeLocation
10
10
  from .optimization_pass import OptimizationPass, OptimizationPassStage
11
11
 
12
12
 
@@ -4,7 +4,7 @@ import logging
4
4
 
5
5
  import ailment
6
6
 
7
- from ....calling_conventions import SimRegArg, default_cc, DEFAULT_CC
7
+ from angr.calling_conventions import SimRegArg, default_cc, DEFAULT_CC
8
8
  from .optimization_pass import OptimizationPass, OptimizationPassStage
9
9
 
10
10
  _l = logging.getLogger(name=__name__)
@@ -5,9 +5,9 @@ import logging
5
5
  from ailment import Block
6
6
  from ailment.statement import ConditionalJump, Return
7
7
 
8
- from ..structuring import SAILRStructurer, DreamStructurer
9
- from ....utils.graph import subgraph_between_nodes
10
- from ..utils import remove_labels, to_ail_supergraph, update_labels
8
+ from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
9
+ from angr.utils.graph import subgraph_between_nodes
10
+ from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph, update_labels
11
11
  from .optimization_pass import OptimizationPass, OptimizationPassStage
12
12
 
13
13
 
@@ -12,11 +12,11 @@ from ailment.statement import Jump, ConditionalJump, Assignment, Return, Label
12
12
  from ailment.expression import Const, Phi, VirtualVariable
13
13
 
14
14
  from angr.utils.ail import is_phi_assignment
15
- from ..condition_processor import ConditionProcessor, EmptyBlockNotice
16
- from ..graph_region import GraphRegion
17
- from ..utils import remove_labels, to_ail_supergraph, calls_in_graph
18
- from ..structuring.structurer_nodes import MultiNode, ConditionNode
19
- from ..region_identifier import RegionIdentifier
15
+ from angr.analyses.decompiler.condition_processor import ConditionProcessor, EmptyBlockNotice
16
+ from angr.analyses.decompiler.graph_region import GraphRegion
17
+ from angr.analyses.decompiler.utils import remove_labels, to_ail_supergraph, calls_in_graph
18
+ from angr.analyses.decompiler.structuring.structurer_nodes import MultiNode, ConditionNode
19
+ from angr.analyses.decompiler.region_identifier import RegionIdentifier
20
20
 
21
21
  _l = logging.getLogger(name=__name__)
22
22
 
@@ -5,7 +5,7 @@ import networkx
5
5
 
6
6
  from .return_duplicator_base import ReturnDuplicatorBase
7
7
  from .optimization_pass import OptimizationPass, OptimizationPassStage
8
- from ..structuring import SAILRStructurer, DreamStructurer
8
+ from angr.analyses.decompiler.structuring import SAILRStructurer, DreamStructurer
9
9
 
10
10
  _l = logging.getLogger(name=__name__)
11
11
 
@@ -1,5 +1,4 @@
1
1
  from __future__ import annotations
2
- from typing import List, Type
3
2
 
4
3
  from .a_div_const_add_a_mul_n_div_const import ADivConstAddAMulNDivConst
5
4
  from .a_mul_const_div_shr_const import AMulConstDivShrConst
@@ -49,23 +48,66 @@ from .coalesce_adjacent_shrs import CoalesceAdjacentShiftRights
49
48
 
50
49
  from .base import PeepholeOptimizationExprBase, PeepholeOptimizationStmtBase, PeepholeOptimizationMultiStmtBase
51
50
 
52
- MULTI_STMT_OPTS: list[type[PeepholeOptimizationMultiStmtBase]] = []
53
- STMT_OPTS: list[type[PeepholeOptimizationStmtBase]] = []
54
- EXPR_OPTS: list[type[PeepholeOptimizationExprBase]] = []
51
+ ALL_PEEPHOLE_OPTS: list[type[PeepholeOptimizationExprBase]] = [
52
+ ADivConstAddAMulNDivConst,
53
+ AMulConstDivShrConst,
54
+ AShlConstSubA,
55
+ ASubADiv,
56
+ ASubADivConstMulConst,
57
+ ARMCmpF,
58
+ Bswap,
59
+ CoalesceSameCascadingIfs,
60
+ ConstantDereferences,
61
+ ConstMullAShift,
62
+ ExtendedByteAndMask,
63
+ RemoveEmptyIfBody,
64
+ RemoveRedundantITEBranches,
65
+ SingleBitXor,
66
+ ASubASubN,
67
+ ConvASub0ShrAnd,
68
+ EagerEvaluation,
69
+ OneSubBool,
70
+ BoolExprXor1,
71
+ BitwiseOrToLogicalOr,
72
+ RemoveRedundantBitmasks,
73
+ RemoveRedundantNots,
74
+ RemoveRedundantReinterprets,
75
+ RemoveRedundantShifts,
76
+ RemoveRedundantShiftsAroundComparators,
77
+ SimplifyPcRelativeLoads,
78
+ BasePointerOffsetAddN,
79
+ BasePointerOffsetAndMask,
80
+ RemoveRedundantConversions,
81
+ RemoveCascadingConversions,
82
+ ConvShlShr,
83
+ RewriteMipsGpLoads,
84
+ RemoveNoopConversions,
85
+ RewriteBitExtractions,
86
+ RemoveRedundantITEComparisons,
87
+ SingleBitCondToBoolExpr,
88
+ SarToSignedDiv,
89
+ TidyStackAddr,
90
+ InvertNegatedLogicalConjunctionsAndDisjunctions,
91
+ RolRorRewriter,
92
+ InlinedStrcpy,
93
+ InlinedStrcpyConsolidation,
94
+ InlinedWstrcpy,
95
+ CmpORDRewriter,
96
+ CoalesceAdjacentShiftRights,
97
+ ]
55
98
 
56
- _g = globals().copy()
57
- for v in _g.values():
58
- if isinstance(v, type) and issubclass(v, PeepholeOptimizationExprBase) and v is not PeepholeOptimizationExprBase:
59
- EXPR_OPTS.append(v)
99
+ MULTI_STMT_OPTS: list[type[PeepholeOptimizationMultiStmtBase]] = [
100
+ v for v in ALL_PEEPHOLE_OPTS if issubclass(v, PeepholeOptimizationMultiStmtBase)
101
+ ]
102
+ STMT_OPTS: list[type[PeepholeOptimizationStmtBase]] = [
103
+ v for v in ALL_PEEPHOLE_OPTS if issubclass(v, PeepholeOptimizationStmtBase)
104
+ ]
105
+ EXPR_OPTS: list[type[PeepholeOptimizationExprBase]] = [
106
+ v for v in ALL_PEEPHOLE_OPTS if issubclass(v, PeepholeOptimizationExprBase)
107
+ ]
60
108
 
61
- if isinstance(v, type) and issubclass(v, PeepholeOptimizationStmtBase) and v is not PeepholeOptimizationStmtBase:
62
- STMT_OPTS.append(v)
63
-
64
- if (
65
- isinstance(v, type)
66
- and issubclass(v, PeepholeOptimizationMultiStmtBase)
67
- and v is not PeepholeOptimizationMultiStmtBase
68
- ):
69
- MULTI_STMT_OPTS.append(v)
70
-
71
- _g = None
109
+ __all__ = (
110
+ "MULTI_STMT_OPTS",
111
+ "STMT_OPTS",
112
+ "EXPR_OPTS",
113
+ )
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from ailment.expression import BinaryOp, Const, Load
3
3
 
4
- from ....utils.loader import is_pc, is_in_readonly_section, is_in_readonly_segment
4
+ from angr.utils.loader import is_pc, is_in_readonly_section, is_in_readonly_segment
5
5
  from .base import PeepholeOptimizationExprBase
6
6
 
7
7
 
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+
3
+ from .preset import DecompilationPreset
4
+ from .fast import preset_fast
5
+ from .full import preset_full
6
+ from .basic import preset_basic
7
+
8
+
9
+ DECOMPILATION_PRESETS = {
10
+ "fast": preset_fast,
11
+ "full": preset_full,
12
+ "basic": preset_basic,
13
+ "default": preset_fast,
14
+ }
15
+
16
+
17
+ __all__ = (
18
+ "DecompilationPreset",
19
+ "DECOMPILATION_PRESETS",
20
+ )
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations
2
+ from .preset import DecompilationPreset
3
+ from angr.analyses.decompiler.optimization_passes import (
4
+ RegisterSaveAreaSimplifier,
5
+ StackCanarySimplifier,
6
+ WinStackCanarySimplifier,
7
+ BasePointerSaveSimplifier,
8
+ ConstantDereferencesSimplifier,
9
+ RetAddrSaveSimplifier,
10
+ X86GccGetPcSimplifier,
11
+ CallStatementRewriter,
12
+ )
13
+
14
+
15
+ preset_basic = DecompilationPreset(
16
+ "basic",
17
+ [
18
+ RegisterSaveAreaSimplifier,
19
+ StackCanarySimplifier,
20
+ WinStackCanarySimplifier,
21
+ BasePointerSaveSimplifier,
22
+ ConstantDereferencesSimplifier,
23
+ RetAddrSaveSimplifier,
24
+ X86GccGetPcSimplifier,
25
+ CallStatementRewriter,
26
+ ],
27
+ )
28
+
29
+
30
+ __all__ = ["preset_basic"]
@@ -0,0 +1,54 @@
1
+ from __future__ import annotations
2
+ from .preset import DecompilationPreset
3
+ from angr.analyses.decompiler.optimization_passes import (
4
+ RegisterSaveAreaSimplifier,
5
+ StackCanarySimplifier,
6
+ WinStackCanarySimplifier,
7
+ BasePointerSaveSimplifier,
8
+ ConstantDereferencesSimplifier,
9
+ RetAddrSaveSimplifier,
10
+ X86GccGetPcSimplifier,
11
+ ITERegionConverter,
12
+ ITEExprConverter,
13
+ ExprOpSwapper,
14
+ ReturnDuplicatorHigh,
15
+ SwitchDefaultCaseDuplicator,
16
+ LoweredSwitchSimplifier,
17
+ ReturnDuplicatorLow,
18
+ ReturnDeduplicator,
19
+ FlipBooleanCmp,
20
+ InlinedStringTransformationSimplifier,
21
+ CallStatementRewriter,
22
+ MultiSimplifier,
23
+ DeadblockRemover,
24
+ )
25
+
26
+
27
+ preset_fast = DecompilationPreset(
28
+ "fast",
29
+ [
30
+ RegisterSaveAreaSimplifier,
31
+ StackCanarySimplifier,
32
+ WinStackCanarySimplifier,
33
+ BasePointerSaveSimplifier,
34
+ MultiSimplifier, # TODO: MultiSimplifier should be replaced by a peephole optimization
35
+ ConstantDereferencesSimplifier,
36
+ RetAddrSaveSimplifier,
37
+ X86GccGetPcSimplifier,
38
+ ITERegionConverter,
39
+ ITEExprConverter,
40
+ ExprOpSwapper,
41
+ ReturnDuplicatorHigh,
42
+ DeadblockRemover,
43
+ SwitchDefaultCaseDuplicator,
44
+ LoweredSwitchSimplifier,
45
+ ReturnDuplicatorLow,
46
+ ReturnDeduplicator,
47
+ FlipBooleanCmp,
48
+ InlinedStringTransformationSimplifier,
49
+ CallStatementRewriter,
50
+ ],
51
+ )
52
+
53
+
54
+ __all__ = ["preset_fast"]
@@ -0,0 +1,64 @@
1
+ from __future__ import annotations
2
+ from .preset import DecompilationPreset
3
+ from angr.analyses.decompiler.optimization_passes import (
4
+ RegisterSaveAreaSimplifier,
5
+ StackCanarySimplifier,
6
+ WinStackCanarySimplifier,
7
+ BasePointerSaveSimplifier,
8
+ DivSimplifier,
9
+ MultiSimplifier,
10
+ ModSimplifier,
11
+ ConstantDereferencesSimplifier,
12
+ RetAddrSaveSimplifier,
13
+ X86GccGetPcSimplifier,
14
+ ITERegionConverter,
15
+ ITEExprConverter,
16
+ ExprOpSwapper,
17
+ ReturnDuplicatorHigh,
18
+ DeadblockRemover,
19
+ SwitchDefaultCaseDuplicator,
20
+ ConstPropOptReverter,
21
+ DuplicationReverter,
22
+ LoweredSwitchSimplifier,
23
+ ReturnDuplicatorLow,
24
+ ReturnDeduplicator,
25
+ CrossJumpReverter,
26
+ FlipBooleanCmp,
27
+ InlinedStringTransformationSimplifier,
28
+ CallStatementRewriter,
29
+ )
30
+
31
+
32
+ preset_full = DecompilationPreset(
33
+ "full",
34
+ [
35
+ RegisterSaveAreaSimplifier,
36
+ StackCanarySimplifier,
37
+ WinStackCanarySimplifier,
38
+ BasePointerSaveSimplifier,
39
+ DivSimplifier,
40
+ MultiSimplifier,
41
+ ModSimplifier,
42
+ ConstantDereferencesSimplifier,
43
+ RetAddrSaveSimplifier,
44
+ X86GccGetPcSimplifier,
45
+ ITERegionConverter,
46
+ ITEExprConverter,
47
+ ExprOpSwapper,
48
+ ReturnDuplicatorHigh,
49
+ DeadblockRemover,
50
+ SwitchDefaultCaseDuplicator,
51
+ ConstPropOptReverter,
52
+ DuplicationReverter,
53
+ LoweredSwitchSimplifier,
54
+ ReturnDuplicatorLow,
55
+ ReturnDeduplicator,
56
+ CrossJumpReverter,
57
+ FlipBooleanCmp,
58
+ InlinedStringTransformationSimplifier,
59
+ CallStatementRewriter,
60
+ ],
61
+ )
62
+
63
+
64
+ __all__ = ["preset_full"]
@@ -0,0 +1,37 @@
1
+ from __future__ import annotations
2
+
3
+ from archinfo import Arch
4
+
5
+ from angr.analyses.decompiler.optimization_passes.optimization_pass import OptimizationPass
6
+
7
+
8
+ class DecompilationPreset:
9
+ """
10
+ A DecompilationPreset provides a preconfigured set of optimizations and configurations for the Decompiler analysis.
11
+ """
12
+
13
+ def __init__(self, name: str, opt_passes: list[type[OptimizationPass]]):
14
+ self.name = name
15
+ self.opt_passes = opt_passes
16
+
17
+ def get_optimization_passes(self, arch: Arch | str, platform: str | None, additional_opts=None, disable_opts=None):
18
+ if isinstance(arch, Arch):
19
+ arch = arch.name
20
+
21
+ if platform is not None:
22
+ platform = platform.lower()
23
+ if platform == "win32":
24
+ platform = "windows" # sigh
25
+
26
+ passes = []
27
+ additional_opts = additional_opts or []
28
+ disable_opts = disable_opts or []
29
+ for pass_ in self.opt_passes + additional_opts:
30
+ if pass_ in disable_opts:
31
+ continue
32
+ if (pass_.ARCHES is None or arch in pass_.ARCHES) and (
33
+ pass_.PLATFORMS is None or platform is None or platform in pass_.PLATFORMS
34
+ ):
35
+ passes.append(pass_)
36
+
37
+ return passes
@@ -11,9 +11,9 @@ from ailment.statement import ConditionalJump, Jump
11
11
  from ailment.expression import Const
12
12
 
13
13
  from angr.utils.graph import GraphUtils
14
- from ...utils.graph import dfs_back_edges, subgraph_between_nodes, dominates, shallow_reverse
15
- from ...errors import AngrRuntimeError
16
- from .. import Analysis, register_analysis
14
+ from angr.utils.graph import dfs_back_edges, subgraph_between_nodes, dominates, shallow_reverse
15
+ from angr.errors import AngrRuntimeError
16
+ from angr.analyses import Analysis, register_analysis
17
17
  from .structuring.structurer_nodes import MultiNode, ConditionNode, IncompleteSwitchCaseHeadStatement
18
18
  from .graph_region import GraphRegion
19
19
  from .condition_processor import ConditionProcessor
@@ -42,8 +42,12 @@ class RegionIdentifier(Analysis):
42
42
  largest_successor_tree_outside_loop=True,
43
43
  force_loop_single_exit=True,
44
44
  complete_successors=False,
45
+ entry_node_addr: tuple[int, int | None] | None = None,
45
46
  ):
46
47
  self.function = func
48
+ self.entry_node_addr: tuple[int, int | None] | None = (
49
+ entry_node_addr if entry_node_addr is not None else (func.addr, None) if func is not None else None
50
+ )
47
51
  self.cond_proc = (
48
52
  cond_proc
49
53
  if cond_proc is not None
@@ -144,10 +148,20 @@ class RegionIdentifier(Analysis):
144
148
  except StopIteration:
145
149
  pass
146
150
 
147
- try:
148
- return next(n for n in graph.nodes() if n.addr == self.function.addr)
149
- except StopIteration as ex:
150
- raise AngrRuntimeError("Cannot find the start node from the graph!") from ex
151
+ if self.entry_node_addr is not None:
152
+ try:
153
+ return next(
154
+ n
155
+ for n in graph.nodes()
156
+ if (
157
+ (n.addr, n.idx) == self.entry_node_addr
158
+ if isinstance(n, Block)
159
+ else n.addr == self.entry_node_addr[0]
160
+ )
161
+ )
162
+ except StopIteration as ex:
163
+ raise AngrRuntimeError("Cannot find the start node from the graph!") from ex
164
+ raise AngrRuntimeError("Cannot find the start node from the graph!")
151
165
 
152
166
  def _test_reducibility(self):
153
167
  # make a copy of the graph
@@ -1,2 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .region_simplifier import RegionSimplifier
4
+
5
+ __all__ = ("RegionSimplifier",)
@@ -4,9 +4,9 @@ from __future__ import annotations
4
4
  import ailment
5
5
  import claripy
6
6
 
7
- from ..structuring.structurer_nodes import ConditionNode, CascadingConditionNode
8
- from ..sequence_walker import SequenceWalker
9
- from ....errors import AngrRuntimeError
7
+ from angr.analyses.decompiler.structuring.structurer_nodes import ConditionNode, CascadingConditionNode
8
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
9
+ from angr.errors import AngrRuntimeError
10
10
 
11
11
 
12
12
  class CascadingConditionTransformer(SequenceWalker):
@@ -2,8 +2,8 @@
2
2
  from __future__ import annotations
3
3
  import ailment
4
4
 
5
- from ..sequence_walker import SequenceWalker
6
- from ..structuring.structurer_nodes import (
5
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
6
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
7
7
  SequenceNode,
8
8
  CodeNode,
9
9
  MultiNode,
@@ -11,7 +11,7 @@ from ..structuring.structurer_nodes import (
11
11
  ConditionNode,
12
12
  CascadingConditionNode,
13
13
  )
14
- from ..utils import is_empty_node
14
+ from angr.analyses.decompiler.utils import is_empty_node
15
15
 
16
16
 
17
17
  class CascadingIfsRemover(SequenceWalker):
@@ -10,8 +10,8 @@ from ailment.expression import ITE
10
10
  from ailment.statement import Statement, Assignment, Call
11
11
 
12
12
  from angr.utils.ail import is_phi_assignment
13
- from ..sequence_walker import SequenceWalker
14
- from ..structuring.structurer_nodes import (
13
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
14
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
15
15
  ConditionNode,
16
16
  ConditionalBreakNode,
17
17
  LoopNode,
@@ -4,8 +4,8 @@ import logging
4
4
 
5
5
  import ailment
6
6
 
7
- from ..sequence_walker import SequenceWalker
8
- from ..structuring.structurer_nodes import (
7
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
8
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
9
9
  SequenceNode,
10
10
  CodeNode,
11
11
  MultiNode,
@@ -14,7 +14,7 @@ from ..structuring.structurer_nodes import (
14
14
  CascadingConditionNode,
15
15
  )
16
16
  from .node_address_finder import NodeAddressFinder
17
- from ..goto_manager import Goto
17
+ from angr.analyses.decompiler.goto_manager import Goto
18
18
 
19
19
 
20
20
  l = logging.getLogger(name=__name__)
@@ -4,8 +4,8 @@ import logging
4
4
 
5
5
  import ailment
6
6
 
7
- from ..sequence_walker import SequenceWalker
8
- from ..structuring.structurer_nodes import (
7
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
8
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
9
9
  SequenceNode,
10
10
  CodeNode,
11
11
  MultiNode,
@@ -1,8 +1,8 @@
1
1
  # pylint:disable=unused-argument,arguments-differ
2
2
  from __future__ import annotations
3
3
 
4
- from ..sequence_walker import SequenceWalker
5
- from ..structuring.structurer_nodes import (
4
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
5
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
6
6
  SequenceNode,
7
7
  CodeNode,
8
8
  MultiNode,
@@ -11,8 +11,8 @@ from ..structuring.structurer_nodes import (
11
11
  EmptyBlockNotice,
12
12
  CascadingConditionNode,
13
13
  )
14
- from ..condition_processor import ConditionProcessor
15
- from ..utils import insert_node, is_statement_terminating
14
+ from angr.analyses.decompiler.condition_processor import ConditionProcessor
15
+ from angr.analyses.decompiler.utils import insert_node, is_statement_terminating
16
16
 
17
17
 
18
18
  class IfElseFlattener(SequenceWalker):
@@ -4,9 +4,9 @@ from collections import defaultdict
4
4
 
5
5
  import ailment
6
6
 
7
- from ..condition_processor import ConditionProcessor, EmptyBlockNotice
8
- from ..sequence_walker import SequenceWalker
9
- from ..structuring.structurer_nodes import (
7
+ from angr.analyses.decompiler.condition_processor import ConditionProcessor, EmptyBlockNotice
8
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
9
+ from angr.analyses.decompiler.structuring.structurer_nodes import (
10
10
  SequenceNode,
11
11
  CodeNode,
12
12
  MultiNode,
@@ -15,7 +15,7 @@ from ..structuring.structurer_nodes import (
15
15
  ContinueNode,
16
16
  CascadingConditionNode,
17
17
  )
18
- from ..utils import is_statement_terminating, has_nonlabel_nonphi_statements
18
+ from angr.analyses.decompiler.utils import is_statement_terminating, has_nonlabel_nonphi_statements
19
19
 
20
20
 
21
21
  class LoopSimplifier(SequenceWalker):
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
 
4
4
  import ailment
5
5
 
6
- from ..sequence_walker import SequenceWalker
6
+ from angr.analyses.decompiler.sequence_walker import SequenceWalker
7
7
 
8
8
 
9
9
  class NodeAddressFinder(SequenceWalker):