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