angr 9.2.118__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 (839) hide show
  1. angr/__init__.py +217 -2
  2. angr/__main__.py +14 -4
  3. angr/analyses/__init__.py +54 -0
  4. angr/analyses/analysis.py +47 -5
  5. angr/analyses/backward_slice.py +4 -4
  6. angr/analyses/bindiff.py +2 -2
  7. angr/analyses/callee_cleanup_finder.py +1 -1
  8. angr/analyses/calling_convention.py +21 -15
  9. angr/analyses/cdg.py +1 -1
  10. angr/analyses/cfg/__init__.py +12 -1
  11. angr/analyses/cfg/cfb.py +2 -2
  12. angr/analyses/cfg/cfg.py +1 -1
  13. angr/analyses/cfg/cfg_base.py +28 -11
  14. angr/analyses/cfg/cfg_emulated.py +18 -18
  15. angr/analyses/cfg/cfg_fast.py +136 -24
  16. angr/analyses/cfg/cfg_fast_soot.py +5 -5
  17. angr/analyses/cfg/cfg_job_base.py +3 -3
  18. angr/analyses/cfg/indirect_jump_resolvers/__init__.py +13 -0
  19. angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +1 -1
  20. angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +2 -2
  21. angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +4 -4
  22. angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +21 -18
  23. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +5 -5
  24. angr/analyses/cfg/indirect_jump_resolvers/resolver.py +2 -2
  25. angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +1 -1
  26. angr/analyses/cfg_slice_to_sink/__init__.py +8 -0
  27. angr/analyses/class_identifier.py +2 -2
  28. angr/analyses/code_tagging.py +2 -2
  29. angr/analyses/complete_calling_conventions.py +3 -3
  30. angr/analyses/congruency_check.py +1 -2
  31. angr/analyses/data_dep/__init__.py +13 -0
  32. angr/analyses/data_dep/data_dependency_analysis.py +5 -5
  33. angr/analyses/datagraph_meta.py +1 -1
  34. angr/analyses/ddg.py +3 -3
  35. angr/analyses/decompiler/__init__.py +25 -0
  36. angr/analyses/decompiler/ail_simplifier.py +9 -9
  37. angr/analyses/decompiler/block_simplifier.py +3 -3
  38. angr/analyses/decompiler/callsite_maker.py +5 -3
  39. angr/analyses/decompiler/clinic.py +46 -36
  40. angr/analyses/decompiler/condition_processor.py +48 -21
  41. angr/analyses/decompiler/counters/__init__.py +11 -0
  42. angr/analyses/decompiler/decompiler.py +27 -10
  43. angr/analyses/decompiler/dephication/seqnode_dephication.py +19 -1
  44. angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +1 -1
  45. angr/analyses/decompiler/optimization_passes/__init__.py +66 -54
  46. angr/analyses/decompiler/optimization_passes/const_derefs.py +1 -1
  47. angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +3 -3
  48. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +1 -1
  49. angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +3 -0
  50. angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +7 -4
  51. angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +13 -9
  52. angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +1 -1
  53. angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +1 -1
  54. angr/analyses/decompiler/optimization_passes/engine_base.py +2 -2
  55. angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +2 -2
  56. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +4 -4
  57. angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +19 -19
  58. angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +6 -6
  59. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +2 -2
  60. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +7 -3
  61. angr/analyses/decompiler/optimization_passes/optimization_pass.py +34 -28
  62. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +2 -2
  63. angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +1 -1
  64. angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -3
  65. angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +5 -5
  66. angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -1
  67. angr/analyses/decompiler/peephole_optimizations/__init__.py +61 -19
  68. angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +1 -1
  69. angr/analyses/decompiler/presets/__init__.py +20 -0
  70. angr/analyses/decompiler/presets/basic.py +30 -0
  71. angr/analyses/decompiler/presets/fast.py +54 -0
  72. angr/analyses/decompiler/presets/full.py +64 -0
  73. angr/analyses/decompiler/presets/preset.py +37 -0
  74. angr/analyses/decompiler/region_identifier.py +21 -7
  75. angr/analyses/decompiler/region_simplifiers/__init__.py +3 -0
  76. angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +3 -3
  77. angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +3 -3
  78. angr/analyses/decompiler/region_simplifiers/expr_folding.py +2 -2
  79. angr/analyses/decompiler/region_simplifiers/goto.py +3 -3
  80. angr/analyses/decompiler/region_simplifiers/if_.py +2 -2
  81. angr/analyses/decompiler/region_simplifiers/ifelse.py +4 -4
  82. angr/analyses/decompiler/region_simplifiers/loop.py +4 -4
  83. angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -1
  84. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +6 -6
  85. angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -5
  86. angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +3 -3
  87. angr/analyses/decompiler/sequence_walker.py +11 -12
  88. angr/analyses/decompiler/structured_codegen/__init__.py +14 -0
  89. angr/analyses/decompiler/structured_codegen/base.py +1 -1
  90. angr/analyses/decompiler/structured_codegen/c.py +22 -15
  91. angr/analyses/decompiler/structured_codegen/dwarf_import.py +2 -2
  92. angr/analyses/decompiler/structuring/__init__.py +11 -1
  93. angr/analyses/decompiler/structuring/dream.py +16 -15
  94. angr/analyses/decompiler/structuring/phoenix.py +9 -9
  95. angr/analyses/decompiler/structuring/recursive_structurer.py +7 -7
  96. angr/analyses/decompiler/structuring/sailr.py +2 -2
  97. angr/analyses/decompiler/structuring/structurer_base.py +9 -4
  98. angr/analyses/decompiler/structuring/structurer_nodes.py +18 -9
  99. angr/analyses/decompiler/utils.py +4 -2
  100. angr/analyses/disassembly.py +6 -6
  101. angr/analyses/disassembly_utils.py +1 -1
  102. angr/analyses/dominance_frontier.py +1 -1
  103. angr/analyses/find_objects_static.py +5 -5
  104. angr/analyses/flirt.py +3 -3
  105. angr/analyses/forward_analysis/__init__.py +9 -0
  106. angr/analyses/forward_analysis/forward_analysis.py +4 -4
  107. angr/analyses/forward_analysis/job_info.py +1 -1
  108. angr/analyses/forward_analysis/visitors/__init__.py +9 -0
  109. angr/analyses/forward_analysis/visitors/graph.py +2 -2
  110. angr/analyses/identifier/__init__.py +3 -0
  111. angr/analyses/identifier/custom_callable.py +2 -3
  112. angr/analyses/identifier/errors.py +1 -1
  113. angr/analyses/identifier/functions/__init__.py +4 -4
  114. angr/analyses/identifier/functions/atoi.py +1 -1
  115. angr/analyses/identifier/functions/based_atoi.py +1 -1
  116. angr/analyses/identifier/functions/fdprintf.py +1 -1
  117. angr/analyses/identifier/functions/free.py +2 -2
  118. angr/analyses/identifier/functions/int2str.py +1 -1
  119. angr/analyses/identifier/functions/malloc.py +2 -2
  120. angr/analyses/identifier/functions/memcmp.py +1 -1
  121. angr/analyses/identifier/functions/memcpy.py +3 -3
  122. angr/analyses/identifier/functions/memset.py +1 -1
  123. angr/analyses/identifier/functions/printf.py +1 -1
  124. angr/analyses/identifier/functions/recv_until.py +2 -2
  125. angr/analyses/identifier/functions/skip_calloc.py +2 -2
  126. angr/analyses/identifier/functions/skip_realloc.py +2 -2
  127. angr/analyses/identifier/functions/skip_recv_n.py +1 -1
  128. angr/analyses/identifier/functions/snprintf.py +1 -1
  129. angr/analyses/identifier/functions/sprintf.py +1 -1
  130. angr/analyses/identifier/functions/strcmp.py +1 -1
  131. angr/analyses/identifier/functions/strcpy.py +1 -1
  132. angr/analyses/identifier/functions/strlen.py +1 -1
  133. angr/analyses/identifier/functions/strncmp.py +1 -1
  134. angr/analyses/identifier/functions/strncpy.py +1 -1
  135. angr/analyses/identifier/functions/strtol.py +1 -1
  136. angr/analyses/identifier/identify.py +3 -3
  137. angr/analyses/identifier/runner.py +6 -6
  138. angr/analyses/init_finder.py +1 -1
  139. angr/analyses/loop_analysis.py +2 -2
  140. angr/analyses/propagator/__init__.py +3 -0
  141. angr/analyses/propagator/engine_ail.py +6 -5
  142. angr/analyses/propagator/engine_base.py +2 -2
  143. angr/analyses/propagator/engine_vex.py +2 -2
  144. angr/analyses/propagator/outdated_definition_walker.py +3 -3
  145. angr/analyses/propagator/propagator.py +3 -3
  146. angr/analyses/propagator/top_checker_mixin.py +1 -1
  147. angr/analyses/proximity_graph.py +3 -3
  148. angr/analyses/reaching_definitions/__init__.py +6 -6
  149. angr/analyses/reaching_definitions/dep_graph.py +5 -5
  150. angr/analyses/reaching_definitions/engine_ail.py +8 -8
  151. angr/analyses/reaching_definitions/engine_vex.py +18 -13
  152. angr/analyses/reaching_definitions/function_handler.py +6 -2
  153. angr/analyses/reaching_definitions/heap_allocator.py +3 -3
  154. angr/analyses/reaching_definitions/rd_state.py +4 -10
  155. angr/analyses/reaching_definitions/reaching_definitions.py +11 -11
  156. angr/analyses/reaching_definitions/subject.py +3 -3
  157. angr/analyses/reassembler.py +5 -5
  158. angr/analyses/{s_propagator/s_propagator.py → s_propagator.py} +1 -1
  159. angr/analyses/s_reaching_definitions/__init__.py +11 -1
  160. angr/analyses/s_reaching_definitions/s_rda_model.py +117 -0
  161. angr/analyses/s_reaching_definitions/s_rda_view.py +213 -0
  162. angr/analyses/s_reaching_definitions/s_reaching_definitions.py +159 -0
  163. angr/analyses/stack_pointer_tracker.py +34 -16
  164. angr/analyses/static_hooker.py +2 -2
  165. angr/analyses/typehoon/__init__.py +3 -0
  166. angr/analyses/typehoon/lifter.py +1 -1
  167. angr/analyses/typehoon/translator.py +21 -4
  168. angr/analyses/typehoon/typeconsts.py +8 -0
  169. angr/analyses/typehoon/typehoon.py +3 -3
  170. angr/analyses/variable_recovery/__init__.py +6 -0
  171. angr/analyses/variable_recovery/engine_ail.py +5 -5
  172. angr/analyses/variable_recovery/engine_base.py +7 -7
  173. angr/analyses/variable_recovery/engine_vex.py +14 -17
  174. angr/analyses/variable_recovery/variable_recovery.py +5 -5
  175. angr/analyses/variable_recovery/variable_recovery_base.py +7 -7
  176. angr/analyses/variable_recovery/variable_recovery_fast.py +7 -7
  177. angr/analyses/veritesting.py +8 -8
  178. angr/analyses/vfg.py +13 -13
  179. angr/analyses/vsa_ddg.py +3 -3
  180. angr/analyses/vtable.py +1 -1
  181. angr/analyses/xrefs.py +3 -3
  182. angr/angrdb/__init__.py +3 -0
  183. angr/angrdb/db.py +2 -2
  184. angr/angrdb/serializers/__init__.py +7 -0
  185. angr/angrdb/serializers/cfg_model.py +2 -2
  186. angr/angrdb/serializers/comments.py +2 -2
  187. angr/angrdb/serializers/funcs.py +2 -2
  188. angr/angrdb/serializers/kb.py +2 -2
  189. angr/angrdb/serializers/labels.py +2 -2
  190. angr/angrdb/serializers/loader.py +2 -2
  191. angr/angrdb/serializers/structured_code.py +4 -4
  192. angr/angrdb/serializers/variables.py +3 -3
  193. angr/angrdb/serializers/xrefs.py +2 -2
  194. angr/calling_conventions.py +69 -24
  195. angr/concretization_strategies/__init__.py +17 -0
  196. angr/concretization_strategies/max.py +1 -1
  197. angr/concretization_strategies/norepeats.py +3 -3
  198. angr/concretization_strategies/norepeats_range.py +1 -1
  199. angr/distributed/__init__.py +6 -1
  200. angr/distributed/server.py +0 -1
  201. angr/distributed/worker.py +6 -4
  202. angr/engines/__init__.py +25 -0
  203. angr/engines/concrete.py +2 -3
  204. angr/engines/engine.py +3 -3
  205. angr/engines/failure.py +2 -2
  206. angr/engines/light/__init__.py +12 -0
  207. angr/engines/light/data.py +1 -1
  208. angr/engines/light/engine.py +12 -17
  209. angr/engines/pcode/__init__.py +7 -1
  210. angr/engines/pcode/behavior.py +1 -1
  211. angr/engines/pcode/cc.py +1 -1
  212. angr/engines/pcode/emulate.py +4 -4
  213. angr/engines/pcode/engine.py +5 -5
  214. angr/engines/pcode/lifter.py +7 -7
  215. angr/engines/procedure.py +3 -3
  216. angr/engines/soot/__init__.py +3 -0
  217. angr/engines/soot/engine.py +13 -13
  218. angr/engines/soot/expressions/__init__.py +33 -0
  219. angr/engines/soot/expressions/arrayref.py +1 -1
  220. angr/engines/soot/expressions/base.py +1 -1
  221. angr/engines/soot/expressions/cast.py +1 -1
  222. angr/engines/soot/expressions/condition.py +2 -2
  223. angr/engines/soot/expressions/constants.py +1 -1
  224. angr/engines/soot/expressions/invoke.py +2 -2
  225. angr/engines/soot/expressions/new.py +1 -1
  226. angr/engines/soot/expressions/newArray.py +1 -1
  227. angr/engines/soot/expressions/newMultiArray.py +1 -1
  228. angr/engines/soot/statements/__init__.py +16 -0
  229. angr/engines/soot/statements/assign.py +1 -1
  230. angr/engines/soot/statements/base.py +3 -3
  231. angr/engines/soot/statements/goto.py +1 -1
  232. angr/engines/soot/statements/if_.py +1 -1
  233. angr/engines/soot/statements/throw.py +1 -1
  234. angr/engines/soot/values/__init__.py +14 -0
  235. angr/engines/soot/values/arrayref.py +1 -1
  236. angr/engines/soot/values/instancefieldref.py +1 -1
  237. angr/engines/soot/values/staticfieldref.py +1 -1
  238. angr/engines/soot/values/thisref.py +2 -2
  239. angr/engines/successors.py +8 -8
  240. angr/engines/syscall.py +1 -1
  241. angr/engines/unicorn.py +13 -13
  242. angr/engines/vex/__init__.py +18 -3
  243. angr/engines/vex/claripy/__init__.py +3 -0
  244. angr/engines/vex/claripy/ccall.py +1 -2
  245. angr/engines/vex/claripy/datalayer.py +3 -3
  246. angr/engines/vex/heavy/__init__.py +11 -1
  247. angr/engines/vex/heavy/heavy.py +8 -8
  248. angr/engines/vex/heavy/inspect.py +2 -2
  249. angr/engines/vex/heavy/resilience.py +2 -2
  250. angr/engines/vex/heavy/super_fastpath.py +3 -3
  251. angr/engines/vex/lifter.py +5 -5
  252. angr/engines/vex/light/__init__.py +7 -0
  253. angr/engines/vex/light/light.py +2 -2
  254. angr/engines/vex/light/slicing.py +1 -1
  255. angr/errors.py +4 -4
  256. angr/exploration_techniques/__init__.py +0 -1
  257. angr/exploration_techniques/bucketizer.py +9 -10
  258. angr/exploration_techniques/common.py +2 -2
  259. angr/exploration_techniques/director.py +4 -4
  260. angr/exploration_techniques/driller_core.py +2 -3
  261. angr/exploration_techniques/explorer.py +3 -3
  262. angr/exploration_techniques/loop_seer.py +3 -3
  263. angr/exploration_techniques/oppologist.py +3 -3
  264. angr/exploration_techniques/slicecutor.py +1 -1
  265. angr/exploration_techniques/spiller.py +1 -1
  266. angr/exploration_techniques/suggestions.py +6 -6
  267. angr/exploration_techniques/symbion.py +0 -1
  268. angr/exploration_techniques/threading.py +2 -2
  269. angr/exploration_techniques/tracer.py +3 -3
  270. angr/exploration_techniques/veritesting.py +1 -1
  271. angr/flirt/__init__.py +0 -1
  272. angr/{knowledge_base/knowledge_base.py → knowledge_base.py} +13 -15
  273. angr/knowledge_plugins/__init__.py +23 -1
  274. angr/knowledge_plugins/callsite_prototypes.py +2 -2
  275. angr/knowledge_plugins/cfg/cfg_manager.py +1 -1
  276. angr/knowledge_plugins/cfg/cfg_model.py +8 -7
  277. angr/knowledge_plugins/cfg/indirect_jump.py +1 -1
  278. angr/knowledge_plugins/cfg/memory_data.py +3 -2
  279. angr/knowledge_plugins/debug_variables.py +2 -2
  280. angr/knowledge_plugins/functions/__init__.py +6 -0
  281. angr/knowledge_plugins/functions/function.py +21 -16
  282. angr/knowledge_plugins/functions/function_manager.py +2 -2
  283. angr/knowledge_plugins/functions/function_parser.py +3 -3
  284. angr/knowledge_plugins/functions/soot_function.py +2 -2
  285. angr/knowledge_plugins/key_definitions/atoms.py +2 -2
  286. angr/knowledge_plugins/key_definitions/definition.py +3 -3
  287. angr/knowledge_plugins/key_definitions/key_definition_manager.py +2 -2
  288. angr/knowledge_plugins/key_definitions/uses.py +2 -2
  289. angr/knowledge_plugins/propagations/__init__.py +7 -0
  290. angr/knowledge_plugins/propagations/prop_value.py +1 -1
  291. angr/knowledge_plugins/{structured_code/manager.py → structured_code.py} +6 -3
  292. angr/knowledge_plugins/types.py +1 -1
  293. angr/knowledge_plugins/variables/__init__.py +6 -0
  294. angr/knowledge_plugins/variables/variable_access.py +3 -3
  295. angr/knowledge_plugins/variables/variable_manager.py +7 -7
  296. angr/knowledge_plugins/xrefs/__init__.py +9 -1
  297. angr/knowledge_plugins/xrefs/xref.py +5 -5
  298. angr/knowledge_plugins/xrefs/xref_manager.py +3 -3
  299. angr/lib/angr_native.dylib +0 -0
  300. angr/misc/__init__.py +12 -2
  301. angr/misc/loggers.py +2 -2
  302. angr/misc/telemetry.py +54 -0
  303. angr/procedures/__init__.py +9 -0
  304. angr/procedures/cgc/receive.py +2 -2
  305. angr/procedures/cgc/transmit.py +1 -1
  306. angr/procedures/definitions/__init__.py +8 -8
  307. angr/procedures/definitions/cgc.py +1 -1
  308. angr/procedures/definitions/glibc.py +2 -15
  309. angr/procedures/definitions/gnulib.py +2 -6
  310. angr/procedures/definitions/libstdcpp.py +2 -2
  311. angr/procedures/definitions/linux_kernel.py +2 -3
  312. angr/procedures/definitions/linux_loader.py +1 -1
  313. angr/procedures/definitions/msvcr.py +2 -2
  314. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +3 -18
  315. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +3 -18
  316. angr/procedures/definitions/wdk_clfs.py +3 -18
  317. angr/procedures/definitions/wdk_fltmgr.py +3 -18
  318. angr/procedures/definitions/wdk_fwpkclnt.py +3 -18
  319. angr/procedures/definitions/wdk_fwpuclnt.py +3 -18
  320. angr/procedures/definitions/wdk_gdi32.py +3 -18
  321. angr/procedures/definitions/wdk_hal.py +3 -18
  322. angr/procedures/definitions/wdk_ksecdd.py +3 -18
  323. angr/procedures/definitions/wdk_ndis.py +3 -18
  324. angr/procedures/definitions/wdk_ntoskrnl.py +3 -18
  325. angr/procedures/definitions/wdk_offreg.py +3 -18
  326. angr/procedures/definitions/wdk_pshed.py +3 -18
  327. angr/procedures/definitions/wdk_secur32.py +3 -18
  328. angr/procedures/definitions/wdk_vhfum.py +3 -18
  329. angr/procedures/definitions/win32_aclui.py +3 -18
  330. angr/procedures/definitions/win32_activeds.py +3 -18
  331. angr/procedures/definitions/win32_advapi32.py +3 -18
  332. angr/procedures/definitions/win32_advpack.py +3 -18
  333. angr/procedures/definitions/win32_amsi.py +3 -18
  334. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +3 -18
  335. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +3 -18
  336. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +3 -18
  337. angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +3 -18
  338. angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +3 -18
  339. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +3 -18
  340. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +3 -18
  341. angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +3 -18
  342. angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +3 -18
  343. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +3 -18
  344. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +3 -18
  345. angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +3 -18
  346. angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +3 -18
  347. angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +3 -18
  348. angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +3 -18
  349. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +3 -18
  350. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +3 -18
  351. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +3 -18
  352. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +3 -18
  353. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +3 -18
  354. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +3 -18
  355. angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +3 -18
  356. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +3 -18
  357. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +3 -18
  358. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +3 -18
  359. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +3 -18
  360. angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +3 -18
  361. angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +3 -18
  362. angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +3 -18
  363. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +3 -18
  364. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +3 -18
  365. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +3 -18
  366. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +3 -18
  367. angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +3 -18
  368. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +3 -3
  369. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +3 -3
  370. angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +3 -3
  371. angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +3 -3
  372. angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +3 -3
  373. angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +3 -3
  374. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +3 -3
  375. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +3 -3
  376. angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +3 -18
  377. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +3 -18
  378. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +3 -18
  379. angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +3 -18
  380. angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +3 -18
  381. angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +3 -18
  382. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +3 -18
  383. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +3 -18
  384. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +3 -18
  385. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +3 -18
  386. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +3 -18
  387. angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +3 -18
  388. angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +3 -18
  389. angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +3 -18
  390. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +3 -18
  391. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +3 -18
  392. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +3 -18
  393. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +3 -18
  394. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +3 -18
  395. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +3 -18
  396. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +3 -18
  397. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +3 -18
  398. angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +3 -3
  399. angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +3 -18
  400. angr/procedures/definitions/win32_apphelp.py +3 -18
  401. angr/procedures/definitions/win32_authz.py +3 -18
  402. angr/procedures/definitions/win32_avicap32.py +3 -18
  403. angr/procedures/definitions/win32_avifil32.py +3 -18
  404. angr/procedures/definitions/win32_avrt.py +3 -18
  405. angr/procedures/definitions/win32_bcp47mrm.py +3 -18
  406. angr/procedures/definitions/win32_bcrypt.py +3 -18
  407. angr/procedures/definitions/win32_bcryptprimitives.py +3 -18
  408. angr/procedures/definitions/win32_bluetoothapis.py +3 -18
  409. angr/procedures/definitions/win32_bthprops.py +3 -3
  410. angr/procedures/definitions/win32_bthprops_cpl.py +3 -18
  411. angr/procedures/definitions/win32_cabinet.py +3 -18
  412. angr/procedures/definitions/win32_certadm.py +3 -18
  413. angr/procedures/definitions/win32_certpoleng.py +3 -18
  414. angr/procedures/definitions/win32_cfgmgr32.py +3 -18
  415. angr/procedures/definitions/win32_chakra.py +3 -18
  416. angr/procedures/definitions/win32_cldapi.py +3 -18
  417. angr/procedures/definitions/win32_clfsw32.py +3 -18
  418. angr/procedures/definitions/win32_clusapi.py +3 -18
  419. angr/procedures/definitions/win32_comctl32.py +3 -18
  420. angr/procedures/definitions/win32_comdlg32.py +3 -18
  421. angr/procedures/definitions/win32_compstui.py +3 -18
  422. angr/procedures/definitions/win32_computecore.py +3 -18
  423. angr/procedures/definitions/win32_computenetwork.py +3 -18
  424. angr/procedures/definitions/win32_computestorage.py +3 -18
  425. angr/procedures/definitions/win32_comsvcs.py +3 -18
  426. angr/procedures/definitions/win32_coremessaging.py +3 -3
  427. angr/procedures/definitions/win32_credui.py +3 -18
  428. angr/procedures/definitions/win32_crypt32.py +3 -18
  429. angr/procedures/definitions/win32_cryptnet.py +3 -18
  430. angr/procedures/definitions/win32_cryptui.py +3 -18
  431. angr/procedures/definitions/win32_cryptxml.py +3 -18
  432. angr/procedures/definitions/win32_cscapi.py +3 -18
  433. angr/procedures/definitions/win32_d2d1.py +3 -18
  434. angr/procedures/definitions/win32_d3d10.py +3 -18
  435. angr/procedures/definitions/win32_d3d10_1.py +3 -18
  436. angr/procedures/definitions/win32_d3d11.py +3 -18
  437. angr/procedures/definitions/win32_d3d12.py +3 -18
  438. angr/procedures/definitions/win32_d3d9.py +3 -18
  439. angr/procedures/definitions/win32_d3dcompiler_47.py +3 -18
  440. angr/procedures/definitions/win32_d3dcsx.py +3 -18
  441. angr/procedures/definitions/win32_davclnt.py +3 -18
  442. angr/procedures/definitions/win32_dbgeng.py +3 -18
  443. angr/procedures/definitions/win32_dbghelp.py +3 -18
  444. angr/procedures/definitions/win32_dbgmodel.py +3 -18
  445. angr/procedures/definitions/win32_dciman32.py +3 -18
  446. angr/procedures/definitions/win32_dcomp.py +3 -18
  447. angr/procedures/definitions/win32_ddraw.py +3 -18
  448. angr/procedures/definitions/win32_deviceaccess.py +3 -18
  449. angr/procedures/definitions/win32_dflayout.py +3 -18
  450. angr/procedures/definitions/win32_dhcpcsvc.py +3 -18
  451. angr/procedures/definitions/win32_dhcpcsvc6.py +3 -18
  452. angr/procedures/definitions/win32_dhcpsapi.py +3 -18
  453. angr/procedures/definitions/win32_diagnosticdataquery.py +3 -18
  454. angr/procedures/definitions/win32_dinput8.py +3 -18
  455. angr/procedures/definitions/win32_directml.py +3 -18
  456. angr/procedures/definitions/win32_dmprocessxmlfiltered.py +3 -18
  457. angr/procedures/definitions/win32_dnsapi.py +3 -18
  458. angr/procedures/definitions/win32_drt.py +3 -18
  459. angr/procedures/definitions/win32_drtprov.py +3 -18
  460. angr/procedures/definitions/win32_drttransport.py +3 -18
  461. angr/procedures/definitions/win32_dsound.py +3 -18
  462. angr/procedures/definitions/win32_dsparse.py +3 -18
  463. angr/procedures/definitions/win32_dsprop.py +3 -18
  464. angr/procedures/definitions/win32_dssec.py +3 -18
  465. angr/procedures/definitions/win32_dsuiext.py +3 -18
  466. angr/procedures/definitions/win32_dwmapi.py +3 -18
  467. angr/procedures/definitions/win32_dwrite.py +3 -18
  468. angr/procedures/definitions/win32_dxcompiler.py +3 -18
  469. angr/procedures/definitions/win32_dxcore.py +3 -18
  470. angr/procedures/definitions/win32_dxgi.py +3 -18
  471. angr/procedures/definitions/win32_dxva2.py +3 -18
  472. angr/procedures/definitions/win32_eappcfg.py +3 -18
  473. angr/procedures/definitions/win32_eappprxy.py +3 -18
  474. angr/procedures/definitions/win32_efswrt.py +3 -18
  475. angr/procedures/definitions/win32_elscore.py +3 -18
  476. angr/procedures/definitions/win32_esent.py +3 -18
  477. angr/procedures/definitions/win32_evr.py +3 -18
  478. angr/procedures/definitions/win32_faultrep.py +3 -18
  479. angr/procedures/definitions/win32_fhsvcctl.py +3 -18
  480. angr/procedures/definitions/win32_firewallapi.py +3 -18
  481. angr/procedures/definitions/win32_fltlib.py +3 -18
  482. angr/procedures/definitions/win32_fontsub.py +3 -18
  483. angr/procedures/definitions/win32_forceinline.py +3 -18
  484. angr/procedures/definitions/win32_fwpuclnt.py +3 -18
  485. angr/procedures/definitions/win32_fxsutility.py +3 -18
  486. angr/procedures/definitions/win32_gdi32.py +3 -18
  487. angr/procedures/definitions/win32_gdiplus.py +3 -18
  488. angr/procedures/definitions/win32_glu32.py +3 -18
  489. angr/procedures/definitions/win32_gpedit.py +3 -18
  490. angr/procedures/definitions/win32_hhctrl_ocx.py +3 -18
  491. angr/procedures/definitions/win32_hid.py +3 -18
  492. angr/procedures/definitions/win32_hlink.py +3 -18
  493. angr/procedures/definitions/win32_hrtfapo.py +3 -18
  494. angr/procedures/definitions/win32_httpapi.py +3 -18
  495. angr/procedures/definitions/win32_icm32.py +3 -18
  496. angr/procedures/definitions/win32_icmui.py +3 -18
  497. angr/procedures/definitions/win32_icu.py +3 -18
  498. angr/procedures/definitions/win32_ieframe.py +3 -18
  499. angr/procedures/definitions/win32_imagehlp.py +3 -18
  500. angr/procedures/definitions/win32_imgutil.py +3 -18
  501. angr/procedures/definitions/win32_imm32.py +3 -18
  502. angr/procedures/definitions/win32_infocardapi.py +3 -18
  503. angr/procedures/definitions/win32_inkobjcore.py +3 -18
  504. angr/procedures/definitions/win32_iphlpapi.py +3 -18
  505. angr/procedures/definitions/win32_iscsidsc.py +3 -18
  506. angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +3 -18
  507. angr/procedures/definitions/win32_kernel32.py +3 -18
  508. angr/procedures/definitions/win32_kernelbase.py +3 -18
  509. angr/procedures/definitions/win32_keycredmgr.py +3 -18
  510. angr/procedures/definitions/win32_ksproxy_ax.py +3 -18
  511. angr/procedures/definitions/win32_ksuser.py +3 -18
  512. angr/procedures/definitions/win32_ktmw32.py +3 -18
  513. angr/procedures/definitions/win32_licenseprotection.py +3 -18
  514. angr/procedures/definitions/win32_loadperf.py +3 -18
  515. angr/procedures/definitions/win32_magnification.py +3 -18
  516. angr/procedures/definitions/win32_mapi32.py +3 -18
  517. angr/procedures/definitions/win32_mdmlocalmanagement.py +3 -18
  518. angr/procedures/definitions/win32_mdmregistration.py +3 -18
  519. angr/procedures/definitions/win32_mf.py +3 -18
  520. angr/procedures/definitions/win32_mfcore.py +3 -18
  521. angr/procedures/definitions/win32_mfplat.py +3 -18
  522. angr/procedures/definitions/win32_mfplay.py +3 -18
  523. angr/procedures/definitions/win32_mfreadwrite.py +3 -18
  524. angr/procedures/definitions/win32_mfsensorgroup.py +3 -18
  525. angr/procedures/definitions/win32_mfsrcsnk.py +3 -18
  526. angr/procedures/definitions/win32_mgmtapi.py +3 -18
  527. angr/procedures/definitions/win32_mi.py +3 -18
  528. angr/procedures/definitions/win32_mmdevapi.py +3 -18
  529. angr/procedures/definitions/win32_mpr.py +3 -18
  530. angr/procedures/definitions/win32_mprapi.py +3 -18
  531. angr/procedures/definitions/win32_mqrt.py +3 -18
  532. angr/procedures/definitions/win32_mrmsupport.py +3 -18
  533. angr/procedures/definitions/win32_msacm32.py +3 -18
  534. angr/procedures/definitions/win32_msajapi.py +3 -18
  535. angr/procedures/definitions/win32_mscms.py +3 -18
  536. angr/procedures/definitions/win32_mscoree.py +3 -18
  537. angr/procedures/definitions/win32_msctfmonitor.py +3 -18
  538. angr/procedures/definitions/win32_msdelta.py +3 -18
  539. angr/procedures/definitions/win32_msdmo.py +3 -18
  540. angr/procedures/definitions/win32_msdrm.py +3 -18
  541. angr/procedures/definitions/win32_msi.py +3 -18
  542. angr/procedures/definitions/win32_msimg32.py +3 -18
  543. angr/procedures/definitions/win32_mspatcha.py +3 -18
  544. angr/procedures/definitions/win32_mspatchc.py +3 -18
  545. angr/procedures/definitions/win32_msports.py +3 -18
  546. angr/procedures/definitions/win32_msrating.py +3 -18
  547. angr/procedures/definitions/win32_mssign32.py +3 -18
  548. angr/procedures/definitions/win32_mstask.py +3 -18
  549. angr/procedures/definitions/win32_msvfw32.py +3 -18
  550. angr/procedures/definitions/win32_mswsock.py +3 -18
  551. angr/procedures/definitions/win32_mtxdm.py +3 -18
  552. angr/procedures/definitions/win32_ncrypt.py +3 -18
  553. angr/procedures/definitions/win32_ndfapi.py +3 -18
  554. angr/procedures/definitions/win32_netapi32.py +3 -18
  555. angr/procedures/definitions/win32_netsh.py +3 -18
  556. angr/procedures/definitions/win32_netshell.py +3 -18
  557. angr/procedures/definitions/win32_newdev.py +3 -18
  558. angr/procedures/definitions/win32_ninput.py +3 -18
  559. angr/procedures/definitions/win32_normaliz.py +3 -18
  560. angr/procedures/definitions/win32_ntdll.py +3 -18
  561. angr/procedures/definitions/win32_ntdllk.py +3 -18
  562. angr/procedures/definitions/win32_ntdsapi.py +3 -18
  563. angr/procedures/definitions/win32_ntlanman.py +3 -18
  564. angr/procedures/definitions/win32_odbc32.py +3 -18
  565. angr/procedures/definitions/win32_odbcbcp.py +3 -18
  566. angr/procedures/definitions/win32_ole32.py +3 -18
  567. angr/procedures/definitions/win32_oleacc.py +3 -18
  568. angr/procedures/definitions/win32_oleaut32.py +3 -18
  569. angr/procedures/definitions/win32_oledlg.py +3 -18
  570. angr/procedures/definitions/win32_ondemandconnroutehelper.py +3 -18
  571. angr/procedures/definitions/win32_opengl32.py +3 -18
  572. angr/procedures/definitions/win32_opmxbox.py +3 -18
  573. angr/procedures/definitions/win32_p2p.py +3 -18
  574. angr/procedures/definitions/win32_p2pgraph.py +3 -18
  575. angr/procedures/definitions/win32_pdh.py +3 -18
  576. angr/procedures/definitions/win32_peerdist.py +3 -18
  577. angr/procedures/definitions/win32_powrprof.py +3 -18
  578. angr/procedures/definitions/win32_prntvpt.py +3 -18
  579. angr/procedures/definitions/win32_projectedfslib.py +3 -18
  580. angr/procedures/definitions/win32_propsys.py +3 -18
  581. angr/procedures/definitions/win32_psapi.py +3 -18
  582. angr/procedures/definitions/win32_quartz.py +3 -18
  583. angr/procedures/definitions/win32_query.py +3 -18
  584. angr/procedures/definitions/win32_qwave.py +3 -18
  585. angr/procedures/definitions/win32_rasapi32.py +3 -18
  586. angr/procedures/definitions/win32_rasdlg.py +3 -18
  587. angr/procedures/definitions/win32_resutils.py +3 -18
  588. angr/procedures/definitions/win32_rometadata.py +3 -3
  589. angr/procedures/definitions/win32_rpcns4.py +3 -18
  590. angr/procedures/definitions/win32_rpcproxy.py +3 -18
  591. angr/procedures/definitions/win32_rpcrt4.py +3 -18
  592. angr/procedures/definitions/win32_rstrtmgr.py +3 -18
  593. angr/procedures/definitions/win32_rtm.py +3 -18
  594. angr/procedures/definitions/win32_rtutils.py +3 -18
  595. angr/procedures/definitions/win32_rtworkq.py +3 -18
  596. angr/procedures/definitions/win32_sas.py +3 -18
  597. angr/procedures/definitions/win32_scarddlg.py +3 -18
  598. angr/procedures/definitions/win32_schannel.py +3 -18
  599. angr/procedures/definitions/win32_sechost.py +3 -18
  600. angr/procedures/definitions/win32_secur32.py +3 -18
  601. angr/procedures/definitions/win32_sensapi.py +3 -18
  602. angr/procedures/definitions/win32_sensorsutilsv2.py +3 -18
  603. angr/procedures/definitions/win32_setupapi.py +3 -18
  604. angr/procedures/definitions/win32_sfc.py +3 -18
  605. angr/procedures/definitions/win32_shdocvw.py +3 -18
  606. angr/procedures/definitions/win32_shell32.py +3 -18
  607. angr/procedures/definitions/win32_shlwapi.py +3 -18
  608. angr/procedures/definitions/win32_slc.py +3 -18
  609. angr/procedures/definitions/win32_slcext.py +3 -18
  610. angr/procedures/definitions/win32_slwga.py +3 -18
  611. angr/procedures/definitions/win32_snmpapi.py +3 -18
  612. angr/procedures/definitions/win32_spoolss.py +3 -18
  613. angr/procedures/definitions/win32_srclient.py +3 -18
  614. angr/procedures/definitions/win32_srpapi.py +3 -18
  615. angr/procedures/definitions/win32_sspicli.py +3 -18
  616. angr/procedures/definitions/win32_sti.py +3 -18
  617. angr/procedures/definitions/win32_t2embed.py +3 -18
  618. angr/procedures/definitions/win32_tapi32.py +3 -18
  619. angr/procedures/definitions/win32_tbs.py +3 -18
  620. angr/procedures/definitions/win32_tdh.py +3 -18
  621. angr/procedures/definitions/win32_tokenbinding.py +3 -18
  622. angr/procedures/definitions/win32_traffic.py +3 -18
  623. angr/procedures/definitions/win32_txfw32.py +3 -18
  624. angr/procedures/definitions/win32_ualapi.py +3 -18
  625. angr/procedures/definitions/win32_uiautomationcore.py +3 -18
  626. angr/procedures/definitions/win32_urlmon.py +3 -18
  627. angr/procedures/definitions/win32_user32.py +4 -19
  628. angr/procedures/definitions/win32_userenv.py +3 -18
  629. angr/procedures/definitions/win32_usp10.py +3 -18
  630. angr/procedures/definitions/win32_uxtheme.py +3 -18
  631. angr/procedures/definitions/win32_verifier.py +3 -18
  632. angr/procedures/definitions/win32_version.py +3 -18
  633. angr/procedures/definitions/win32_vertdll.py +3 -18
  634. angr/procedures/definitions/win32_virtdisk.py +3 -18
  635. angr/procedures/definitions/win32_vmdevicehost.py +3 -18
  636. angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +3 -18
  637. angr/procedures/definitions/win32_vssapi.py +3 -18
  638. angr/procedures/definitions/win32_wcmapi.py +3 -18
  639. angr/procedures/definitions/win32_wdsbp.py +3 -18
  640. angr/procedures/definitions/win32_wdsclientapi.py +3 -18
  641. angr/procedures/definitions/win32_wdsmc.py +3 -18
  642. angr/procedures/definitions/win32_wdspxe.py +3 -18
  643. angr/procedures/definitions/win32_wdstptc.py +3 -18
  644. angr/procedures/definitions/win32_webauthn.py +3 -18
  645. angr/procedures/definitions/win32_webservices.py +3 -18
  646. angr/procedures/definitions/win32_websocket.py +3 -18
  647. angr/procedures/definitions/win32_wecapi.py +3 -18
  648. angr/procedures/definitions/win32_wer.py +3 -18
  649. angr/procedures/definitions/win32_wevtapi.py +3 -18
  650. angr/procedures/definitions/win32_winbio.py +3 -18
  651. angr/procedures/definitions/win32_windows_ai_machinelearning.py +3 -18
  652. angr/procedures/definitions/win32_windows_data_pdf.py +3 -3
  653. angr/procedures/definitions/win32_windows_media_mediacontrol.py +3 -18
  654. angr/procedures/definitions/win32_windows_networking.py +3 -18
  655. angr/procedures/definitions/win32_windows_ui_xaml.py +3 -18
  656. angr/procedures/definitions/win32_windowscodecs.py +3 -18
  657. angr/procedures/definitions/win32_winfax.py +3 -18
  658. angr/procedures/definitions/win32_winhttp.py +3 -18
  659. angr/procedures/definitions/win32_winhvemulation.py +3 -18
  660. angr/procedures/definitions/win32_winhvplatform.py +3 -18
  661. angr/procedures/definitions/win32_wininet.py +3 -18
  662. angr/procedures/definitions/win32_winml.py +3 -18
  663. angr/procedures/definitions/win32_winmm.py +3 -18
  664. angr/procedures/definitions/win32_winscard.py +3 -18
  665. angr/procedures/definitions/win32_winspool.py +3 -3
  666. angr/procedures/definitions/win32_winspool_drv.py +3 -18
  667. angr/procedures/definitions/win32_wintrust.py +3 -18
  668. angr/procedures/definitions/win32_winusb.py +3 -18
  669. angr/procedures/definitions/win32_wlanapi.py +3 -18
  670. angr/procedures/definitions/win32_wlanui.py +3 -18
  671. angr/procedures/definitions/win32_wldap32.py +3 -18
  672. angr/procedures/definitions/win32_wldp.py +3 -18
  673. angr/procedures/definitions/win32_wmvcore.py +3 -18
  674. angr/procedures/definitions/win32_wnvapi.py +3 -18
  675. angr/procedures/definitions/win32_wofutil.py +3 -18
  676. angr/procedures/definitions/win32_ws2_32.py +3 -18
  677. angr/procedures/definitions/win32_wscapi.py +3 -18
  678. angr/procedures/definitions/win32_wsclient.py +3 -18
  679. angr/procedures/definitions/win32_wsdapi.py +3 -18
  680. angr/procedures/definitions/win32_wsmsvc.py +3 -18
  681. angr/procedures/definitions/win32_wsnmp32.py +3 -18
  682. angr/procedures/definitions/win32_wtsapi32.py +3 -18
  683. angr/procedures/definitions/win32_xaudio2_8.py +3 -18
  684. angr/procedures/definitions/win32_xinput1_4.py +3 -18
  685. angr/procedures/definitions/win32_xinputuap.py +3 -3
  686. angr/procedures/definitions/win32_xmllite.py +3 -18
  687. angr/procedures/definitions/win32_xolehlp.py +3 -18
  688. angr/procedures/definitions/win32_xpsprint.py +3 -18
  689. angr/procedures/glibc/scanf.py +2 -2
  690. angr/procedures/glibc/sscanf.py +1 -1
  691. angr/procedures/java/__init__.py +6 -3
  692. angr/procedures/java/unconstrained.py +4 -4
  693. angr/procedures/java_io/read.py +1 -1
  694. angr/procedures/java_io/write.py +1 -1
  695. angr/procedures/java_jni/__init__.py +25 -17
  696. angr/procedures/java_jni/array_operations.py +2 -2
  697. angr/procedures/java_jni/field_access.py +3 -3
  698. angr/procedures/java_jni/method_calls.py +2 -2
  699. angr/procedures/java_jni/object_operations.py +1 -1
  700. angr/procedures/java_jni/string_operations.py +2 -2
  701. angr/procedures/java_lang/character.py +1 -1
  702. angr/procedures/java_lang/double.py +2 -2
  703. angr/procedures/java_lang/exit.py +1 -1
  704. angr/procedures/java_lang/getsimplename.py +1 -1
  705. angr/procedures/java_lang/integer.py +2 -2
  706. angr/procedures/java_lang/load_library.py +1 -1
  707. angr/procedures/java_lang/math.py +1 -1
  708. angr/procedures/java_lang/string.py +4 -4
  709. angr/procedures/java_lang/stringbuilder.py +2 -2
  710. angr/procedures/java_lang/system.py +1 -1
  711. angr/procedures/java_util/collection.py +2 -2
  712. angr/procedures/java_util/iterator.py +2 -2
  713. angr/procedures/java_util/list.py +3 -3
  714. angr/procedures/java_util/map.py +3 -3
  715. angr/procedures/java_util/random.py +1 -1
  716. angr/procedures/java_util/scanner_nextline.py +3 -3
  717. angr/procedures/libc/fseek.py +1 -1
  718. angr/procedures/libc/memcpy.py +1 -1
  719. angr/procedures/libc/strlen.py +12 -4
  720. angr/procedures/libc/strncmp.py +9 -4
  721. angr/procedures/linux_kernel/iovec.py +3 -3
  722. angr/procedures/linux_kernel/mmap.py +1 -1
  723. angr/procedures/linux_kernel/stat.py +1 -1
  724. angr/procedures/linux_kernel/sysinfo.py +1 -1
  725. angr/procedures/linux_kernel/vsyscall.py +1 -1
  726. angr/procedures/posix/bzero.py +1 -1
  727. angr/procedures/posix/mmap.py +1 -1
  728. angr/procedures/posix/send.py +1 -1
  729. angr/procedures/posix/syslog.py +2 -3
  730. angr/procedures/procedure_dict.py +2 -2
  731. angr/procedures/stubs/Redirect.py +1 -1
  732. angr/procedures/stubs/UserHook.py +1 -1
  733. angr/procedures/stubs/format_parser.py +6 -6
  734. angr/procedures/tracer/random.py +1 -1
  735. angr/procedures/tracer/receive.py +1 -1
  736. angr/procedures/tracer/transmit.py +1 -1
  737. angr/procedures/uclibc/__uClibc_main.py +1 -1
  738. angr/protos/__init__.py +8 -0
  739. angr/sim_options.py +0 -4
  740. angr/sim_procedure.py +5 -5
  741. angr/sim_state.py +21 -34
  742. angr/sim_type.py +51 -18
  743. angr/simos/__init__.py +12 -0
  744. angr/simos/cgc.py +5 -5
  745. angr/simos/javavm.py +18 -23
  746. angr/simos/linux.py +6 -6
  747. angr/simos/simos.py +12 -16
  748. angr/simos/userland.py +3 -3
  749. angr/simos/windows.py +6 -11
  750. angr/state_hierarchy.py +1 -1
  751. angr/state_plugins/__init__.py +84 -28
  752. angr/state_plugins/callstack.py +1 -1
  753. angr/state_plugins/concrete.py +3 -4
  754. angr/state_plugins/filesystem.py +3 -3
  755. angr/state_plugins/gdb.py +1 -1
  756. angr/state_plugins/heap/__init__.py +14 -5
  757. angr/state_plugins/heap/heap_base.py +5 -4
  758. angr/state_plugins/heap/heap_brk.py +1 -1
  759. angr/state_plugins/heap/heap_freelist.py +1 -1
  760. angr/state_plugins/heap/heap_ptmalloc.py +2 -20
  761. angr/state_plugins/heap/utils.py +1 -1
  762. angr/state_plugins/history.py +2 -2
  763. angr/state_plugins/javavm_classloader.py +3 -3
  764. angr/state_plugins/jni_references.py +1 -1
  765. angr/state_plugins/light_registers.py +3 -3
  766. angr/state_plugins/log.py +1 -1
  767. angr/state_plugins/plugin.py +3 -2
  768. angr/state_plugins/posix.py +3 -3
  769. angr/state_plugins/preconstrainer.py +6 -6
  770. angr/state_plugins/scratch.py +4 -4
  771. angr/state_plugins/sim_action_object.py +1 -1
  772. angr/state_plugins/solver.py +15 -19
  773. angr/state_plugins/symbolizer.py +2 -3
  774. angr/state_plugins/trace_additions.py +8 -8
  775. angr/state_plugins/uc_manager.py +1 -1
  776. angr/state_plugins/unicorn_engine.py +4 -4
  777. angr/state_plugins/view.py +1 -1
  778. angr/storage/__init__.py +9 -3
  779. angr/storage/file.py +16 -16
  780. angr/storage/memory_mixins/__init__.py +88 -6
  781. angr/storage/memory_mixins/actions_mixin.py +3 -3
  782. angr/storage/memory_mixins/address_concretization_mixin.py +6 -6
  783. angr/storage/memory_mixins/bvv_conversion_mixin.py +1 -1
  784. angr/storage/memory_mixins/clouseau_mixin.py +1 -1
  785. angr/storage/memory_mixins/convenient_mappings_mixin.py +8 -10
  786. angr/storage/memory_mixins/default_filler_mixin.py +3 -3
  787. angr/storage/memory_mixins/hex_dumper_mixin.py +1 -1
  788. angr/storage/memory_mixins/{javavm_memory/javavm_memory_mixin.py → javavm_memory_mixin.py} +15 -12
  789. angr/storage/memory_mixins/{keyvalue_memory/keyvalue_memory_mixin.py → keyvalue_memory_mixin.py} +11 -6
  790. angr/storage/memory_mixins/multi_value_merger_mixin.py +5 -5
  791. angr/storage/memory_mixins/name_resolution_mixin.py +2 -2
  792. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +1 -1
  793. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -1
  794. angr/storage/memory_mixins/paged_memory/pages/__init__.py +15 -0
  795. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +1 -1
  796. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +2 -2
  797. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +2 -2
  798. angr/storage/memory_mixins/regioned_memory/__init__.py +10 -0
  799. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +1 -1
  800. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -1
  801. angr/storage/memory_mixins/regioned_memory/region_data.py +2 -2
  802. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +1 -1
  803. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +4 -4
  804. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +7 -19
  805. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +1 -1
  806. angr/storage/memory_mixins/simple_interface_mixin.py +1 -1
  807. angr/storage/memory_mixins/simplification_mixin.py +1 -1
  808. angr/storage/memory_mixins/size_resolution_mixin.py +2 -2
  809. angr/storage/memory_mixins/slotted_memory.py +1 -1
  810. angr/storage/memory_mixins/smart_find_mixin.py +3 -3
  811. angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
  812. angr/storage/memory_mixins/unwrapper_mixin.py +1 -1
  813. angr/storage/memory_object.py +8 -10
  814. angr/utils/__init__.py +12 -0
  815. angr/utils/enums_conv.py +1 -1
  816. angr/utils/library.py +2 -2
  817. angr/utils/mp.py +1 -1
  818. angr/utils/timing.py +30 -18
  819. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/METADATA +8 -7
  820. angr-9.2.120.dist-info/RECORD +1340 -0
  821. angr/analyses/s_liveness/__init__.py +0 -2
  822. angr/analyses/s_propagator/__init__.py +0 -2
  823. angr/analyses/s_reaching_definitions/s_rda.py +0 -479
  824. angr/knowledge_base/__init__.py +0 -2
  825. angr/knowledge_plugins/structured_code/__init__.py +0 -2
  826. angr/knowledge_plugins/sync/__init__.py +0 -2
  827. angr/knowledge_plugins/sync/sync_controller.py +0 -324
  828. angr/misc/range.py +0 -24
  829. angr/misc/weakpatch.py +0 -59
  830. angr/storage/memory_mixins/javavm_memory/__init__.py +0 -2
  831. angr/storage/memory_mixins/keyvalue_memory/__init__.py +0 -2
  832. angr/storage/pcap.py +0 -65
  833. angr/utils/typing.py +0 -18
  834. angr-9.2.118.dist-info/RECORD +0 -1344
  835. /angr/analyses/{s_liveness/s_liveness.py → s_liveness.py} +0 -0
  836. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/LICENSE +0 -0
  837. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/WHEEL +0 -0
  838. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/entry_points.txt +0 -0
  839. {angr-9.2.118.dist-info → angr-9.2.120.dist-info}/top_level.txt +0 -0
@@ -748,7 +748,8 @@ class CFGBase(Analysis):
748
748
  # Get all executable sections
749
749
  for section in b.sections:
750
750
  if section.is_executable:
751
- tpl = (section.min_addr, section.max_addr + 1)
751
+ max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
752
+ tpl = (section.min_addr, max_mapped_addr)
752
753
  sections.append(tpl)
753
754
  memory_regions += sections
754
755
 
@@ -756,7 +757,8 @@ class CFGBase(Analysis):
756
757
  # Get all executable segments
757
758
  for segment in b.segments:
758
759
  if segment.is_executable:
759
- tpl = (segment.min_addr, segment.max_addr + 1)
760
+ max_mapped_addr = segment.min_addr + min(segment.memsize, segment.filesize)
761
+ tpl = (segment.min_addr, max_mapped_addr)
760
762
  segments.append(tpl)
761
763
  if sections and segments:
762
764
  # are there executable segments with no sections inside?
@@ -770,7 +772,8 @@ class CFGBase(Analysis):
770
772
  elif isinstance(b, (Coff, PE)):
771
773
  for section in b.sections:
772
774
  if section.is_executable:
773
- tpl = (section.min_addr, section.max_addr + 1)
775
+ max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
776
+ tpl = (section.min_addr, max_mapped_addr)
774
777
  memory_regions.append(tpl)
775
778
 
776
779
  elif isinstance(b, XBE):
@@ -781,7 +784,7 @@ class CFGBase(Analysis):
781
784
  and not section.is_writable
782
785
  and section.name not in {".data", ".rdata", ".rodata"}
783
786
  ):
784
- tpl = (section.min_addr, section.max_addr + 1)
787
+ tpl = (section.min_addr, section.max_addr)
785
788
  memory_regions.append(tpl)
786
789
 
787
790
  elif isinstance(b, MachO):
@@ -791,7 +794,8 @@ class CFGBase(Analysis):
791
794
  if seg.is_executable:
792
795
  # Take all sections from this segment (MachO style)
793
796
  for section in seg.sections:
794
- tpl = (section.min_addr, section.max_addr + 1)
797
+ max_mapped_addr = section.min_addr + min(section.memsize, section.filesize)
798
+ tpl = (section.min_addr, max_mapped_addr)
795
799
  memory_regions.append(tpl)
796
800
 
797
801
  elif isinstance(b, (Hex, SRec)):
@@ -1313,6 +1317,23 @@ class CFGBase(Analysis):
1313
1317
 
1314
1318
  if new_node is None:
1315
1319
  # Create a new one
1320
+
1321
+ instruction_addrs = []
1322
+ for ins_addr in n.instruction_addrs:
1323
+ if n.addr <= ins_addr < n.addr + new_size:
1324
+ instruction_addrs.append(ins_addr)
1325
+ elif ins_addr == n.addr + new_size:
1326
+ break
1327
+ elif ins_addr > n.addr + new_size:
1328
+ # the immediate next instruction does not start right after the new node. this means we break
1329
+ # an existing instruction in the middle! we need to drop the last instruction address from
1330
+ # instruction_addrs.
1331
+ instruction_addrs.pop()
1332
+ break
1333
+ else:
1334
+ # should not happen if the instruction_addrs list is normal...
1335
+ break
1336
+
1316
1337
  if self.tag == "CFGFast":
1317
1338
  new_node = CFGNode(
1318
1339
  n.addr,
@@ -1320,7 +1341,7 @@ class CFGBase(Analysis):
1320
1341
  self.model,
1321
1342
  function_address=n.function_address,
1322
1343
  block_id=n.block_id,
1323
- instruction_addrs=[i for i in n.instruction_addrs if n.addr <= i <= n.addr + new_size],
1344
+ instruction_addrs=instruction_addrs,
1324
1345
  thumb=n.thumb,
1325
1346
  )
1326
1347
  elif self.tag == "CFGEmulated":
@@ -1331,16 +1352,12 @@ class CFGBase(Analysis):
1331
1352
  callstack_key=callstack_key,
1332
1353
  function_address=n.function_address,
1333
1354
  block_id=n.block_id,
1334
- instruction_addrs=[i for i in n.instruction_addrs if n.addr <= i <= n.addr + new_size],
1355
+ instruction_addrs=instruction_addrs,
1335
1356
  thumb=n.thumb,
1336
1357
  )
1337
1358
  else:
1338
1359
  raise ValueError(f"Unknown tag {self.tag}.")
1339
1360
 
1340
- # Copy instruction addresses
1341
- new_node.instruction_addrs = [
1342
- ins_addr for ins_addr in n.instruction_addrs if ins_addr < n.addr + new_size
1343
- ]
1344
1361
  # Put the new node into end_addresses list
1345
1362
  if key in smallest_nodes:
1346
1363
  end_addresses_to_nodes[key].add(smallest_nodes[key])
@@ -14,15 +14,15 @@ from archinfo import ArchARM
14
14
  from angr.analyses import ForwardAnalysis
15
15
  from angr.utils.graph import GraphUtils
16
16
  from angr.analyses import AnalysesHub
17
- from ... import BP, BP_BEFORE, BP_AFTER, SIM_PROCEDURES, procedures
18
- from ... import options as o
19
- from ...codenode import BlockNode
20
- from ...engines.procedure import ProcedureEngine
21
- from ...exploration_techniques.loop_seer import LoopSeer
22
- from ...exploration_techniques.slicecutor import Slicecutor
23
- from ...exploration_techniques.explorer import Explorer
24
- from ...exploration_techniques.lengthlimiter import LengthLimiter
25
- from ...errors import (
17
+ from angr import BP, BP_BEFORE, BP_AFTER, SIM_PROCEDURES, procedures
18
+ from angr import options as o
19
+ from angr.codenode import BlockNode
20
+ from angr.engines.procedure import ProcedureEngine
21
+ from angr.exploration_techniques.loop_seer import LoopSeer
22
+ from angr.exploration_techniques.slicecutor import Slicecutor
23
+ from angr.exploration_techniques.explorer import Explorer
24
+ from angr.exploration_techniques.lengthlimiter import LengthLimiter
25
+ from angr.errors import (
26
26
  AngrCFGError,
27
27
  AngrError,
28
28
  AngrSkipJobNotice,
@@ -34,15 +34,15 @@ from ...errors import (
34
34
  AngrExitError,
35
35
  SimEmptyCallStackError,
36
36
  )
37
- from ...sim_state import SimState
38
- from ...state_plugins.callstack import CallStack
39
- from ...state_plugins.sim_action import SimActionData
40
- from ...knowledge_plugins.cfg import CFGENode, IndirectJump
41
- from ...utils.constants import DEFAULT_STATEMENT
42
- from ..cdg import CDG
43
- from ..ddg import DDG
44
- from ..backward_slice import BackwardSlice
45
- from ..loopfinder import LoopFinder, Loop
37
+ from angr.sim_state import SimState
38
+ from angr.state_plugins.callstack import CallStack
39
+ from angr.state_plugins.sim_action import SimActionData
40
+ from angr.knowledge_plugins.cfg import CFGENode, IndirectJump
41
+ from angr.utils.constants import DEFAULT_STATEMENT
42
+ from angr.analyses.cdg import CDG
43
+ from angr.analyses.ddg import DDG
44
+ from angr.analyses.backward_slice import BackwardSlice
45
+ from angr.analyses.loopfinder import LoopFinder, Loop
46
46
  from .cfg_base import CFGBase
47
47
  from .cfg_job_base import BlockID, CFGJobBase
48
48
  import contextlib
@@ -1049,15 +1049,14 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
1049
1049
  # no wide string is found
1050
1050
  return 0
1051
1051
 
1052
- def _scan_for_repeating_bytes(self, start_addr, repeating_byte, threshold=2):
1052
+ def _scan_for_repeating_bytes(self, start_addr: int, repeating_byte: int, threshold: int = 2) -> int:
1053
1053
  """
1054
1054
  Scan from a given address and determine the occurrences of a given byte.
1055
1055
 
1056
- :param int start_addr: The address in memory to start scanning.
1057
- :param int repeating_byte: The repeating byte to scan for.
1058
- :param int threshold: The minimum occurrences.
1059
- :return: The occurrences of a given byte.
1060
- :rtype: int
1056
+ :param start_addr: The address in memory to start scanning.
1057
+ :param repeating_byte: The repeating byte to scan for.
1058
+ :param threshold: The minimum occurrences.
1059
+ :return: The occurrences of a given byte.
1061
1060
  """
1062
1061
 
1063
1062
  addr = start_addr
@@ -1078,6 +1077,70 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
1078
1077
  return repeating_length
1079
1078
  return 0
1080
1079
 
1080
+ def _scan_for_consecutive_pointers(self, start_addr: int, threshold: int = 2) -> int:
1081
+ """
1082
+ Scan from a given address and determine if there are at least `threshold` of pointers.
1083
+
1084
+ This function will yield high numbers of false positives if the mapped memory regions are too low (for example,
1085
+ <= 0x100000). It is recommended to set `threshold` to a higher value in such cases.
1086
+
1087
+ :param start_addr: The address to start scanning from.
1088
+ :param threshold: The minimum number of pointers to be found.
1089
+ :return: The number of pointers found.
1090
+ """
1091
+
1092
+ current_object = self.project.loader.find_object_containing(start_addr)
1093
+ addr = start_addr
1094
+ pointer_count = 0
1095
+ pointer_size = self.project.arch.bytes
1096
+
1097
+ while self._inside_regions(addr):
1098
+ val = self._fast_memory_load_pointer(addr)
1099
+ if val is None:
1100
+ break
1101
+ obj = self.project.loader.find_object_containing(val)
1102
+ if obj is not None and obj is current_object:
1103
+ pointer_count += 1
1104
+ else:
1105
+ break
1106
+ addr += pointer_size
1107
+
1108
+ if pointer_count >= threshold:
1109
+ return pointer_count
1110
+ return 0
1111
+
1112
+ def _scan_for_mixed_pointers(self, start_addr: int, threshold: int = 3, window: int = 6) -> int:
1113
+ """
1114
+ Scan from a given address and determine if there are at least `threshold` of pointers within a given window of pointers.
1115
+
1116
+ This function will yield high numbers of false positives if the mapped memory regions are too low (for example,
1117
+ <= 0x100000). It is recommended to set `threshold` to a higher value in such cases.
1118
+
1119
+ :param start_addr: The address to start scanning from.
1120
+ :param threshold: The minimum number of pointers to be found.
1121
+ :return: The number of pointers found.
1122
+ """
1123
+
1124
+ current_object = self.project.loader.find_object_containing(start_addr)
1125
+ addr = start_addr
1126
+ ctr = 0
1127
+ pointer_count = 0
1128
+ pointer_size = self.project.arch.bytes
1129
+
1130
+ while self._inside_regions(addr) and ctr < window:
1131
+ ctr += 1
1132
+ val = self._fast_memory_load_pointer(addr)
1133
+ if val is None:
1134
+ break
1135
+ obj = self.project.loader.find_object_containing(val)
1136
+ if obj is not None and obj is current_object:
1137
+ pointer_count += 1
1138
+ addr += pointer_size
1139
+
1140
+ if pointer_count >= threshold:
1141
+ return ctr
1142
+ return 0
1143
+
1081
1144
  def _next_code_addr_core(self):
1082
1145
  """
1083
1146
  Call _next_unscanned_addr() first to get the next address that is not scanned. Then check if data locates at
@@ -1091,35 +1154,83 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
1091
1154
  start_addr = next_addr
1092
1155
 
1093
1156
  while True:
1094
- string_length = self._scan_for_printable_strings(start_addr)
1095
- if string_length == 0:
1096
- string_length = self._scan_for_printable_widestrings(start_addr)
1097
-
1098
- if string_length:
1099
- self._seg_list.occupy(start_addr, string_length, "string")
1100
- start_addr += string_length
1157
+ pointer_length, string_length, cc_length = 0, 0, 0
1158
+ matched_something = False
1159
+
1160
+ if start_addr % self.project.arch.bytes == 0:
1161
+ # find potential pointer array
1162
+ threshold = 6 if start_addr <= 0x100000 else 1
1163
+ pointer_count = self._scan_for_consecutive_pointers(start_addr, threshold=threshold)
1164
+ pointer_length = pointer_count * self.project.arch.bytes
1165
+
1166
+ if pointer_length:
1167
+ matched_something = True
1168
+ self._seg_list.occupy(start_addr, pointer_length, "pointer-array")
1169
+ self.model.memory_data[start_addr] = MemoryData(
1170
+ start_addr, pointer_length, MemoryDataSort.PointerArray
1171
+ )
1172
+ start_addr += pointer_length
1173
+
1174
+ elif start_addr <= 0x100000:
1175
+ # for high addresses, all pointers have been found in _scan_for_consecutive_pointers() because we
1176
+ # set threshold there to 1
1177
+ threshold = 4
1178
+ pointer_count = self._scan_for_mixed_pointers(start_addr, threshold=threshold, window=6)
1179
+ pointer_length = pointer_count * self.project.arch.bytes
1180
+
1181
+ if pointer_length:
1182
+ matched_something = True
1183
+ self._seg_list.occupy(start_addr, pointer_length, "pointer-array")
1184
+ self.model.memory_data[start_addr] = MemoryData(
1185
+ start_addr, pointer_length, MemoryDataSort.PointerArray
1186
+ )
1187
+ start_addr += pointer_length
1188
+
1189
+ if not matched_something:
1190
+ # find strings
1191
+ is_widestring = False
1192
+ string_length = self._scan_for_printable_strings(start_addr)
1193
+ if string_length == 0:
1194
+ is_widestring = True
1195
+ string_length = self._scan_for_printable_widestrings(start_addr)
1196
+
1197
+ if string_length:
1198
+ matched_something = True
1199
+ self._seg_list.occupy(start_addr, string_length, "string")
1200
+ md = MemoryData(
1201
+ start_addr,
1202
+ string_length,
1203
+ MemoryDataSort.String if not is_widestring else MemoryDataSort.UnicodeString,
1204
+ )
1205
+ md.fill_content(self.project.loader)
1206
+ self.model.memory_data[start_addr] = md
1207
+ start_addr += string_length
1101
1208
 
1102
- if self.project.arch.name in ("X86", "AMD64"):
1209
+ if not matched_something and self.project.arch.name in {"X86", "AMD64"}:
1103
1210
  cc_length = self._scan_for_repeating_bytes(start_addr, 0xCC, threshold=1)
1104
1211
  if cc_length:
1212
+ matched_something = True
1105
1213
  self._seg_list.occupy(start_addr, cc_length, "alignment")
1214
+ self.model.memory_data[start_addr] = MemoryData(start_addr, cc_length, MemoryDataSort.Alignment)
1106
1215
  start_addr += cc_length
1107
- else:
1108
- cc_length = 0
1109
1216
 
1110
1217
  zeros_length = self._scan_for_repeating_bytes(start_addr, 0x00)
1111
1218
  if zeros_length:
1219
+ matched_something = True
1112
1220
  self._seg_list.occupy(start_addr, zeros_length, "alignment")
1221
+ self.model.memory_data[start_addr] = MemoryData(start_addr, zeros_length, MemoryDataSort.Alignment)
1113
1222
  start_addr += zeros_length
1114
1223
 
1115
- if string_length == 0 and cc_length == 0 and zeros_length == 0:
1224
+ if not matched_something:
1116
1225
  # umm now it's probably code
1117
1226
  break
1118
1227
 
1119
1228
  instr_alignment = self._initial_state.arch.instruction_alignment
1120
1229
  if start_addr % instr_alignment > 0:
1121
1230
  # occupy those few bytes
1122
- self._seg_list.occupy(start_addr, instr_alignment - (start_addr % instr_alignment), "alignment")
1231
+ size = instr_alignment - (start_addr % instr_alignment)
1232
+ self._seg_list.occupy(start_addr, size, "alignment")
1233
+ self.model.memory_data[start_addr] = MemoryData(start_addr, size, MemoryDataSort.Unknown)
1123
1234
  start_addr = start_addr - start_addr % instr_alignment + instr_alignment
1124
1235
  # trickiness: aligning the start_addr may create a new address that is outside any mapped region.
1125
1236
  if not self._inside_regions(start_addr):
@@ -3339,7 +3450,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
3339
3450
 
3340
3451
  # next case - if b is directly from function prologue detection, or a basic block that is a successor of
3341
3452
  # a wrongly identified basic block, we might be totally misdecoding b
3342
- if b.instruction_addrs[0] not in a.instruction_addrs and b in self.graph:
3453
+ if (not b.instruction_addrs or b.instruction_addrs[0] not in a.instruction_addrs) and b in self.graph:
3343
3454
  # use a, truncate b
3344
3455
 
3345
3456
  new_b_addr = a.addr + a.size # b starts right after a terminates
@@ -4272,7 +4383,6 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
4272
4383
  # Let's try to create the pyvex IRSB directly, since it's much faster
4273
4384
  nodecode = False
4274
4385
  irsb = None
4275
- irsb_string = None
4276
4386
  lifted_block = None
4277
4387
  try:
4278
4388
  lifted_block = self._lift(
@@ -4283,11 +4393,12 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
4283
4393
  load_from_ro_regions=True,
4284
4394
  initial_regs=initial_regs,
4285
4395
  )
4286
- irsb = lifted_block.vex_nostmt
4287
- irsb_string = lifted_block.bytes[: irsb.size]
4396
+ irsb = lifted_block.vex_nostmt # may raise SimTranslationError
4288
4397
  except SimTranslationError:
4289
4398
  nodecode = True
4290
4399
 
4400
+ irsb_string: bytes = lifted_block.bytes[: irsb.size] if irsb is not None else lifted_block.bytes
4401
+
4291
4402
  # special logic during the complete scanning phase
4292
4403
  if cfg_job.job_type == CFGJobType.COMPLETE_SCANNING and is_arm_arch(self.project.arch):
4293
4404
  # it's way too easy to incorrectly disassemble THUMB code contains 0x4f as ARM code svc?? #????
@@ -4324,10 +4435,11 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
4324
4435
  initial_regs=initial_regs,
4325
4436
  )
4326
4437
  irsb = lifted_block.vex_nostmt
4327
- irsb_string = lifted_block.bytes[: irsb.size]
4328
4438
  except SimTranslationError:
4329
4439
  nodecode = True
4330
4440
 
4441
+ irsb_string: bytes = lifted_block.bytes[: irsb.size] if irsb is not None else lifted_block.bytes
4442
+
4331
4443
  if not (nodecode or irsb.size == 0 or irsb.jumpkind == "Ijk_NoDecode"):
4332
4444
  # it is decodeable
4333
4445
  if current_function_addr == addr:
@@ -4397,7 +4509,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
4397
4509
  nodecode_size = 1
4398
4510
 
4399
4511
  # special handling for ud, ud1, and ud2 on x86 and x86-64
4400
- if irsb_string[-2:] == b"\x0f\x0b" and self.project.arch.name == "AMD64":
4512
+ if self.project.arch.name == "AMD64" and irsb_string[-2:] == b"\x0f\x0b":
4401
4513
  # VEX supports ud2 and make it part of the block size, only in AMD64.
4402
4514
  valid_ins = True
4403
4515
  nodecode_size = 0
@@ -8,11 +8,11 @@ from copy import copy
8
8
 
9
9
  from archinfo.arch_soot import SootMethodDescriptor, SootAddressDescriptor
10
10
 
11
- from ...utils.constants import DEFAULT_STATEMENT
12
- from ...errors import AngrCFGError, SimMemoryError, SimEngineError
13
- from ...codenode import HookNode, SootBlockNode
14
- from ...knowledge_plugins.cfg import CFGNode
15
- from .. import register_analysis
11
+ from angr.utils.constants import DEFAULT_STATEMENT
12
+ from angr.errors import AngrCFGError, SimMemoryError, SimEngineError
13
+ from angr.codenode import HookNode, SootBlockNode
14
+ from angr.knowledge_plugins.cfg import CFGNode
15
+ from angr.analyses import register_analysis
16
16
  from .cfg_fast import CFGFast, CFGJob, PendingJobs, FunctionTransitionEdge
17
17
 
18
18
  l = logging.getLogger(name=__name__)
@@ -4,11 +4,11 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  from archinfo.arch_soot import SootAddressDescriptor
6
6
 
7
- from ...errors import SimValueError, SimSolverModeError
8
- from ...state_plugins.callstack import CallStack
7
+ from angr.errors import SimValueError, SimSolverModeError
8
+ from angr.state_plugins.callstack import CallStack
9
9
 
10
10
  if TYPE_CHECKING:
11
- from ...sim_state import SimState
11
+ from angr.sim_state import SimState
12
12
  l = logging.getLogger(name=__name__)
13
13
 
14
14
  # TODO: Make callsite an object and use it in BlockID and FunctionKey
@@ -1,4 +1,5 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .mips_elf_fast import MipsElfFastResolver
3
4
  from .x86_elf_pic_plt import X86ElfPicPltResolver
4
5
  from .jumptable import JumpTableResolver
@@ -7,3 +8,15 @@ from .amd64_elf_got import AMD64ElfGotResolver
7
8
  from .arm_elf_fast import ArmElfFastResolver
8
9
  from .const_resolver import ConstantResolver
9
10
  from .amd64_pe_iat import AMD64PeIatResolver
11
+
12
+
13
+ __all__ = (
14
+ "MipsElfFastResolver",
15
+ "X86ElfPicPltResolver",
16
+ "JumpTableResolver",
17
+ "X86PeIatResolver",
18
+ "AMD64ElfGotResolver",
19
+ "ArmElfFastResolver",
20
+ "ConstantResolver",
21
+ "AMD64PeIatResolver",
22
+ )
@@ -3,7 +3,7 @@ import logging
3
3
 
4
4
  from capstone.x86_const import X86_OP_MEM, X86_REG_RIP
5
5
 
6
- from ....simos import SimWindows
6
+ from angr.simos import SimWindows
7
7
  from .resolver import IndirectJumpResolver
8
8
 
9
9
  l = logging.getLogger(name=__name__)
@@ -4,8 +4,8 @@ import logging
4
4
  import archinfo
5
5
  import pyvex
6
6
 
7
- from ....blade import Blade
8
- from ....utils.constants import DEFAULT_STATEMENT
7
+ from angr.blade import Blade
8
+ from angr.utils.constants import DEFAULT_STATEMENT
9
9
  from .resolver import IndirectJumpResolver
10
10
 
11
11
  _l = logging.getLogger(name=__name__)
@@ -5,10 +5,10 @@ import logging
5
5
  import claripy
6
6
  import pyvex
7
7
 
8
- from ....utils.constants import DEFAULT_STATEMENT
9
- from ....code_location import CodeLocation
10
- from ....blade import Blade
11
- from ...propagator import vex_vars
8
+ from angr.utils.constants import DEFAULT_STATEMENT
9
+ from angr.code_location import CodeLocation
10
+ from angr.blade import Blade
11
+ from angr.analyses.propagator import vex_vars
12
12
  from .resolver import IndirectJumpResolver
13
13
  from .propagator_utils import PropagatorLoadCallback
14
14
 
@@ -11,27 +11,27 @@ import pyvex
11
11
  import claripy
12
12
  from archinfo.arch_arm import is_arm_arch
13
13
 
14
- from .... import sim_options as o
15
- from .... import BP, BP_BEFORE, BP_AFTER
16
- from ....misc.ux import once
17
- from ....code_location import CodeLocation
18
- from ....concretization_strategies import SimConcretizationStrategyAny
19
- from ....knowledge_plugins.cfg import IndirectJump, IndirectJumpType
20
- from ....engines.vex.claripy import ccall
21
- from ....engines.light import SimEngineLightVEXMixin, SimEngineLight, SpOffset, RegisterOffset
22
- from ....errors import AngrError, SimError
23
- from ....blade import Blade
24
- from ....annocfg import AnnotatedCFG
25
- from ....exploration_techniques.slicecutor import Slicecutor
26
- from ....exploration_techniques.local_loop_seer import LocalLoopSeer
27
- from ....exploration_techniques.explorer import Explorer
28
- from ....utils.constants import DEFAULT_STATEMENT
29
- from ...propagator.vex_vars import VEXReg
14
+ from angr import sim_options as o
15
+ from angr import BP, BP_BEFORE, BP_AFTER
16
+ from angr.misc.ux import once
17
+ from angr.code_location import CodeLocation
18
+ from angr.concretization_strategies import SimConcretizationStrategyAny
19
+ from angr.knowledge_plugins.cfg import IndirectJump, IndirectJumpType
20
+ from angr.engines.vex.claripy import ccall
21
+ from angr.engines.light import SimEngineLightVEXMixin, SimEngineLight, SpOffset, RegisterOffset
22
+ from angr.errors import AngrError, SimError
23
+ from angr.blade import Blade
24
+ from angr.annocfg import AnnotatedCFG
25
+ from angr.exploration_techniques.slicecutor import Slicecutor
26
+ from angr.exploration_techniques.local_loop_seer import LocalLoopSeer
27
+ from angr.exploration_techniques.explorer import Explorer
28
+ from angr.utils.constants import DEFAULT_STATEMENT
29
+ from angr.analyses.propagator.vex_vars import VEXReg
30
30
  from .resolver import IndirectJumpResolver
31
31
  from .propagator_utils import PropagatorLoadCallback
32
32
 
33
33
  try:
34
- from ....engines import pcode
34
+ from angr.engines import pcode
35
35
  except ImportError:
36
36
  pcode = None
37
37
 
@@ -1723,7 +1723,10 @@ class JumpTableResolver(IndirectJumpResolver):
1723
1723
  all_targets = []
1724
1724
  jump_table = []
1725
1725
 
1726
- jumptable_si = claripy.SI(bits=project.arch.bits, to_conv=jumptable_addr)
1726
+ try:
1727
+ jumptable_si = claripy.SI(bits=project.arch.bits, to_conv=jumptable_addr)
1728
+ except claripy.errors.BackendError:
1729
+ return None
1727
1730
 
1728
1731
  # we may resolve a vtable (in C, e.g., the IO_JUMPS_FUNC in libc), but the stride of this load is usually 1
1729
1732
  # while the read statement reads a word size at a time.
@@ -8,11 +8,11 @@ import claripy
8
8
  import pyvex
9
9
 
10
10
 
11
- from .... import options, BP_BEFORE
12
- from ....blade import Blade
13
- from ....annocfg import AnnotatedCFG
14
- from ....exploration_techniques import Slicecutor
15
- from ....utils.constants import DEFAULT_STATEMENT
11
+ from angr import options, BP_BEFORE
12
+ from angr.blade import Blade
13
+ from angr.annocfg import AnnotatedCFG
14
+ from angr.exploration_techniques import Slicecutor
15
+ from angr.utils.constants import DEFAULT_STATEMENT
16
16
  from .resolver import IndirectJumpResolver
17
17
 
18
18
  if TYPE_CHECKING:
@@ -1,10 +1,10 @@
1
1
  from __future__ import annotations
2
2
  import typing
3
3
 
4
- from ....errors import SimMemoryError
4
+ from angr.errors import SimMemoryError
5
5
 
6
6
  if typing.TYPE_CHECKING:
7
- from .... import Project
7
+ from angr import Project
8
8
 
9
9
 
10
10
  class IndirectJumpResolver:
@@ -3,7 +3,7 @@ import logging
3
3
 
4
4
  from capstone.x86_const import X86_OP_MEM
5
5
 
6
- from ....simos import SimWindows
6
+ from angr.simos import SimWindows
7
7
  from .resolver import IndirectJumpResolver
8
8
 
9
9
  l = logging.getLogger(name=__name__)
@@ -1,3 +1,11 @@
1
1
  from __future__ import annotations
2
+
2
3
  from .graph import slice_callgraph, slice_cfg_graph, slice_function_graph
3
4
  from .cfg_slice_to_sink import CFGSliceToSink
5
+
6
+ __all__ = (
7
+ "CFGSliceToSink",
8
+ "slice_callgraph",
9
+ "slice_cfg_graph",
10
+ "slice_function_graph",
11
+ )
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
- from ..sim_type import SimCppClass, SimTypeCppFunction
3
- from ..analyses import AnalysesHub
2
+ from angr.sim_type import SimCppClass, SimTypeCppFunction
3
+ from angr.analyses import AnalysesHub
4
4
  from . import Analysis, CFGFast, VtableFinder
5
5
 
6
6
 
@@ -1,8 +1,8 @@
1
1
  from __future__ import annotations
2
2
  import pyvex
3
3
 
4
- from ..utils import looks_like_sql
5
- from ..knowledge_plugins.xrefs import XRef
4
+ from angr.utils import looks_like_sql
5
+ from angr.knowledge_plugins.xrefs import XRef
6
6
  from . import Analysis, AnalysesHub
7
7
 
8
8
 
@@ -14,8 +14,8 @@ import claripy
14
14
 
15
15
  from angr.utils.graph import GraphUtils
16
16
  from angr.simos import SimWindows
17
- from ..utils.mp import mp_context, Initializer
18
- from ..knowledge_plugins.cfg import CFGModel
17
+ from angr.utils.mp import mp_context, Initializer
18
+ from angr.knowledge_plugins.cfg import CFGModel
19
19
  from . import Analysis, register_analysis, VariableRecoveryFast, CallingConventionAnalysis
20
20
 
21
21
  if TYPE_CHECKING:
@@ -185,7 +185,7 @@ class CompleteCallingConventionsAnalysis(Analysis):
185
185
  if self._cc_callback is not None:
186
186
  self._cc_callback(func_addr)
187
187
 
188
- percentage = idx + 1 / total_funcs * 100.0
188
+ percentage = (idx + 1) / total_funcs * 100.0
189
189
  self._update_progress(percentage, text=f"{idx + 1}/{total_funcs} - {func.demangled_name}")
190
190
  if self._low_priority:
191
191
  self._release_gil(idx + 1, 10, 0.000001)
@@ -6,7 +6,6 @@ import claripy
6
6
  from . import Analysis
7
7
 
8
8
  l = logging.getLogger(name=__name__)
9
- # l.setLevel(logging.DEBUG)
10
9
 
11
10
 
12
11
  class CongruencyCheck(Analysis):
@@ -373,7 +372,7 @@ class CongruencyCheck(Analysis):
373
372
  return True
374
373
 
375
374
 
376
- from ..errors import AngrIncongruencyError
375
+ from angr.errors import AngrIncongruencyError
377
376
  from angr.analyses import AnalysesHub
378
377
 
379
378
  AnalysesHub.register_default("CongruencyCheck", CongruencyCheck)