angr 9.2.119__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 (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.dll +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
@@ -0,0 +1,213 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ from collections import defaultdict
5
+
6
+ from ailment.statement import Assignment, Call, Label
7
+ from ailment.expression import VirtualVariable, Expression
8
+
9
+ from angr.utils.ail import is_phi_assignment
10
+ from angr.utils.graph import GraphUtils
11
+ from angr.knowledge_plugins.key_definitions.constants import ObservationPointType, ObservationPoint
12
+ from angr.utils.ssa import get_reg_offset_base
13
+ from angr.calling_conventions import SimRegArg, default_cc
14
+
15
+ from .s_rda_model import SRDAModel
16
+
17
+ log = logging.getLogger(__name__)
18
+
19
+
20
+ class SRDAView:
21
+ """
22
+ A view of SRDA model that provides various functionalities for querying the model.
23
+ """
24
+
25
+ def __init__(self, model: SRDAModel):
26
+ self.model = model
27
+
28
+ def _get_call_clobbered_regs(self, stmt: Call) -> set[int]:
29
+ cc = stmt.calling_convention
30
+ if cc is None:
31
+ # get the default calling convention
32
+ cc = default_cc(self.model.arch.name) # TODO: platform and language
33
+ if cc is not None:
34
+ reg_list = cc.CALLER_SAVED_REGS
35
+ if isinstance(cc.RETURN_VAL, SimRegArg):
36
+ reg_list.append(cc.RETURN_VAL.reg_name)
37
+ return {self.model.arch.registers[reg_name][0] for reg_name in reg_list}
38
+ log.warning("Cannot determine registers that are clobbered by call statement %r.", stmt)
39
+ return set()
40
+
41
+ def _get_vvar_by_insn(self, addr: int, op_type: ObservationPointType, predicate, block_idx: int | None = None):
42
+ # find the starting block
43
+ for block in self.model.func_graph:
44
+ if block.idx == block_idx and block.addr <= addr < block.addr + block.original_size:
45
+ the_block = block
46
+ break
47
+ else:
48
+ return
49
+
50
+ starting_stmt_idx = len(the_block.statements) if op_type == ObservationPointType.OP_AFTER else 0
51
+ for stmt_idx, stmt in enumerate(the_block.statements):
52
+ # skip all labels and phi assignments
53
+ if isinstance(stmt, Label) or is_phi_assignment(stmt):
54
+ if op_type == ObservationPointType.OP_BEFORE:
55
+ # ensure that we tick starting_stmt_idx forward
56
+ starting_stmt_idx = stmt_idx
57
+ continue
58
+
59
+ if (
60
+ op_type == ObservationPointType.OP_BEFORE
61
+ and stmt.ins_addr == addr
62
+ or op_type == ObservationPointType.OP_AFTER
63
+ and stmt.ins_addr > addr
64
+ ):
65
+ starting_stmt_idx = stmt_idx
66
+ break
67
+
68
+ traversed = set()
69
+ queue = [(the_block, starting_stmt_idx)]
70
+ while queue:
71
+ block, start_stmt_idx = queue.pop(0)
72
+ traversed.add(block)
73
+
74
+ stmts = block.statements[:start_stmt_idx] if start_stmt_idx is not None else block.statements
75
+
76
+ for stmt in reversed(stmts):
77
+ should_break = predicate(stmt)
78
+ if should_break:
79
+ break
80
+ else:
81
+ # not found
82
+ for pred in self.model.func_graph.predecessors(block):
83
+ if pred not in traversed:
84
+ traversed.add(pred)
85
+ queue.append((pred, None))
86
+
87
+ def get_reg_vvar_by_insn(
88
+ self, reg_offset: int, addr: int, op_type: ObservationPointType, block_idx: int | None = None
89
+ ) -> VirtualVariable | None:
90
+ reg_offset = get_reg_offset_base(reg_offset, self.model.arch)
91
+ vvars = set()
92
+
93
+ def _predicate(stmt) -> bool:
94
+ if (
95
+ isinstance(stmt, Assignment)
96
+ and isinstance(stmt.dst, VirtualVariable)
97
+ and stmt.dst.was_reg
98
+ and stmt.dst.reg_offset == reg_offset
99
+ ):
100
+ vvars.add(stmt.dst)
101
+ return True
102
+ if isinstance(stmt, Call):
103
+ if (
104
+ isinstance(stmt.ret_expr, VirtualVariable)
105
+ and stmt.ret_expr.was_reg
106
+ and stmt.ret_expr.reg_offset == reg_offset
107
+ ):
108
+ vvars.add(stmt.ret_expr)
109
+ return True
110
+ # is it clobbered maybe?
111
+ clobbered_regs = self._get_call_clobbered_regs(stmt)
112
+ if reg_offset in clobbered_regs:
113
+ return True
114
+ return False
115
+
116
+ self._get_vvar_by_insn(addr, op_type, _predicate, block_idx=block_idx)
117
+
118
+ assert len(vvars) <= 1
119
+ return next(iter(vvars), None)
120
+
121
+ def get_stack_vvar_by_insn( # pylint: disable=too-many-positional-arguments
122
+ self, stack_offset: int, size: int, addr: int, op_type: ObservationPointType, block_idx: int | None = None
123
+ ) -> VirtualVariable | None:
124
+ vvars = set()
125
+
126
+ def _predicate(stmt) -> bool:
127
+ if (
128
+ isinstance(stmt, Assignment)
129
+ and isinstance(stmt.dst, VirtualVariable)
130
+ and stmt.dst.was_stack
131
+ and stmt.dst.stack_offset == stack_offset
132
+ and stmt.dst.size == size
133
+ ):
134
+ vvars.add(stmt.dst)
135
+ return True
136
+ return False
137
+
138
+ self._get_vvar_by_insn(addr, op_type, _predicate, block_idx=block_idx)
139
+
140
+ assert len(vvars) <= 1
141
+ return next(iter(vvars), None)
142
+
143
+ def get_vvar_value(self, vvar: VirtualVariable) -> Expression | None:
144
+ if vvar not in self.model.all_vvar_definitions:
145
+ return None
146
+ codeloc = self.model.all_vvar_definitions[vvar]
147
+
148
+ for block in self.model.func_graph:
149
+ if block.addr == codeloc.block_addr and block.idx == codeloc.block_idx:
150
+ if codeloc.stmt_idx < len(block.statements):
151
+ stmt = block.statements[codeloc.stmt_idx]
152
+ if isinstance(stmt, Assignment) and stmt.dst.likes(vvar):
153
+ return stmt.src
154
+ break
155
+ return None
156
+
157
+ def observe(self, observation_points: list[ObservationPoint]):
158
+ insn_ops: dict[int, ObservationPointType] = {op[1]: op[2] for op in observation_points if op[0] == "insn"}
159
+ stmt_ops: dict[tuple[tuple[int, int | None], int], ObservationPointType] = {
160
+ op[1]: op[2] for op in observation_points if op[0] == "stmt"
161
+ }
162
+ node_ops: dict[tuple[int, int | None], ObservationPointType] = {
163
+ op[1]: op[2] for op in observation_points if op[0] == "node"
164
+ }
165
+ # TODO: Other types
166
+
167
+ traversal_order = GraphUtils.quasi_topological_sort_nodes(self.model.func_graph)
168
+ all_reg2vvarid: defaultdict[tuple[int, int | None], dict[int, int]] = defaultdict(dict)
169
+
170
+ observations = {}
171
+ for block in traversal_order:
172
+ reg2vvarid = all_reg2vvarid[block.addr, block.idx]
173
+
174
+ if (block.addr, block.idx) in node_ops and node_ops[
175
+ (block.addr, block.idx)
176
+ ] == ObservationPointType.OP_BEFORE:
177
+ observations[("block", (block.addr, block.idx), ObservationPointType.OP_BEFORE)] = reg2vvarid.copy()
178
+
179
+ last_insn_addr = None
180
+ for stmt_idx, stmt in enumerate(block.statements):
181
+ if last_insn_addr != stmt.ins_addr:
182
+ # observe
183
+ if last_insn_addr in insn_ops and insn_ops[last_insn_addr] == ObservationPointType.OP_AFTER:
184
+ observations[("insn", last_insn_addr, ObservationPointType.OP_AFTER)] = reg2vvarid.copy()
185
+ if stmt.ins_addr in insn_ops and insn_ops[stmt.ins_addr] == ObservationPointType.OP_BEFORE:
186
+ observations[("insn", last_insn_addr, ObservationPointType.OP_BEFORE)] = reg2vvarid.copy()
187
+ last_insn_addr = stmt.ins_addr
188
+
189
+ stmt_key = (block.addr, block.idx), stmt_idx
190
+ if stmt_key in stmt_ops and stmt_ops[stmt_key] == ObservationPointType.OP_BEFORE:
191
+ observations[("stmt", stmt_key, ObservationPointType.OP_BEFORE)] = reg2vvarid.copy()
192
+
193
+ if isinstance(stmt, Assignment) and isinstance(stmt.dst, VirtualVariable) and stmt.dst.was_reg:
194
+ base_offset = get_reg_offset_base(stmt.dst.reg_offset, self.model.arch)
195
+ reg2vvarid[base_offset] = stmt.dst.varid
196
+ elif isinstance(stmt, Call) and isinstance(stmt.ret_expr, VirtualVariable) and stmt.ret_expr.was_reg:
197
+ base_offset = get_reg_offset_base(stmt.ret_expr.reg_offset, self.model.arch)
198
+ reg2vvarid[base_offset] = stmt.ret_expr.varid
199
+
200
+ if stmt_key in stmt_ops and stmt_ops[stmt_key] == ObservationPointType.OP_AFTER:
201
+ observations[("stmt", stmt_key, ObservationPointType.OP_AFTER)] = reg2vvarid.copy()
202
+
203
+ if (block.addr, block.idx) in node_ops and node_ops[
204
+ (block.addr, block.idx)
205
+ ] == ObservationPointType.OP_AFTER:
206
+ observations[("block", (block.addr, block.idx), ObservationPointType.OP_AFTER)] = reg2vvarid.copy()
207
+
208
+ for succ in self.model.func_graph.successors(block):
209
+ if succ is block:
210
+ continue
211
+ all_reg2vvarid[succ.addr, succ.idx] = reg2vvarid.copy()
212
+
213
+ return observations
@@ -0,0 +1,159 @@
1
+ from __future__ import annotations
2
+
3
+ from ailment.block import Block
4
+ from ailment.statement import Assignment, Call, Return
5
+
6
+ from angr.knowledge_plugins.functions import Function
7
+ from angr.knowledge_plugins.key_definitions.constants import ObservationPointType
8
+ from angr.code_location import CodeLocation, ExternalCodeLocation
9
+ from angr.analyses import Analysis, register_analysis
10
+ from angr.utils.ssa import get_vvar_uselocs, get_vvar_deflocs, get_tmp_deflocs, get_tmp_uselocs
11
+ from angr.calling_conventions import default_cc
12
+ from .s_rda_model import SRDAModel
13
+ from .s_rda_view import SRDAView
14
+
15
+
16
+ class SReachingDefinitionsAnalysis(Analysis):
17
+ """
18
+ Constant and expression propagation that only supports SSA AIL graphs.
19
+ """
20
+
21
+ def __init__( # pylint: disable=too-many-positional-arguments
22
+ self,
23
+ subject,
24
+ func_addr: int | None = None,
25
+ func_graph=None,
26
+ track_tmps: bool = False,
27
+ stack_pointer_tracker=None,
28
+ ):
29
+ if isinstance(subject, Block):
30
+ self.block = subject
31
+ self.func = None
32
+ self.mode = "block"
33
+ elif isinstance(subject, Function):
34
+ self.block = None
35
+ self.func = subject
36
+ self.mode = "function"
37
+ else:
38
+ raise TypeError(f"Unsupported subject type {type(subject)}")
39
+
40
+ self.func_graph = func_graph
41
+ self.func_addr = func_addr if func_addr is not None else self.func.addr if self.func is not None else None
42
+ self._track_tmps = track_tmps
43
+ self._sp_tracker = stack_pointer_tracker # FIXME: Is it still used?
44
+
45
+ self._bp_as_gpr = False
46
+ if self.func is not None:
47
+ self._bp_as_gpr = self.func.info.get("bp_as_gpr", False)
48
+
49
+ self.model = SRDAModel(func_graph, self.project.arch)
50
+
51
+ self._analyze()
52
+
53
+ def _analyze(self):
54
+ match self.mode:
55
+ case "block":
56
+ blocks = {(self.block.addr, self.block.idx): self.block}
57
+ case "function":
58
+ blocks = {(block.addr, block.idx): block for block in self.func_graph}
59
+ case _:
60
+ raise NotImplementedError
61
+
62
+ phi_vvars = {}
63
+ # find all vvar definitions
64
+ vvar_deflocs = get_vvar_deflocs(blocks.values(), phi_vvars=phi_vvars)
65
+ # find all explicit vvar uses
66
+ vvar_uselocs = get_vvar_uselocs(blocks.values())
67
+
68
+ # update model
69
+ for vvar, defloc in vvar_deflocs.items():
70
+ self.model.varid_to_vvar[vvar.varid] = vvar
71
+ self.model.all_vvar_definitions[vvar] = defloc
72
+
73
+ for vvar_at_use, useloc in vvar_uselocs[vvar.varid]:
74
+ self.model.all_vvar_uses[vvar].add((vvar_at_use, useloc))
75
+
76
+ self.model.phi_vvar_ids = {vvar.varid for vvar in phi_vvars}
77
+ self.model.phivarid_to_varids = {}
78
+ for vvar, src_vvars in phi_vvars.items():
79
+ self.model.phivarid_to_varids[vvar.varid] = {
80
+ src_vvar.varid for src_vvar in src_vvars if src_vvar is not None
81
+ }
82
+
83
+ if self.mode == "function":
84
+ # fix register definitions for arguments
85
+ defined_vvarids = {vvar.varid for vvar in vvar_deflocs}
86
+ undefined_vvarids = set(vvar_uselocs.keys()).difference(defined_vvarids)
87
+ for vvar_id in undefined_vvarids:
88
+ used_vvar = next(iter(vvar_uselocs[vvar_id]))[0]
89
+ self.model.varid_to_vvar[used_vvar.varid] = used_vvar
90
+ self.model.all_vvar_definitions[used_vvar] = ExternalCodeLocation()
91
+ self.model.all_vvar_uses[used_vvar] |= vvar_uselocs[vvar_id]
92
+
93
+ srda_view = SRDAView(self.model)
94
+
95
+ # fix register uses at call sites
96
+
97
+ # find all implicit vvar uses
98
+ call_stmt_ids = []
99
+ for block in blocks.values():
100
+ for stmt_idx, stmt in enumerate(block.statements):
101
+ if ( # pylint:disable=too-many-boolean-expressions
102
+ (isinstance(stmt, Call) and stmt.args is None)
103
+ or (isinstance(stmt, Assignment) and isinstance(stmt.src, Call) and stmt.src.args is None)
104
+ or (isinstance(stmt, Return) and stmt.ret_exprs and isinstance(stmt.ret_exprs[0], Call))
105
+ ):
106
+ call_stmt_ids.append(((block.addr, block.idx), stmt_idx))
107
+
108
+ observations = srda_view.observe(
109
+ [("stmt", insn_stmt_id, ObservationPointType.OP_BEFORE) for insn_stmt_id in call_stmt_ids]
110
+ )
111
+ for key, reg_to_vvarids in observations.items():
112
+ _, ((block_addr, block_idx), stmt_idx), _ = key
113
+
114
+ block = blocks[(block_addr, block_idx)]
115
+ stmt = block.statements[stmt_idx]
116
+ assert isinstance(stmt, (Call, Assignment, Return))
117
+
118
+ call: Call = (
119
+ stmt if isinstance(stmt, Call) else stmt.src if isinstance(stmt, Assignment) else stmt.ret_exprs[0]
120
+ )
121
+ if call.prototype is None:
122
+ # without knowing the prototype, we must conservatively add uses to all registers that are
123
+ # potentially used here
124
+ if call.calling_convention is not None:
125
+ cc = call.calling_convention
126
+ else:
127
+ # just use all registers in the default calling convention because we don't know anything about
128
+ # the calling convention yet
129
+ cc = default_cc(self.project.arch.name)(self.project.arch)
130
+
131
+ codeloc = CodeLocation(block_addr, stmt_idx, block_idx=block_idx, ins_addr=stmt.ins_addr)
132
+ arg_locs = cc.ARG_REGS
133
+
134
+ for arg_reg_name in arg_locs:
135
+ reg_offset = self.project.arch.registers[arg_reg_name][0]
136
+ if reg_offset in reg_to_vvarids:
137
+ vvarid = reg_to_vvarids[reg_offset]
138
+ vvar = self.model.varid_to_vvar[vvarid]
139
+ self.model.all_vvar_uses[vvar].add((None, codeloc))
140
+
141
+ if self._track_tmps:
142
+ # track tmps
143
+ tmp_deflocs = get_tmp_deflocs(blocks.values())
144
+ # find all vvar uses
145
+ tmp_uselocs = get_tmp_uselocs(blocks.values())
146
+
147
+ # update model
148
+ for block_loc, d in tmp_deflocs.items():
149
+ for tmp_atom, stmt_idx in d.items():
150
+ self.model.all_tmp_definitions[block_loc][tmp_atom] = stmt_idx
151
+
152
+ if tmp_atom in tmp_uselocs[block_loc]:
153
+ for tmp_at_use, use_stmt_idx in tmp_uselocs[block_loc][tmp_atom]:
154
+ if tmp_atom not in self.model.all_tmp_uses[block_loc]:
155
+ self.model.all_tmp_uses[block_loc][tmp_atom] = set()
156
+ self.model.all_tmp_uses[block_loc][tmp_atom].add((tmp_at_use, use_stmt_idx))
157
+
158
+
159
+ register_analysis(SReachingDefinitionsAnalysis, "SReachingDefinitions")
@@ -9,11 +9,11 @@ from collections import defaultdict
9
9
  import pyvex
10
10
 
11
11
  from angr.analyses import ForwardAnalysis, visitors
12
- from ..utils.constants import is_alignment_mask
13
- from ..analyses import AnalysesHub
14
- from ..knowledge_plugins import Function
15
- from ..block import BlockNode
16
- from ..errors import SimTranslationError
12
+ from angr.utils.constants import is_alignment_mask
13
+ from angr.analyses import AnalysesHub
14
+ from angr.knowledge_plugins import Function
15
+ from angr.block import BlockNode
16
+ from angr.errors import SimTranslationError
17
17
  from .analysis import Analysis
18
18
  import contextlib
19
19
 
@@ -3,8 +3,8 @@ import logging
3
3
 
4
4
  from . import Analysis
5
5
 
6
- from .. import SIM_LIBRARIES
7
- from ..errors import AngrValueError
6
+ from angr import SIM_LIBRARIES
7
+ from angr.errors import AngrValueError
8
8
 
9
9
  l = logging.getLogger(name=__name__)
10
10
 
@@ -1,2 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .typehoon import Typehoon
4
+
5
+ __all__ = ("Typehoon",)
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from typing import TYPE_CHECKING
3
3
 
4
- from ...sim_type import (
4
+ from angr.sim_type import (
5
5
  SimType,
6
6
  SimTypeChar,
7
7
  SimTypeShort,
@@ -2,8 +2,8 @@
2
2
  from __future__ import annotations
3
3
  from itertools import count
4
4
 
5
- from ... import sim_type
6
- from ...sim_type import SimType
5
+ from angr import sim_type
6
+ from angr.sim_type import SimType
7
7
  from . import typeconsts
8
8
  from .typeconsts import TypeConstant
9
9
 
@@ -2,9 +2,9 @@
2
2
  from __future__ import annotations
3
3
  from typing import TYPE_CHECKING
4
4
 
5
- from ...sim_type import SimStruct, SimTypePointer, SimTypeArray
6
- from ...errors import AngrRuntimeError
7
- from ..analysis import Analysis, AnalysesHub
5
+ from angr.sim_type import SimStruct, SimTypePointer, SimTypeArray
6
+ from angr.errors import AngrRuntimeError
7
+ from angr.analyses.analysis import Analysis, AnalysesHub
8
8
  from .simple_solver import SimpleSolver
9
9
  from .translator import TypeTranslator
10
10
  from .typeconsts import Struct, Pointer, TypeConstant, Array, TopType
@@ -1,3 +1,9 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .variable_recovery import VariableRecovery
3
4
  from .variable_recovery_fast import VariableRecoveryFast
5
+
6
+ __all__ = (
7
+ "VariableRecovery",
8
+ "VariableRecoveryFast",
9
+ )
@@ -9,11 +9,11 @@ from unique_log_filter import UniqueLogFilter
9
9
 
10
10
  from angr.procedures import SIM_LIBRARIES, SIM_TYPE_COLLECTIONS
11
11
  from angr.utils.constants import MAX_POINTSTO_BITS
12
- from ...calling_conventions import SimRegArg
13
- from ...sim_type import SimTypeFunction, dereference_simtype
14
- from ...engines.light import SimEngineLightAILMixin
15
- from ..typehoon import typeconsts, typevars
16
- from ..typehoon.lifter import TypeLifter
12
+ from angr.calling_conventions import SimRegArg
13
+ from angr.sim_type import SimTypeFunction, dereference_simtype
14
+ from angr.engines.light import SimEngineLightAILMixin
15
+ from angr.analyses.typehoon import typeconsts, typevars
16
+ from angr.analyses.typehoon.lifter import TypeLifter
17
17
  from .engine_base import SimEngineVRBase, RichR
18
18
 
19
19
  if TYPE_CHECKING:
@@ -6,13 +6,13 @@ import logging
6
6
  import ailment
7
7
  import claripy
8
8
 
9
- from ...storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
10
- from ...engines.light import SimEngineLight, ArithmeticExpression
11
- from ...errors import SimEngineError, SimMemoryMissingError
12
- from ...sim_variable import SimVariable, SimStackVariable, SimRegisterVariable, SimMemoryVariable
13
- from ...code_location import CodeLocation
14
- from ..typehoon import typevars, typeconsts
15
- from ..typehoon.typevars import TypeVariable, DerivedTypeVariable, AddN, SubN, Load, Store
9
+ from angr.storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
10
+ from angr.engines.light import SimEngineLight, ArithmeticExpression
11
+ from angr.errors import SimEngineError, SimMemoryMissingError
12
+ from angr.sim_variable import SimVariable, SimStackVariable, SimRegisterVariable, SimMemoryVariable
13
+ from angr.code_location import CodeLocation
14
+ from angr.analyses.typehoon import typevars, typeconsts
15
+ from angr.analyses.typehoon.typevars import TypeVariable, DerivedTypeVariable, AddN, SubN, Load, Store
16
16
 
17
17
  if TYPE_CHECKING:
18
18
  from .variable_recovery_base import VariableRecoveryStateBase
@@ -6,13 +6,13 @@ import claripy
6
6
  import pyvex
7
7
  from archinfo.arch_arm import is_arm_arch
8
8
 
9
- from ...errors import SimMemoryMissingError
10
- from ...calling_conventions import SimRegArg, SimStackArg, default_cc
11
- from ...engines.vex.claripy.datalayer import value as claripy_value
12
- from ...engines.light import SimEngineLightVEXMixin
13
- from ...knowledge_plugins import Function
14
- from ...storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
15
- from ..typehoon import typevars, typeconsts
9
+ from angr.errors import SimMemoryMissingError
10
+ from angr.calling_conventions import SimRegArg, SimStackArg, default_cc
11
+ from angr.engines.vex.claripy.datalayer import value as claripy_value
12
+ from angr.engines.light import SimEngineLightVEXMixin
13
+ from angr.knowledge_plugins import Function
14
+ from angr.storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
15
+ from angr.analyses.typehoon import typevars, typeconsts
16
16
  from .engine_base import SimEngineVRBase, RichR
17
17
  from .irsb_scanner import VEXIRSBScanner
18
18
 
@@ -6,11 +6,11 @@ import claripy
6
6
 
7
7
  from angr.analyses import ForwardAnalysis, visitors
8
8
  from angr.analyses import AnalysesHub
9
- from ...errors import SimMemoryMissingError
10
- from ...storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
11
- from ... import BP, BP_AFTER
12
- from ...sim_variable import SimRegisterVariable, SimStackVariable
13
- from ...code_location import CodeLocation
9
+ from angr.errors import SimMemoryMissingError
10
+ from angr.storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
11
+ from angr import BP, BP_AFTER
12
+ from angr.sim_variable import SimRegisterVariable, SimStackVariable
13
+ from angr.code_location import CodeLocation
14
14
  from .variable_recovery_base import VariableRecoveryBase, VariableRecoveryStateBase
15
15
  from .annotations import StackLocationAnnotation
16
16
 
@@ -10,13 +10,13 @@ from claripy.annotation import Annotation
10
10
  from archinfo import Arch
11
11
  from ailment.expression import BinaryOp, StackBaseOffset
12
12
 
13
- from ...utils.cowdict import DefaultChainMapCOW
14
- from ...engines.light import SpOffset
15
- from ...sim_variable import SimVariable
16
- from ...errors import AngrRuntimeError
17
- from ...storage.memory_mixins import MultiValuedMemory
18
- from ..analysis import Analysis
19
- from ..typehoon.typevars import TypeVariables, TypeVariable
13
+ from angr.utils.cowdict import DefaultChainMapCOW
14
+ from angr.engines.light import SpOffset
15
+ from angr.sim_variable import SimVariable
16
+ from angr.errors import AngrRuntimeError
17
+ from angr.storage.memory_mixins import MultiValuedMemory
18
+ from angr.analyses.analysis import Analysis
19
+ from angr.analyses.typehoon.typevars import TypeVariables, TypeVariable
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  from angr.storage import SimMemoryObject
@@ -12,14 +12,14 @@ import ailment
12
12
  from ailment.expression import VirtualVariable
13
13
 
14
14
  import angr.errors
15
- from ...storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
16
- from ...block import Block
17
- from ...errors import AngrVariableRecoveryError, SimEngineError
18
- from ...knowledge_plugins import Function
19
- from ...sim_variable import SimStackVariable, SimRegisterVariable, SimVariable, SimMemoryVariable
20
- from ...engines.vex.claripy.irop import vexop_to_simop
15
+ from angr.storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
16
+ from angr.block import Block
17
+ from angr.errors import AngrVariableRecoveryError, SimEngineError
18
+ from angr.knowledge_plugins import Function
19
+ from angr.sim_variable import SimStackVariable, SimRegisterVariable, SimVariable, SimMemoryVariable
20
+ from angr.engines.vex.claripy.irop import vexop_to_simop
21
21
  from angr.analyses import ForwardAnalysis, visitors
22
- from ..typehoon.typevars import Equivalence, TypeVariable, TypeVariables
22
+ from angr.analyses.typehoon.typevars import Equivalence, TypeVariable, TypeVariables
23
23
  from .variable_recovery_base import VariableRecoveryBase, VariableRecoveryStateBase
24
24
  from .engine_vex import SimEngineVRVEX
25
25
  from .engine_ail import SimEngineVRAIL
@@ -5,12 +5,12 @@ from functools import cmp_to_key
5
5
 
6
6
  import networkx
7
7
 
8
- from .. import SIM_PROCEDURES
9
- from .. import options as o
10
- from ..knowledge_base import KnowledgeBase
11
- from ..errors import AngrError, AngrCFGError
12
- from ..sim_manager import SimulationManager
13
- from ..utils.graph import shallow_reverse
8
+ from angr import SIM_PROCEDURES
9
+ from angr import options as o
10
+ from angr.knowledge_base import KnowledgeBase
11
+ from angr.errors import AngrError, AngrCFGError
12
+ from angr.sim_manager import SimulationManager
13
+ from angr.utils.graph import shallow_reverse
14
14
  from . import Analysis, CFGEmulated
15
15
 
16
16
  l = logging.getLogger(name=__name__)
@@ -624,6 +624,6 @@ from angr.analyses import AnalysesHub
624
624
 
625
625
  AnalysesHub.register_default("Veritesting", Veritesting)
626
626
 
627
- from ..errors import SimValueError, SimSolverModeError, SimError
628
- from ..sim_options import BYPASS_VERITESTING_EXCEPTIONS
627
+ from angr.errors import SimValueError, SimSolverModeError, SimError
628
+ from angr.sim_options import BYPASS_VERITESTING_EXCEPTIONS
629
629
  from claripy import ClaripyError