angr 9.2.118__py3-none-win_amd64.whl → 9.2.120__py3-none-win_amd64.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 (839) 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/lib/angr_native.dll +0 -0
  300. angr/misc/__init__.py +12 -2
  301. angr/misc/loggers.py +2 -2
  302. angr/misc/telemetry.py +54 -0
  303. angr/procedures/__init__.py +9 -0
  304. angr/procedures/cgc/receive.py +2 -2
  305. angr/procedures/cgc/transmit.py +1 -1
  306. angr/procedures/definitions/__init__.py +8 -8
  307. angr/procedures/definitions/cgc.py +1 -1
  308. angr/procedures/definitions/glibc.py +2 -15
  309. angr/procedures/definitions/gnulib.py +2 -6
  310. angr/procedures/definitions/libstdcpp.py +2 -2
  311. angr/procedures/definitions/linux_kernel.py +2 -3
  312. angr/procedures/definitions/linux_loader.py +1 -1
  313. angr/procedures/definitions/msvcr.py +2 -2
  314. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +3 -18
  315. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +3 -18
  316. angr/procedures/definitions/wdk_clfs.py +3 -18
  317. angr/procedures/definitions/wdk_fltmgr.py +3 -18
  318. angr/procedures/definitions/wdk_fwpkclnt.py +3 -18
  319. angr/procedures/definitions/wdk_fwpuclnt.py +3 -18
  320. angr/procedures/definitions/wdk_gdi32.py +3 -18
  321. angr/procedures/definitions/wdk_hal.py +3 -18
  322. angr/procedures/definitions/wdk_ksecdd.py +3 -18
  323. angr/procedures/definitions/wdk_ndis.py +3 -18
  324. angr/procedures/definitions/wdk_ntoskrnl.py +3 -18
  325. angr/procedures/definitions/wdk_offreg.py +3 -18
  326. angr/procedures/definitions/wdk_pshed.py +3 -18
  327. angr/procedures/definitions/wdk_secur32.py +3 -18
  328. angr/procedures/definitions/wdk_vhfum.py +3 -18
  329. angr/procedures/definitions/win32_aclui.py +3 -18
  330. angr/procedures/definitions/win32_activeds.py +3 -18
  331. angr/procedures/definitions/win32_advapi32.py +3 -18
  332. angr/procedures/definitions/win32_advpack.py +3 -18
  333. angr/procedures/definitions/win32_amsi.py +3 -18
  334. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +3 -18
  335. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +3 -18
  336. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +3 -18
  337. angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +3 -18
  338. angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +3 -18
  339. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +3 -18
  340. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +3 -18
  341. angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +3 -18
  342. angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +3 -18
  343. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +3 -18
  344. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +3 -18
  345. angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +3 -18
  346. angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +3 -18
  347. angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +3 -18
  348. angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +3 -18
  349. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +3 -18
  350. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +3 -18
  351. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +3 -18
  352. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +3 -18
  353. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +3 -18
  354. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +3 -18
  355. angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +3 -18
  356. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +3 -18
  357. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +3 -18
  358. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +3 -18
  359. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +3 -18
  360. angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +3 -18
  361. angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +3 -18
  362. angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +3 -18
  363. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +3 -18
  364. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +3 -18
  365. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +3 -18
  366. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +3 -18
  367. angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +3 -18
  368. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +3 -3
  369. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +3 -3
  370. angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +3 -3
  371. angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +3 -3
  372. angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +3 -3
  373. angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +3 -3
  374. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +3 -3
  375. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +3 -3
  376. angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +3 -18
  377. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +3 -18
  378. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +3 -18
  379. angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +3 -18
  380. angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +3 -18
  381. angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +3 -18
  382. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +3 -18
  383. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +3 -18
  384. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +3 -18
  385. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +3 -18
  386. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +3 -18
  387. angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +3 -18
  388. angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +3 -18
  389. angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +3 -18
  390. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +3 -18
  391. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +3 -18
  392. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +3 -18
  393. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +3 -18
  394. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +3 -18
  395. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +3 -18
  396. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +3 -18
  397. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +3 -18
  398. angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +3 -3
  399. angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +3 -18
  400. angr/procedures/definitions/win32_apphelp.py +3 -18
  401. angr/procedures/definitions/win32_authz.py +3 -18
  402. angr/procedures/definitions/win32_avicap32.py +3 -18
  403. angr/procedures/definitions/win32_avifil32.py +3 -18
  404. angr/procedures/definitions/win32_avrt.py +3 -18
  405. angr/procedures/definitions/win32_bcp47mrm.py +3 -18
  406. angr/procedures/definitions/win32_bcrypt.py +3 -18
  407. angr/procedures/definitions/win32_bcryptprimitives.py +3 -18
  408. angr/procedures/definitions/win32_bluetoothapis.py +3 -18
  409. angr/procedures/definitions/win32_bthprops.py +3 -3
  410. angr/procedures/definitions/win32_bthprops_cpl.py +3 -18
  411. angr/procedures/definitions/win32_cabinet.py +3 -18
  412. angr/procedures/definitions/win32_certadm.py +3 -18
  413. angr/procedures/definitions/win32_certpoleng.py +3 -18
  414. angr/procedures/definitions/win32_cfgmgr32.py +3 -18
  415. angr/procedures/definitions/win32_chakra.py +3 -18
  416. angr/procedures/definitions/win32_cldapi.py +3 -18
  417. angr/procedures/definitions/win32_clfsw32.py +3 -18
  418. angr/procedures/definitions/win32_clusapi.py +3 -18
  419. angr/procedures/definitions/win32_comctl32.py +3 -18
  420. angr/procedures/definitions/win32_comdlg32.py +3 -18
  421. angr/procedures/definitions/win32_compstui.py +3 -18
  422. angr/procedures/definitions/win32_computecore.py +3 -18
  423. angr/procedures/definitions/win32_computenetwork.py +3 -18
  424. angr/procedures/definitions/win32_computestorage.py +3 -18
  425. angr/procedures/definitions/win32_comsvcs.py +3 -18
  426. angr/procedures/definitions/win32_coremessaging.py +3 -3
  427. angr/procedures/definitions/win32_credui.py +3 -18
  428. angr/procedures/definitions/win32_crypt32.py +3 -18
  429. angr/procedures/definitions/win32_cryptnet.py +3 -18
  430. angr/procedures/definitions/win32_cryptui.py +3 -18
  431. angr/procedures/definitions/win32_cryptxml.py +3 -18
  432. angr/procedures/definitions/win32_cscapi.py +3 -18
  433. angr/procedures/definitions/win32_d2d1.py +3 -18
  434. angr/procedures/definitions/win32_d3d10.py +3 -18
  435. angr/procedures/definitions/win32_d3d10_1.py +3 -18
  436. angr/procedures/definitions/win32_d3d11.py +3 -18
  437. angr/procedures/definitions/win32_d3d12.py +3 -18
  438. angr/procedures/definitions/win32_d3d9.py +3 -18
  439. angr/procedures/definitions/win32_d3dcompiler_47.py +3 -18
  440. angr/procedures/definitions/win32_d3dcsx.py +3 -18
  441. angr/procedures/definitions/win32_davclnt.py +3 -18
  442. angr/procedures/definitions/win32_dbgeng.py +3 -18
  443. angr/procedures/definitions/win32_dbghelp.py +3 -18
  444. angr/procedures/definitions/win32_dbgmodel.py +3 -18
  445. angr/procedures/definitions/win32_dciman32.py +3 -18
  446. angr/procedures/definitions/win32_dcomp.py +3 -18
  447. angr/procedures/definitions/win32_ddraw.py +3 -18
  448. angr/procedures/definitions/win32_deviceaccess.py +3 -18
  449. angr/procedures/definitions/win32_dflayout.py +3 -18
  450. angr/procedures/definitions/win32_dhcpcsvc.py +3 -18
  451. angr/procedures/definitions/win32_dhcpcsvc6.py +3 -18
  452. angr/procedures/definitions/win32_dhcpsapi.py +3 -18
  453. angr/procedures/definitions/win32_diagnosticdataquery.py +3 -18
  454. angr/procedures/definitions/win32_dinput8.py +3 -18
  455. angr/procedures/definitions/win32_directml.py +3 -18
  456. angr/procedures/definitions/win32_dmprocessxmlfiltered.py +3 -18
  457. angr/procedures/definitions/win32_dnsapi.py +3 -18
  458. angr/procedures/definitions/win32_drt.py +3 -18
  459. angr/procedures/definitions/win32_drtprov.py +3 -18
  460. angr/procedures/definitions/win32_drttransport.py +3 -18
  461. angr/procedures/definitions/win32_dsound.py +3 -18
  462. angr/procedures/definitions/win32_dsparse.py +3 -18
  463. angr/procedures/definitions/win32_dsprop.py +3 -18
  464. angr/procedures/definitions/win32_dssec.py +3 -18
  465. angr/procedures/definitions/win32_dsuiext.py +3 -18
  466. angr/procedures/definitions/win32_dwmapi.py +3 -18
  467. angr/procedures/definitions/win32_dwrite.py +3 -18
  468. angr/procedures/definitions/win32_dxcompiler.py +3 -18
  469. angr/procedures/definitions/win32_dxcore.py +3 -18
  470. angr/procedures/definitions/win32_dxgi.py +3 -18
  471. angr/procedures/definitions/win32_dxva2.py +3 -18
  472. angr/procedures/definitions/win32_eappcfg.py +3 -18
  473. angr/procedures/definitions/win32_eappprxy.py +3 -18
  474. angr/procedures/definitions/win32_efswrt.py +3 -18
  475. angr/procedures/definitions/win32_elscore.py +3 -18
  476. angr/procedures/definitions/win32_esent.py +3 -18
  477. angr/procedures/definitions/win32_evr.py +3 -18
  478. angr/procedures/definitions/win32_faultrep.py +3 -18
  479. angr/procedures/definitions/win32_fhsvcctl.py +3 -18
  480. angr/procedures/definitions/win32_firewallapi.py +3 -18
  481. angr/procedures/definitions/win32_fltlib.py +3 -18
  482. angr/procedures/definitions/win32_fontsub.py +3 -18
  483. angr/procedures/definitions/win32_forceinline.py +3 -18
  484. angr/procedures/definitions/win32_fwpuclnt.py +3 -18
  485. angr/procedures/definitions/win32_fxsutility.py +3 -18
  486. angr/procedures/definitions/win32_gdi32.py +3 -18
  487. angr/procedures/definitions/win32_gdiplus.py +3 -18
  488. angr/procedures/definitions/win32_glu32.py +3 -18
  489. angr/procedures/definitions/win32_gpedit.py +3 -18
  490. angr/procedures/definitions/win32_hhctrl_ocx.py +3 -18
  491. angr/procedures/definitions/win32_hid.py +3 -18
  492. angr/procedures/definitions/win32_hlink.py +3 -18
  493. angr/procedures/definitions/win32_hrtfapo.py +3 -18
  494. angr/procedures/definitions/win32_httpapi.py +3 -18
  495. angr/procedures/definitions/win32_icm32.py +3 -18
  496. angr/procedures/definitions/win32_icmui.py +3 -18
  497. angr/procedures/definitions/win32_icu.py +3 -18
  498. angr/procedures/definitions/win32_ieframe.py +3 -18
  499. angr/procedures/definitions/win32_imagehlp.py +3 -18
  500. angr/procedures/definitions/win32_imgutil.py +3 -18
  501. angr/procedures/definitions/win32_imm32.py +3 -18
  502. angr/procedures/definitions/win32_infocardapi.py +3 -18
  503. angr/procedures/definitions/win32_inkobjcore.py +3 -18
  504. angr/procedures/definitions/win32_iphlpapi.py +3 -18
  505. angr/procedures/definitions/win32_iscsidsc.py +3 -18
  506. angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +3 -18
  507. angr/procedures/definitions/win32_kernel32.py +3 -18
  508. angr/procedures/definitions/win32_kernelbase.py +3 -18
  509. angr/procedures/definitions/win32_keycredmgr.py +3 -18
  510. angr/procedures/definitions/win32_ksproxy_ax.py +3 -18
  511. angr/procedures/definitions/win32_ksuser.py +3 -18
  512. angr/procedures/definitions/win32_ktmw32.py +3 -18
  513. angr/procedures/definitions/win32_licenseprotection.py +3 -18
  514. angr/procedures/definitions/win32_loadperf.py +3 -18
  515. angr/procedures/definitions/win32_magnification.py +3 -18
  516. angr/procedures/definitions/win32_mapi32.py +3 -18
  517. angr/procedures/definitions/win32_mdmlocalmanagement.py +3 -18
  518. angr/procedures/definitions/win32_mdmregistration.py +3 -18
  519. angr/procedures/definitions/win32_mf.py +3 -18
  520. angr/procedures/definitions/win32_mfcore.py +3 -18
  521. angr/procedures/definitions/win32_mfplat.py +3 -18
  522. angr/procedures/definitions/win32_mfplay.py +3 -18
  523. angr/procedures/definitions/win32_mfreadwrite.py +3 -18
  524. angr/procedures/definitions/win32_mfsensorgroup.py +3 -18
  525. angr/procedures/definitions/win32_mfsrcsnk.py +3 -18
  526. angr/procedures/definitions/win32_mgmtapi.py +3 -18
  527. angr/procedures/definitions/win32_mi.py +3 -18
  528. angr/procedures/definitions/win32_mmdevapi.py +3 -18
  529. angr/procedures/definitions/win32_mpr.py +3 -18
  530. angr/procedures/definitions/win32_mprapi.py +3 -18
  531. angr/procedures/definitions/win32_mqrt.py +3 -18
  532. angr/procedures/definitions/win32_mrmsupport.py +3 -18
  533. angr/procedures/definitions/win32_msacm32.py +3 -18
  534. angr/procedures/definitions/win32_msajapi.py +3 -18
  535. angr/procedures/definitions/win32_mscms.py +3 -18
  536. angr/procedures/definitions/win32_mscoree.py +3 -18
  537. angr/procedures/definitions/win32_msctfmonitor.py +3 -18
  538. angr/procedures/definitions/win32_msdelta.py +3 -18
  539. angr/procedures/definitions/win32_msdmo.py +3 -18
  540. angr/procedures/definitions/win32_msdrm.py +3 -18
  541. angr/procedures/definitions/win32_msi.py +3 -18
  542. angr/procedures/definitions/win32_msimg32.py +3 -18
  543. angr/procedures/definitions/win32_mspatcha.py +3 -18
  544. angr/procedures/definitions/win32_mspatchc.py +3 -18
  545. angr/procedures/definitions/win32_msports.py +3 -18
  546. angr/procedures/definitions/win32_msrating.py +3 -18
  547. angr/procedures/definitions/win32_mssign32.py +3 -18
  548. angr/procedures/definitions/win32_mstask.py +3 -18
  549. angr/procedures/definitions/win32_msvfw32.py +3 -18
  550. angr/procedures/definitions/win32_mswsock.py +3 -18
  551. angr/procedures/definitions/win32_mtxdm.py +3 -18
  552. angr/procedures/definitions/win32_ncrypt.py +3 -18
  553. angr/procedures/definitions/win32_ndfapi.py +3 -18
  554. angr/procedures/definitions/win32_netapi32.py +3 -18
  555. angr/procedures/definitions/win32_netsh.py +3 -18
  556. angr/procedures/definitions/win32_netshell.py +3 -18
  557. angr/procedures/definitions/win32_newdev.py +3 -18
  558. angr/procedures/definitions/win32_ninput.py +3 -18
  559. angr/procedures/definitions/win32_normaliz.py +3 -18
  560. angr/procedures/definitions/win32_ntdll.py +3 -18
  561. angr/procedures/definitions/win32_ntdllk.py +3 -18
  562. angr/procedures/definitions/win32_ntdsapi.py +3 -18
  563. angr/procedures/definitions/win32_ntlanman.py +3 -18
  564. angr/procedures/definitions/win32_odbc32.py +3 -18
  565. angr/procedures/definitions/win32_odbcbcp.py +3 -18
  566. angr/procedures/definitions/win32_ole32.py +3 -18
  567. angr/procedures/definitions/win32_oleacc.py +3 -18
  568. angr/procedures/definitions/win32_oleaut32.py +3 -18
  569. angr/procedures/definitions/win32_oledlg.py +3 -18
  570. angr/procedures/definitions/win32_ondemandconnroutehelper.py +3 -18
  571. angr/procedures/definitions/win32_opengl32.py +3 -18
  572. angr/procedures/definitions/win32_opmxbox.py +3 -18
  573. angr/procedures/definitions/win32_p2p.py +3 -18
  574. angr/procedures/definitions/win32_p2pgraph.py +3 -18
  575. angr/procedures/definitions/win32_pdh.py +3 -18
  576. angr/procedures/definitions/win32_peerdist.py +3 -18
  577. angr/procedures/definitions/win32_powrprof.py +3 -18
  578. angr/procedures/definitions/win32_prntvpt.py +3 -18
  579. angr/procedures/definitions/win32_projectedfslib.py +3 -18
  580. angr/procedures/definitions/win32_propsys.py +3 -18
  581. angr/procedures/definitions/win32_psapi.py +3 -18
  582. angr/procedures/definitions/win32_quartz.py +3 -18
  583. angr/procedures/definitions/win32_query.py +3 -18
  584. angr/procedures/definitions/win32_qwave.py +3 -18
  585. angr/procedures/definitions/win32_rasapi32.py +3 -18
  586. angr/procedures/definitions/win32_rasdlg.py +3 -18
  587. angr/procedures/definitions/win32_resutils.py +3 -18
  588. angr/procedures/definitions/win32_rometadata.py +3 -3
  589. angr/procedures/definitions/win32_rpcns4.py +3 -18
  590. angr/procedures/definitions/win32_rpcproxy.py +3 -18
  591. angr/procedures/definitions/win32_rpcrt4.py +3 -18
  592. angr/procedures/definitions/win32_rstrtmgr.py +3 -18
  593. angr/procedures/definitions/win32_rtm.py +3 -18
  594. angr/procedures/definitions/win32_rtutils.py +3 -18
  595. angr/procedures/definitions/win32_rtworkq.py +3 -18
  596. angr/procedures/definitions/win32_sas.py +3 -18
  597. angr/procedures/definitions/win32_scarddlg.py +3 -18
  598. angr/procedures/definitions/win32_schannel.py +3 -18
  599. angr/procedures/definitions/win32_sechost.py +3 -18
  600. angr/procedures/definitions/win32_secur32.py +3 -18
  601. angr/procedures/definitions/win32_sensapi.py +3 -18
  602. angr/procedures/definitions/win32_sensorsutilsv2.py +3 -18
  603. angr/procedures/definitions/win32_setupapi.py +3 -18
  604. angr/procedures/definitions/win32_sfc.py +3 -18
  605. angr/procedures/definitions/win32_shdocvw.py +3 -18
  606. angr/procedures/definitions/win32_shell32.py +3 -18
  607. angr/procedures/definitions/win32_shlwapi.py +3 -18
  608. angr/procedures/definitions/win32_slc.py +3 -18
  609. angr/procedures/definitions/win32_slcext.py +3 -18
  610. angr/procedures/definitions/win32_slwga.py +3 -18
  611. angr/procedures/definitions/win32_snmpapi.py +3 -18
  612. angr/procedures/definitions/win32_spoolss.py +3 -18
  613. angr/procedures/definitions/win32_srclient.py +3 -18
  614. angr/procedures/definitions/win32_srpapi.py +3 -18
  615. angr/procedures/definitions/win32_sspicli.py +3 -18
  616. angr/procedures/definitions/win32_sti.py +3 -18
  617. angr/procedures/definitions/win32_t2embed.py +3 -18
  618. angr/procedures/definitions/win32_tapi32.py +3 -18
  619. angr/procedures/definitions/win32_tbs.py +3 -18
  620. angr/procedures/definitions/win32_tdh.py +3 -18
  621. angr/procedures/definitions/win32_tokenbinding.py +3 -18
  622. angr/procedures/definitions/win32_traffic.py +3 -18
  623. angr/procedures/definitions/win32_txfw32.py +3 -18
  624. angr/procedures/definitions/win32_ualapi.py +3 -18
  625. angr/procedures/definitions/win32_uiautomationcore.py +3 -18
  626. angr/procedures/definitions/win32_urlmon.py +3 -18
  627. angr/procedures/definitions/win32_user32.py +4 -19
  628. angr/procedures/definitions/win32_userenv.py +3 -18
  629. angr/procedures/definitions/win32_usp10.py +3 -18
  630. angr/procedures/definitions/win32_uxtheme.py +3 -18
  631. angr/procedures/definitions/win32_verifier.py +3 -18
  632. angr/procedures/definitions/win32_version.py +3 -18
  633. angr/procedures/definitions/win32_vertdll.py +3 -18
  634. angr/procedures/definitions/win32_virtdisk.py +3 -18
  635. angr/procedures/definitions/win32_vmdevicehost.py +3 -18
  636. angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +3 -18
  637. angr/procedures/definitions/win32_vssapi.py +3 -18
  638. angr/procedures/definitions/win32_wcmapi.py +3 -18
  639. angr/procedures/definitions/win32_wdsbp.py +3 -18
  640. angr/procedures/definitions/win32_wdsclientapi.py +3 -18
  641. angr/procedures/definitions/win32_wdsmc.py +3 -18
  642. angr/procedures/definitions/win32_wdspxe.py +3 -18
  643. angr/procedures/definitions/win32_wdstptc.py +3 -18
  644. angr/procedures/definitions/win32_webauthn.py +3 -18
  645. angr/procedures/definitions/win32_webservices.py +3 -18
  646. angr/procedures/definitions/win32_websocket.py +3 -18
  647. angr/procedures/definitions/win32_wecapi.py +3 -18
  648. angr/procedures/definitions/win32_wer.py +3 -18
  649. angr/procedures/definitions/win32_wevtapi.py +3 -18
  650. angr/procedures/definitions/win32_winbio.py +3 -18
  651. angr/procedures/definitions/win32_windows_ai_machinelearning.py +3 -18
  652. angr/procedures/definitions/win32_windows_data_pdf.py +3 -3
  653. angr/procedures/definitions/win32_windows_media_mediacontrol.py +3 -18
  654. angr/procedures/definitions/win32_windows_networking.py +3 -18
  655. angr/procedures/definitions/win32_windows_ui_xaml.py +3 -18
  656. angr/procedures/definitions/win32_windowscodecs.py +3 -18
  657. angr/procedures/definitions/win32_winfax.py +3 -18
  658. angr/procedures/definitions/win32_winhttp.py +3 -18
  659. angr/procedures/definitions/win32_winhvemulation.py +3 -18
  660. angr/procedures/definitions/win32_winhvplatform.py +3 -18
  661. angr/procedures/definitions/win32_wininet.py +3 -18
  662. angr/procedures/definitions/win32_winml.py +3 -18
  663. angr/procedures/definitions/win32_winmm.py +3 -18
  664. angr/procedures/definitions/win32_winscard.py +3 -18
  665. angr/procedures/definitions/win32_winspool.py +3 -3
  666. angr/procedures/definitions/win32_winspool_drv.py +3 -18
  667. angr/procedures/definitions/win32_wintrust.py +3 -18
  668. angr/procedures/definitions/win32_winusb.py +3 -18
  669. angr/procedures/definitions/win32_wlanapi.py +3 -18
  670. angr/procedures/definitions/win32_wlanui.py +3 -18
  671. angr/procedures/definitions/win32_wldap32.py +3 -18
  672. angr/procedures/definitions/win32_wldp.py +3 -18
  673. angr/procedures/definitions/win32_wmvcore.py +3 -18
  674. angr/procedures/definitions/win32_wnvapi.py +3 -18
  675. angr/procedures/definitions/win32_wofutil.py +3 -18
  676. angr/procedures/definitions/win32_ws2_32.py +3 -18
  677. angr/procedures/definitions/win32_wscapi.py +3 -18
  678. angr/procedures/definitions/win32_wsclient.py +3 -18
  679. angr/procedures/definitions/win32_wsdapi.py +3 -18
  680. angr/procedures/definitions/win32_wsmsvc.py +3 -18
  681. angr/procedures/definitions/win32_wsnmp32.py +3 -18
  682. angr/procedures/definitions/win32_wtsapi32.py +3 -18
  683. angr/procedures/definitions/win32_xaudio2_8.py +3 -18
  684. angr/procedures/definitions/win32_xinput1_4.py +3 -18
  685. angr/procedures/definitions/win32_xinputuap.py +3 -3
  686. angr/procedures/definitions/win32_xmllite.py +3 -18
  687. angr/procedures/definitions/win32_xolehlp.py +3 -18
  688. angr/procedures/definitions/win32_xpsprint.py +3 -18
  689. angr/procedures/glibc/scanf.py +2 -2
  690. angr/procedures/glibc/sscanf.py +1 -1
  691. angr/procedures/java/__init__.py +6 -3
  692. angr/procedures/java/unconstrained.py +4 -4
  693. angr/procedures/java_io/read.py +1 -1
  694. angr/procedures/java_io/write.py +1 -1
  695. angr/procedures/java_jni/__init__.py +25 -17
  696. angr/procedures/java_jni/array_operations.py +2 -2
  697. angr/procedures/java_jni/field_access.py +3 -3
  698. angr/procedures/java_jni/method_calls.py +2 -2
  699. angr/procedures/java_jni/object_operations.py +1 -1
  700. angr/procedures/java_jni/string_operations.py +2 -2
  701. angr/procedures/java_lang/character.py +1 -1
  702. angr/procedures/java_lang/double.py +2 -2
  703. angr/procedures/java_lang/exit.py +1 -1
  704. angr/procedures/java_lang/getsimplename.py +1 -1
  705. angr/procedures/java_lang/integer.py +2 -2
  706. angr/procedures/java_lang/load_library.py +1 -1
  707. angr/procedures/java_lang/math.py +1 -1
  708. angr/procedures/java_lang/string.py +4 -4
  709. angr/procedures/java_lang/stringbuilder.py +2 -2
  710. angr/procedures/java_lang/system.py +1 -1
  711. angr/procedures/java_util/collection.py +2 -2
  712. angr/procedures/java_util/iterator.py +2 -2
  713. angr/procedures/java_util/list.py +3 -3
  714. angr/procedures/java_util/map.py +3 -3
  715. angr/procedures/java_util/random.py +1 -1
  716. angr/procedures/java_util/scanner_nextline.py +3 -3
  717. angr/procedures/libc/fseek.py +1 -1
  718. angr/procedures/libc/memcpy.py +1 -1
  719. angr/procedures/libc/strlen.py +12 -4
  720. angr/procedures/libc/strncmp.py +9 -4
  721. angr/procedures/linux_kernel/iovec.py +3 -3
  722. angr/procedures/linux_kernel/mmap.py +1 -1
  723. angr/procedures/linux_kernel/stat.py +1 -1
  724. angr/procedures/linux_kernel/sysinfo.py +1 -1
  725. angr/procedures/linux_kernel/vsyscall.py +1 -1
  726. angr/procedures/posix/bzero.py +1 -1
  727. angr/procedures/posix/mmap.py +1 -1
  728. angr/procedures/posix/send.py +1 -1
  729. angr/procedures/posix/syslog.py +2 -3
  730. angr/procedures/procedure_dict.py +2 -2
  731. angr/procedures/stubs/Redirect.py +1 -1
  732. angr/procedures/stubs/UserHook.py +1 -1
  733. angr/procedures/stubs/format_parser.py +6 -6
  734. angr/procedures/tracer/random.py +1 -1
  735. angr/procedures/tracer/receive.py +1 -1
  736. angr/procedures/tracer/transmit.py +1 -1
  737. angr/procedures/uclibc/__uClibc_main.py +1 -1
  738. angr/protos/__init__.py +8 -0
  739. angr/sim_options.py +0 -4
  740. angr/sim_procedure.py +5 -5
  741. angr/sim_state.py +21 -34
  742. angr/sim_type.py +51 -18
  743. angr/simos/__init__.py +12 -0
  744. angr/simos/cgc.py +5 -5
  745. angr/simos/javavm.py +18 -23
  746. angr/simos/linux.py +6 -6
  747. angr/simos/simos.py +12 -16
  748. angr/simos/userland.py +3 -3
  749. angr/simos/windows.py +6 -11
  750. angr/state_hierarchy.py +1 -1
  751. angr/state_plugins/__init__.py +84 -28
  752. angr/state_plugins/callstack.py +1 -1
  753. angr/state_plugins/concrete.py +3 -4
  754. angr/state_plugins/filesystem.py +3 -3
  755. angr/state_plugins/gdb.py +1 -1
  756. angr/state_plugins/heap/__init__.py +14 -5
  757. angr/state_plugins/heap/heap_base.py +5 -4
  758. angr/state_plugins/heap/heap_brk.py +1 -1
  759. angr/state_plugins/heap/heap_freelist.py +1 -1
  760. angr/state_plugins/heap/heap_ptmalloc.py +2 -20
  761. angr/state_plugins/heap/utils.py +1 -1
  762. angr/state_plugins/history.py +2 -2
  763. angr/state_plugins/javavm_classloader.py +3 -3
  764. angr/state_plugins/jni_references.py +1 -1
  765. angr/state_plugins/light_registers.py +3 -3
  766. angr/state_plugins/log.py +1 -1
  767. angr/state_plugins/plugin.py +3 -2
  768. angr/state_plugins/posix.py +3 -3
  769. angr/state_plugins/preconstrainer.py +6 -6
  770. angr/state_plugins/scratch.py +4 -4
  771. angr/state_plugins/sim_action_object.py +1 -1
  772. angr/state_plugins/solver.py +15 -19
  773. angr/state_plugins/symbolizer.py +2 -3
  774. angr/state_plugins/trace_additions.py +8 -8
  775. angr/state_plugins/uc_manager.py +1 -1
  776. angr/state_plugins/unicorn_engine.py +4 -4
  777. angr/state_plugins/view.py +1 -1
  778. angr/storage/__init__.py +9 -3
  779. angr/storage/file.py +16 -16
  780. angr/storage/memory_mixins/__init__.py +88 -6
  781. angr/storage/memory_mixins/actions_mixin.py +3 -3
  782. angr/storage/memory_mixins/address_concretization_mixin.py +6 -6
  783. angr/storage/memory_mixins/bvv_conversion_mixin.py +1 -1
  784. angr/storage/memory_mixins/clouseau_mixin.py +1 -1
  785. angr/storage/memory_mixins/convenient_mappings_mixin.py +8 -10
  786. angr/storage/memory_mixins/default_filler_mixin.py +3 -3
  787. angr/storage/memory_mixins/hex_dumper_mixin.py +1 -1
  788. angr/storage/memory_mixins/{javavm_memory/javavm_memory_mixin.py → javavm_memory_mixin.py} +15 -12
  789. angr/storage/memory_mixins/{keyvalue_memory/keyvalue_memory_mixin.py → keyvalue_memory_mixin.py} +11 -6
  790. angr/storage/memory_mixins/multi_value_merger_mixin.py +5 -5
  791. angr/storage/memory_mixins/name_resolution_mixin.py +2 -2
  792. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +1 -1
  793. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -1
  794. angr/storage/memory_mixins/paged_memory/pages/__init__.py +15 -0
  795. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +1 -1
  796. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +2 -2
  797. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +2 -2
  798. angr/storage/memory_mixins/regioned_memory/__init__.py +10 -0
  799. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +1 -1
  800. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -1
  801. angr/storage/memory_mixins/regioned_memory/region_data.py +2 -2
  802. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +1 -1
  803. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +4 -4
  804. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +7 -19
  805. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +1 -1
  806. angr/storage/memory_mixins/simple_interface_mixin.py +1 -1
  807. angr/storage/memory_mixins/simplification_mixin.py +1 -1
  808. angr/storage/memory_mixins/size_resolution_mixin.py +2 -2
  809. angr/storage/memory_mixins/slotted_memory.py +1 -1
  810. angr/storage/memory_mixins/smart_find_mixin.py +3 -3
  811. angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
  812. angr/storage/memory_mixins/unwrapper_mixin.py +1 -1
  813. angr/storage/memory_object.py +8 -10
  814. angr/utils/__init__.py +12 -0
  815. angr/utils/enums_conv.py +1 -1
  816. angr/utils/library.py +2 -2
  817. angr/utils/mp.py +1 -1
  818. angr/utils/timing.py +30 -18
  819. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/METADATA +8 -7
  820. angr-9.2.120.dist-info/RECORD +1340 -0
  821. angr/analyses/s_liveness/__init__.py +0 -2
  822. angr/analyses/s_propagator/__init__.py +0 -2
  823. angr/analyses/s_reaching_definitions/s_rda.py +0 -479
  824. angr/knowledge_base/__init__.py +0 -2
  825. angr/knowledge_plugins/structured_code/__init__.py +0 -2
  826. angr/knowledge_plugins/sync/__init__.py +0 -2
  827. angr/knowledge_plugins/sync/sync_controller.py +0 -324
  828. angr/misc/range.py +0 -24
  829. angr/misc/weakpatch.py +0 -59
  830. angr/storage/memory_mixins/javavm_memory/__init__.py +0 -2
  831. angr/storage/memory_mixins/keyvalue_memory/__init__.py +0 -2
  832. angr/storage/pcap.py +0 -65
  833. angr/utils/typing.py +0 -18
  834. angr-9.2.118.dist-info/RECORD +0 -1344
  835. /angr/analyses/{s_liveness/s_liveness.py → s_liveness.py} +0 -0
  836. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/LICENSE +0 -0
  837. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/WHEEL +0 -0
  838. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/entry_points.txt +0 -0
  839. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,16 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .data_dependency_analysis import DataDependencyGraphAnalysis
3
4
  from .dep_nodes import DepNodeTypes, BaseDepNode, VarDepNode, MemDepNode, ConstantDepNode, TmpDepNode, RegDepNode
5
+
6
+
7
+ __all__ = (
8
+ "DataDependencyGraphAnalysis",
9
+ "DepNodeTypes",
10
+ "BaseDepNode",
11
+ "VarDepNode",
12
+ "MemDepNode",
13
+ "ConstantDepNode",
14
+ "TmpDepNode",
15
+ "RegDepNode",
16
+ )
@@ -12,11 +12,11 @@ import claripy
12
12
  from claripy.ast.bv import BV
13
13
  from .dep_nodes import DepNodeTypes, ConstantDepNode, MemDepNode, VarDepNode, RegDepNode, TmpDepNode
14
14
  from .sim_act_location import SimActLocation, DEFAULT_LOCATION, ParsedInstruction
15
- from .. import Analysis
16
- from ...analyses import AnalysesHub
17
- from ...errors import AngrDDGError, AngrAnalysisError, SimValueError
18
- from ...state_plugins import SimActionData
19
- from ...storage import DefaultMemory
15
+ from angr.analyses import Analysis
16
+ from angr.analyses import AnalysesHub
17
+ from angr.errors import AngrDDGError, AngrAnalysisError, SimValueError
18
+ from angr.state_plugins import SimActionData
19
+ from angr.storage import DefaultMemory
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  from .dep_nodes import BaseDepNode
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
  import logging
3
3
 
4
- from ..sim_procedure import SimProcedure
4
+ from angr.sim_procedure import SimProcedure
5
5
 
6
6
  l = logging.getLogger(name=__name__)
7
7
 
angr/analyses/ddg.py CHANGED
@@ -6,9 +6,9 @@ import networkx
6
6
  import pyvex
7
7
  from . import Analysis
8
8
 
9
- from ..code_location import CodeLocation
10
- from ..errors import SimSolverModeError, SimUnsatError, AngrDDGError
11
- from ..sim_variable import (
9
+ from angr.code_location import CodeLocation
10
+ from angr.errors import SimSolverModeError, SimUnsatError, AngrDDGError
11
+ from angr.sim_variable import (
12
12
  SimRegisterVariable,
13
13
  SimMemoryVariable,
14
14
  SimTemporaryVariable,
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .region_identifier import RegionIdentifier
3
4
  from .structured_codegen import CStructuredCodeGenerator, ImportSourceCode
4
5
  from .clinic import Clinic
@@ -10,7 +11,31 @@ from .callsite_maker import CallSiteMaker
10
11
  from .ail_simplifier import AILSimplifier
11
12
  from .ssailification import Ssailification
12
13
  from .dephication import GraphDephication, SeqNodeDephication
14
+ from .presets import DECOMPILATION_PRESETS
13
15
  from . import structuring
14
16
  from . import optimization_passes
15
17
 
18
+
16
19
  StructuredCodeGenerator = CStructuredCodeGenerator
20
+
21
+
22
+ __all__ = (
23
+ "RegionIdentifier",
24
+ "CStructuredCodeGenerator",
25
+ "ImportSourceCode",
26
+ "Clinic",
27
+ "RegionSimplifier",
28
+ "Decompiler",
29
+ "options",
30
+ "options_by_category",
31
+ "BlockSimplifier",
32
+ "CallSiteMaker",
33
+ "AILSimplifier",
34
+ "Ssailification",
35
+ "GraphDephication",
36
+ "SeqNodeDephication",
37
+ "DECOMPILATION_PRESETS",
38
+ "structuring",
39
+ "optimization_passes",
40
+ "StructuredCodeGenerator",
41
+ )
@@ -27,14 +27,14 @@ from ailment.expression import (
27
27
 
28
28
  from angr.analyses.s_reaching_definitions import SRDAModel
29
29
  from angr.utils.ail import is_phi_assignment, HasExprWalker
30
- from ...code_location import CodeLocation, ExternalCodeLocation
31
- from ...sim_variable import SimStackVariable, SimMemoryVariable, SimVariable
32
- from ...knowledge_plugins.propagations.states import Equivalence
33
- from ...knowledge_plugins.key_definitions import atoms
34
- from ...knowledge_plugins.key_definitions.definition import Definition
35
- from ...knowledge_plugins.key_definitions.constants import OP_BEFORE
36
- from ...errors import AngrRuntimeError
37
- from .. import Analysis, AnalysesHub
30
+ from angr.code_location import CodeLocation, ExternalCodeLocation
31
+ from angr.sim_variable import SimStackVariable, SimMemoryVariable, SimVariable
32
+ from angr.knowledge_plugins.propagations.states import Equivalence
33
+ from angr.knowledge_plugins.key_definitions import atoms
34
+ from angr.knowledge_plugins.key_definitions.definition import Definition
35
+ from angr.knowledge_plugins.key_definitions.constants import OP_BEFORE
36
+ from angr.errors import AngrRuntimeError
37
+ from angr.analyses import Analysis, AnalysesHub
38
38
  from .ailgraph_walker import AILGraphWalker
39
39
  from .expression_narrower import ExpressionNarrowingWalker
40
40
  from .block_simplifier import BlockSimplifier
@@ -475,7 +475,7 @@ class AILSimplifier(Analysis):
475
475
  assert is_phi_assignment(stmt)
476
476
 
477
477
  for _, vvar in stmt.src.src_and_vvars:
478
- if vvar.varid == def_.atom.varid:
478
+ if vvar is not None and vvar.varid == def_.atom.varid:
479
479
  use_exprs.append((vvar, loc, ("phi-src-expr", (vvar,))))
480
480
 
481
481
  # replace all uses if necessary
@@ -10,9 +10,9 @@ from ailment import AILBlockWalkerBase
10
10
 
11
11
  from angr.code_location import ExternalCodeLocation, CodeLocation
12
12
 
13
- from ...analyses.s_propagator import SPropagatorAnalysis
14
- from ...analyses.s_reaching_definitions import SReachingDefinitionsAnalysis, SRDAModel
15
- from .. import Analysis, register_analysis
13
+ from angr.analyses.s_propagator import SPropagatorAnalysis
14
+ from angr.analyses.s_reaching_definitions import SReachingDefinitionsAnalysis, SRDAModel
15
+ from angr.analyses import Analysis, register_analysis
16
16
  from .peephole_optimizations import (
17
17
  MULTI_STMT_OPTS,
18
18
  STMT_OPTS,
@@ -11,7 +11,7 @@ from angr.sim_type import SimTypeBottom, SimTypePointer, SimTypeChar, SimTypeInt
11
11
  from angr.calling_conventions import SimRegArg, SimStackArg, SimCC, SimStructArg
12
12
  from angr.knowledge_plugins.key_definitions.constants import OP_BEFORE
13
13
  from angr.analyses import Analysis, register_analysis
14
- from angr.analyses.s_reaching_definitions.s_rda import SRDAView
14
+ from angr.analyses.s_reaching_definitions import SRDAView
15
15
  from angr import SIM_LIBRARIES, SIM_TYPE_COLLECTIONS
16
16
 
17
17
  if TYPE_CHECKING:
@@ -284,7 +284,9 @@ class CallSiteMaker(Analysis):
284
284
 
285
285
  if vvar is not None:
286
286
  vvar_value = view.get_vvar_value(vvar)
287
- return vvar_value, vvar
287
+ if not isinstance(vvar_value, Expr.Phi):
288
+ return vvar_value, vvar
289
+ return None, vvar
288
290
 
289
291
  return None
290
292
 
@@ -311,7 +313,7 @@ class CallSiteMaker(Analysis):
311
313
  )
312
314
  if vvar is not None:
313
315
  value = view.get_vvar_value(vvar)
314
- if value is not None:
316
+ if value is not None and not isinstance(value, Expr.Phi):
315
317
  return None, value
316
318
  return None, Expr.VirtualVariable(
317
319
  self._atom_idx(),
@@ -12,13 +12,14 @@ import capstone
12
12
 
13
13
  import ailment
14
14
 
15
- from ...knowledge_base import KnowledgeBase
16
- from ...knowledge_plugins.functions import Function
17
- from ...knowledge_plugins.cfg.memory_data import MemoryDataSort
18
- from ...codenode import BlockNode
19
- from ...utils import timethis
20
- from ...calling_conventions import SimRegArg, SimStackArg, SimFunctionArgument
21
- from ...sim_type import (
15
+ from angr.errors import AngrDecompilationError
16
+ from angr.knowledge_base import KnowledgeBase
17
+ from angr.knowledge_plugins.functions import Function
18
+ from angr.knowledge_plugins.cfg.memory_data import MemoryDataSort
19
+ from angr.codenode import BlockNode
20
+ from angr.utils import timethis
21
+ from angr.calling_conventions import SimRegArg, SimStackArg, SimFunctionArgument
22
+ from angr.sim_type import (
22
23
  SimTypeChar,
23
24
  SimTypeInt,
24
25
  SimTypeLongLong,
@@ -28,17 +29,16 @@ from ...sim_type import (
28
29
  SimTypeFloat,
29
30
  SimTypePointer,
30
31
  )
31
- from ..stack_pointer_tracker import Register, OffsetVal
32
- from ...sim_variable import SimVariable, SimStackVariable, SimRegisterVariable, SimMemoryVariable
33
- from ...procedures.stubs.UnresolvableCallTarget import UnresolvableCallTarget
34
- from ...procedures.stubs.UnresolvableJumpTarget import UnresolvableJumpTarget
35
- from .. import Analysis, register_analysis
36
- from ..cfg.cfg_base import CFGBase
37
- from ..reaching_definitions import ReachingDefinitionsAnalysis
32
+ from angr.analyses.stack_pointer_tracker import Register, OffsetVal
33
+ from angr.sim_variable import SimVariable, SimStackVariable, SimRegisterVariable, SimMemoryVariable
34
+ from angr.procedures.stubs.UnresolvableCallTarget import UnresolvableCallTarget
35
+ from angr.procedures.stubs.UnresolvableJumpTarget import UnresolvableJumpTarget
36
+ from angr.analyses import Analysis, register_analysis
37
+ from angr.analyses.cfg.cfg_base import CFGBase
38
+ from angr.analyses.reaching_definitions import ReachingDefinitionsAnalysis
38
39
  from .return_maker import ReturnMaker
39
40
  from .ailgraph_walker import AILGraphWalker, RemoveNodeNotice
40
41
  from .optimization_passes import (
41
- get_default_optimization_passes,
42
42
  OptimizationPassStage,
43
43
  RegisterSaveAreaSimplifier,
44
44
  StackCanarySimplifier,
@@ -128,7 +128,7 @@ class Clinic(Analysis):
128
128
  self._func_graph: networkx.DiGraph | None = None
129
129
  self._ail_manager = None
130
130
  self._blocks_by_addr_and_size = {}
131
- self._entry_node_addr: tuple[int, int | None] = self.function.addr, None
131
+ self.entry_node_addr: tuple[int, int | None] = self.function.addr, None
132
132
 
133
133
  self._fold_callexprs_into_conditions = fold_callexprs_into_conditions
134
134
  self._insert_labels = insert_labels
@@ -164,8 +164,7 @@ class Clinic(Analysis):
164
164
  if optimization_passes is not None:
165
165
  self._optimization_passes = optimization_passes
166
166
  else:
167
- self._optimization_passes = get_default_optimization_passes(self.project.arch, self.project.simos.name)
168
- l.debug("Get %d optimization passes for the current binary.", len(self._optimization_passes))
167
+ self._optimization_passes = []
169
168
 
170
169
  if self._mode == ClinicMode.DECOMPILE:
171
170
  self._analyze_for_decompiling()
@@ -712,11 +711,11 @@ class Clinic(Analysis):
712
711
  if self._func_graph.in_degree(node) == 0 and CFGBase._is_noop_block(
713
712
  self.project.arch, self.project.factory.block(node.addr, node.size)
714
713
  ):
715
- if (node.addr, None) == self._entry_node_addr:
714
+ if (node.addr, None) == self.entry_node_addr:
716
715
  # this is the entry node. after removing this node, the new entry node will be its successor
717
716
  if self._func_graph.out_degree[node] == 1:
718
717
  succ = next(iter(self._func_graph.successors(node)))
719
- self._entry_node_addr = succ.addr, None
718
+ self.entry_node_addr = succ.addr, None
720
719
  else:
721
720
  # we just don't remove this node...
722
721
  continue
@@ -1210,6 +1209,7 @@ class Clinic(Analysis):
1210
1209
  # of the graph is applied
1211
1210
  self.unoptimized_graph = self._copy_graph(ail_graph)
1212
1211
 
1212
+ pass_ = timethis(pass_)
1213
1213
  a = pass_(
1214
1214
  self.function,
1215
1215
  blocks_by_addr=addr_to_blocks,
@@ -1217,6 +1217,7 @@ class Clinic(Analysis):
1217
1217
  graph=ail_graph,
1218
1218
  variable_kb=variable_kb,
1219
1219
  vvar_id_start=self.vvar_id_start,
1220
+ entry_node_addr=self.entry_node_addr,
1220
1221
  **kwargs,
1221
1222
  )
1222
1223
  if a.out_graph:
@@ -1238,7 +1239,7 @@ class Clinic(Analysis):
1238
1239
  ail_graph: networkx.DiGraph,
1239
1240
  arg_vvars: dict[int, tuple[ailment.Expr.VirtualVariable, SimVariable]],
1240
1241
  ) -> networkx.DiGraph:
1241
- entrypoint = next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self._entry_node_addr))
1242
+ entrypoint = next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self.entry_node_addr))
1242
1243
  new_stmts = []
1243
1244
  for arg in arg_list:
1244
1245
  if not isinstance(arg, SimRegisterVariable):
@@ -1296,7 +1297,7 @@ class Clinic(Analysis):
1296
1297
  ssailification = self.project.analyses.Ssailification(
1297
1298
  self.function,
1298
1299
  ail_graph,
1299
- entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self._entry_node_addr)),
1300
+ entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self.entry_node_addr)),
1300
1301
  ail_manager=self._ail_manager,
1301
1302
  ssa_stackvars=False,
1302
1303
  vvar_id_start=self.vvar_id_start,
@@ -1309,7 +1310,7 @@ class Clinic(Analysis):
1309
1310
  ssailification = self.project.analyses.Ssailification(
1310
1311
  self.function,
1311
1312
  ail_graph,
1312
- entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self._entry_node_addr)),
1313
+ entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self.entry_node_addr)),
1313
1314
  ail_manager=self._ail_manager,
1314
1315
  ssa_stackvars=True,
1315
1316
  vvar_id_start=self.vvar_id_start,
@@ -1322,7 +1323,7 @@ class Clinic(Analysis):
1322
1323
  dephication = self.project.analyses.GraphDephicationVVarMapping(
1323
1324
  self.function,
1324
1325
  ail_graph,
1325
- entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self._entry_node_addr)),
1326
+ entry=next(iter(bb for bb in ail_graph if (bb.addr, bb.idx) == self.entry_node_addr)),
1326
1327
  vvar_id_start=self.vvar_id_start,
1327
1328
  )
1328
1329
  self.vvar_id_start = dephication.vvar_id_start + 1
@@ -1794,21 +1795,30 @@ class Clinic(Analysis):
1794
1795
  if blocks_by_addr_and_size is None:
1795
1796
  blocks_by_addr_and_size = self._blocks_by_addr_and_size
1796
1797
 
1797
- node_to_block_mapping = {}
1798
1798
  graph = networkx.DiGraph()
1799
1799
 
1800
- for node in func_graph.nodes():
1801
- ail_block = blocks_by_addr_and_size.get((node.addr, node.size), node)
1802
- node_to_block_mapping[node] = ail_block
1803
-
1804
- if ail_block is not None:
1805
- graph.add_node(ail_block)
1806
-
1807
- for src_node, dst_node, data in func_graph.edges(data=True):
1808
- src = node_to_block_mapping[src_node]
1809
- dst = node_to_block_mapping[dst_node]
1800
+ entry_node = next(iter(node for node in func_graph if node.addr == self.entry_node_addr[0]), None)
1801
+ if entry_node is None:
1802
+ raise AngrDecompilationError(
1803
+ f"Entry node with address {self.entry_node_addr[0]:#x} not found in the function graph"
1804
+ )
1810
1805
 
1811
- if dst is not None:
1806
+ # add the entry node into the graph
1807
+ ail_block = blocks_by_addr_and_size.get((entry_node.addr, entry_node.size))
1808
+ if ail_block is None:
1809
+ raise AngrDecompilationError(f"AIL block at address {entry_node.addr:#x} not found")
1810
+ graph.add_node(ail_block)
1811
+
1812
+ # get all descendants and only include them in the AIL graph.
1813
+ # this way all unreachable blocks will be excluded from the AIL graph.
1814
+ descendants = networkx.descendants(func_graph, entry_node) | {entry_node}
1815
+ for src_node, dst_node, data in networkx.subgraph_view(
1816
+ func_graph, filter_node=lambda n: n in descendants
1817
+ ).edges(data=True):
1818
+ src = blocks_by_addr_and_size.get((src_node.addr, src_node.size))
1819
+ dst = blocks_by_addr_and_size.get((dst_node.addr, dst_node.size))
1820
+
1821
+ if src is not None and dst is not None:
1812
1822
  graph.add_edge(src, dst, **data)
1813
1823
 
1814
1824
  return graph
@@ -12,11 +12,11 @@ from unique_log_filter import UniqueLogFilter
12
12
 
13
13
 
14
14
  from angr.utils.graph import GraphUtils
15
- from ...utils.lazy_import import lazy_import
16
- from ...utils import is_pyinstaller
17
- from ...utils.graph import dominates, inverted_idoms
18
- from ...block import Block, BlockNode
19
- from ...errors import AngrRuntimeError
15
+ from angr.utils.lazy_import import lazy_import
16
+ from angr.utils import is_pyinstaller
17
+ from angr.utils.graph import dominates, inverted_idoms
18
+ from angr.block import Block, BlockNode
19
+ from angr.errors import AngrRuntimeError
20
20
  from .peephole_optimizations import InvertNegatedLogicalConjunctionsAndDisjunctions
21
21
  from .structuring.structurer_nodes import (
22
22
  MultiNode,
@@ -56,6 +56,25 @@ _UNIFIABLE_COMPARISONS = {
56
56
  "SGE",
57
57
  }
58
58
 
59
+
60
+ _INVERSE_OPERATIONS = {
61
+ "__eq__": "__ne__",
62
+ "__ne__": "__eq__",
63
+ "__gt__": "__le__",
64
+ "__lt__": "__ge__",
65
+ "__ge__": "__lt__",
66
+ "__le__": "__gt__",
67
+ "ULT": "UGE",
68
+ "UGE": "ULT",
69
+ "UGT": "ULE",
70
+ "ULE": "UGT",
71
+ "SLT": "SGE",
72
+ "SGE": "SLT",
73
+ "SLE": "SGT",
74
+ "SGT": "SLE",
75
+ }
76
+
77
+
59
78
  #
60
79
  # Util methods and mapping used during AIL AST to claripy AST conversion
61
80
  #
@@ -138,6 +157,9 @@ _ail2claripy_op_mapping = {
138
157
  "SBorrow": lambda expr, _, m: _dummy_bvs(expr, m),
139
158
  "ExpCmpNE": lambda expr, _, m: _dummy_bools(expr, m),
140
159
  "CmpORD": lambda expr, _, m: _dummy_bvs(expr, m), # in case CmpORDRewriter fails
160
+ "GetMSBs": lambda expr, _, m: _dummy_bvs(expr, m),
161
+ "InterleaveLOV": lambda expr, _, m: _dummy_bvs(expr, m),
162
+ "InterleaveHIV": lambda expr, _, m: _dummy_bvs(expr, m),
141
163
  }
142
164
 
143
165
  #
@@ -178,7 +200,7 @@ class ConditionProcessor:
178
200
  predicate = self._extract_predicate(src, dst, edge_type)
179
201
  except EmptyBlockNotice:
180
202
  # catch empty block notice - although this should not really happen
181
- predicate = claripy.true
203
+ predicate = claripy.true()
182
204
  return predicate
183
205
 
184
206
  def recover_edge_conditions(self, region, graph=None) -> dict:
@@ -254,15 +276,15 @@ class ConditionProcessor:
254
276
 
255
277
  if node is head:
256
278
  # the head is always reachable
257
- reaching_condition = claripy.true
279
+ reaching_condition = claripy.true()
258
280
  elif idoms is not None and _strictly_postdominates(idoms, node, head):
259
281
  # the node that post dominates the head is always reachable
260
- reaching_conditions[node] = claripy.true
282
+ reaching_conditions[node] = claripy.true()
261
283
  else:
262
284
  for pred in preds:
263
285
  edge = (pred, node)
264
- pred_condition = reaching_conditions.get(pred, claripy.true)
265
- edge_condition = edge_conditions.get(edge, claripy.true)
286
+ pred_condition = reaching_conditions.get(pred, claripy.true())
287
+ edge_condition = edge_conditions.get(edge, claripy.true())
266
288
 
267
289
  if reaching_condition is None:
268
290
  reaching_condition = claripy.And(pred_condition, edge_condition)
@@ -596,7 +618,7 @@ class ConditionProcessor:
596
618
  return claripy.Not(bool_var)
597
619
 
598
620
  if type(src_block) is GraphRegion:
599
- return claripy.true
621
+ return claripy.true()
600
622
 
601
623
  # sometimes the last statement is the conditional jump. sometimes it's the first statement of the block
602
624
  if (
@@ -609,10 +631,10 @@ class ConditionProcessor:
609
631
  last_stmt = self.get_last_statement(src_block)
610
632
 
611
633
  if last_stmt is None:
612
- return claripy.true
634
+ return claripy.true()
613
635
  if type(last_stmt) is ailment.Stmt.Jump:
614
636
  if isinstance(last_stmt.target, ailment.Expr.Const):
615
- return claripy.true
637
+ return claripy.true()
616
638
  # indirect jump
617
639
  target_ast = self.claripy_ast_from_ail_condition(last_stmt.target)
618
640
  return target_ast == dst_block.addr
@@ -622,7 +644,7 @@ class ConditionProcessor:
622
644
  return bool_var
623
645
  return claripy.Not(bool_var)
624
646
 
625
- return claripy.true
647
+ return claripy.true()
626
648
 
627
649
  #
628
650
  # Expression conversion
@@ -727,6 +749,7 @@ class ConditionProcessor:
727
749
  "ZeroExt": lambda cond_, tags: _binary_op_reduce(
728
750
  "Concat", [claripy.BVV(0, cond_.args[0]), cond_.args[1]], tags
729
751
  ),
752
+ "Concat": lambda cond_, tags: _binary_op_reduce("Concat", cond_.args, tags),
730
753
  }
731
754
 
732
755
  if cond.op in _mapping:
@@ -780,8 +803,8 @@ class ConditionProcessor:
780
803
  var = claripy.BoolV(condition.value)
781
804
  else:
782
805
  var = claripy.BVV(condition.value, condition.bits)
783
- if isinstance(var, claripy.Bits) and var.size() == 1:
784
- var = claripy.true if var.concrete_value == 1 else claripy.false
806
+ if isinstance(var, claripy.ast.Bits) and var.size() == 1:
807
+ var = claripy.true() if var.concrete_value == 1 else claripy.false()
785
808
  return var
786
809
  if isinstance(condition, ailment.Expr.Tmp):
787
810
  l.warning("Left-over ailment.Tmp variable %s.", condition)
@@ -839,7 +862,7 @@ class ConditionProcessor:
839
862
 
840
863
  if ast.op in _UNIFIABLE_COMPARISONS:
841
864
  # unify comparisons to enable more simplification opportunities without going "deep" in sympy
842
- inverse_op = getattr(ast.args[0], claripy.operations.inverse_operations[ast.op])
865
+ inverse_op = getattr(ast.args[0], _INVERSE_OPERATIONS[ast.op])
843
866
  return sympy.Not(ConditionProcessor.claripy_ast_to_sympy_expr(inverse_op(ast.args[1]), memo=memo))
844
867
 
845
868
  if memo is not None and ast in memo:
@@ -860,9 +883,9 @@ class ConditionProcessor:
860
883
  if isinstance(expr, sympy.Not):
861
884
  return claripy.Not(ConditionProcessor.sympy_expr_to_claripy_ast(expr.args[0], memo))
862
885
  if isinstance(expr, sympy.logic.boolalg.BooleanTrue):
863
- return claripy.true
886
+ return claripy.true()
864
887
  if isinstance(expr, sympy.logic.boolalg.BooleanFalse):
865
- return claripy.false
888
+ return claripy.false()
866
889
  raise AngrRuntimeError("Unreachable reached")
867
890
 
868
891
  @staticmethod
@@ -1092,7 +1115,9 @@ class ConditionProcessor:
1092
1115
  for term in all_terms_without_negs:
1093
1116
  neg = negations.get(term)
1094
1117
 
1095
- replaced_with_true = ConditionProcessor._replace_term_in_ast(cond, term, claripy.true, neg, claripy.false)
1118
+ replaced_with_true = ConditionProcessor._replace_term_in_ast(
1119
+ cond, term, claripy.true(), neg, claripy.false()
1120
+ )
1096
1121
  sat0 = solver.satisfiable(
1097
1122
  extra_constraints=(
1098
1123
  cond,
@@ -1108,7 +1133,9 @@ class ConditionProcessor:
1108
1133
  if sat0 or sat1:
1109
1134
  continue
1110
1135
 
1111
- replaced_with_false = ConditionProcessor._replace_term_in_ast(cond, term, claripy.false, neg, claripy.true)
1136
+ replaced_with_false = ConditionProcessor._replace_term_in_ast(
1137
+ cond, term, claripy.false(), neg, claripy.true()
1138
+ )
1112
1139
  sat0 = solver.satisfiable(
1113
1140
  extra_constraints=(
1114
1141
  cond,
@@ -1,5 +1,16 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .boolean_counter import BooleanCounter
3
4
  from .call_counter import AILBlockCallCounter
4
5
  from .seq_cf_structure_counter import ControlFlowStructureCounter
5
6
  from .expression_counters import SingleExpressionCounter, RegisterExpressionCounter, OperatorCounter
7
+
8
+
9
+ __all__ = (
10
+ "BooleanCounter",
11
+ "AILBlockCallCounter",
12
+ "ControlFlowStructureCounter",
13
+ "SingleExpressionCounter",
14
+ "RegisterExpressionCounter",
15
+ "OperatorCounter",
16
+ )
@@ -10,15 +10,14 @@ from cle import SymbolType
10
10
  import ailment
11
11
 
12
12
  from angr.analyses.cfg import CFGFast
13
- from ...knowledge_plugins.functions.function import Function
14
- from ...knowledge_base import KnowledgeBase
15
- from ...sim_variable import SimMemoryVariable, SimRegisterVariable, SimStackVariable
16
- from ...utils import timethis
17
- from .. import Analysis, AnalysesHub
13
+ from angr.knowledge_plugins.functions.function import Function
14
+ from angr.knowledge_base import KnowledgeBase
15
+ from angr.sim_variable import SimMemoryVariable, SimRegisterVariable, SimStackVariable
16
+ from angr.utils import timethis
17
+ from angr.analyses import Analysis, AnalysesHub
18
18
  from .structuring import RecursiveStructurer, PhoenixStructurer, DEFAULT_STRUCTURER
19
19
  from .region_identifier import RegionIdentifier
20
20
  from .optimization_passes.optimization_pass import OptimizationPassStage
21
- from .optimization_passes import get_default_optimization_passes
22
21
  from .ailgraph_walker import AILGraphWalker
23
22
  from .condition_processor import ConditionProcessor
24
23
  from .decompilation_options import DecompilationOption
@@ -26,6 +25,7 @@ from .decompilation_cache import DecompilationCache
26
25
  from .utils import remove_labels
27
26
  from .sequence_walker import SequenceWalker
28
27
  from .structuring.structurer_nodes import SequenceNode
28
+ from .presets import DECOMPILATION_PRESETS, DecompilationPreset
29
29
 
30
30
  if TYPE_CHECKING:
31
31
  from angr.knowledge_plugins.cfg.cfg_model import CFGModel
@@ -52,6 +52,7 @@ class Decompiler(Analysis):
52
52
  func: Function | str | int,
53
53
  cfg: CFGFast | CFGModel | None = None,
54
54
  options=None,
55
+ preset: str | DecompilationPreset | None = None,
55
56
  optimization_passes=None,
56
57
  sp_tracker_track_memory=True,
57
58
  variable_kb=None,
@@ -73,11 +74,21 @@ class Decompiler(Analysis):
73
74
  self.func: Function = func
74
75
  self._cfg = cfg.model if isinstance(cfg, CFGFast) else cfg
75
76
  self._options = options
76
- if optimization_passes is None:
77
- self._optimization_passes = get_default_optimization_passes(self.project.arch, self.project.simos.name)
78
- l.debug("Get %d optimization passes for the current binary.", len(self._optimization_passes))
79
- else:
77
+
78
+ if preset is None and optimization_passes:
80
79
  self._optimization_passes = optimization_passes
80
+ else:
81
+ # we use the preset
82
+ if isinstance(preset, str):
83
+ if preset not in DECOMPILATION_PRESETS:
84
+ raise KeyError(f"Decompilation preset {preset} is not found")
85
+ preset = DECOMPILATION_PRESETS[preset]
86
+ elif preset is None:
87
+ preset = DECOMPILATION_PRESETS["default"]
88
+ if not isinstance(preset, DecompilationPreset):
89
+ raise TypeError('"preset" must be a DecompilationPreset instance')
90
+ self._optimization_passes = preset.get_optimization_passes(self.project.arch, self.project.simos.name)
91
+ l.debug("Get %d optimization passes for the current binary.", len(self._optimization_passes))
81
92
  self._sp_tracker_track_memory = sp_tracker_track_memory
82
93
  self._peephole_optimizations = peephole_optimizations
83
94
  self._vars_must_struct = vars_must_struct
@@ -299,6 +310,7 @@ class Decompiler(Analysis):
299
310
  update_graph=update_graph,
300
311
  force_loop_single_exit=self._force_loop_single_exit,
301
312
  complete_successors=self._complete_successors,
313
+ entry_node_addr=self.clinic.entry_node_addr,
302
314
  **self.options_to_params(self.options_by_class["region_identifier"]),
303
315
  )
304
316
 
@@ -334,6 +346,7 @@ class Decompiler(Analysis):
334
346
  )
335
347
  continue
336
348
 
349
+ pass_ = timethis(pass_)
337
350
  a = pass_(
338
351
  self.func,
339
352
  blocks_by_addr=addr_to_blocks,
@@ -341,6 +354,7 @@ class Decompiler(Analysis):
341
354
  graph=ail_graph,
342
355
  variable_kb=self._variable_kb,
343
356
  reaching_definitions=reaching_definitions,
357
+ entry_node_addr=self.clinic.entry_node_addr,
344
358
  **kwargs,
345
359
  )
346
360
 
@@ -389,6 +403,7 @@ class Decompiler(Analysis):
389
403
  )
390
404
  continue
391
405
 
406
+ pass_ = timethis(pass_)
392
407
  a = pass_(
393
408
  self.func,
394
409
  blocks_by_addr=addr_to_blocks,
@@ -398,6 +413,7 @@ class Decompiler(Analysis):
398
413
  region_identifier=ri,
399
414
  reaching_definitions=reaching_definitions,
400
415
  vvar_id_start=self.vvar_id_start,
416
+ entry_node_addr=self.clinic.entry_node_addr,
401
417
  **kwargs,
402
418
  )
403
419
 
@@ -425,6 +441,7 @@ class Decompiler(Analysis):
425
441
  if pass_.STAGE != OptimizationPassStage.AFTER_STRUCTURING:
426
442
  continue
427
443
 
444
+ pass_ = timethis(pass_)
428
445
  a = pass_(self.func, seq=seq_node, **kwargs)
429
446
  if a.out_seq:
430
447
  seq_node = a.out_seq