angr 9.2.153__py3-none-manylinux2014_x86_64.whl → 9.2.154__py3-none-manylinux2014_x86_64.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.

@@ -1261,6 +1261,10 @@ class PhoenixStructurer(StructurerBase):
1261
1261
  # update node_a
1262
1262
  node_a = next(iter(nn for nn in graph.nodes if nn.addr == target))
1263
1263
 
1264
+ better_node_a = node_a
1265
+ if isinstance(node_a, SequenceNode) and is_empty_or_label_only_node(node_a.nodes[0]) and len(node_a.nodes) == 2:
1266
+ better_node_a = node_a.nodes[1]
1267
+
1264
1268
  case_and_entry_addrs = self._find_case_and_entry_addrs(node_a, graph, cmp_lb, jump_table)
1265
1269
 
1266
1270
  cases, node_default, to_remove = self._switch_build_cases(
@@ -1272,6 +1276,30 @@ class PhoenixStructurer(StructurerBase):
1272
1276
  full_graph,
1273
1277
  )
1274
1278
 
1279
+ if isinstance(better_node_a, SwitchCaseNode) and better_node_a.default_node is None:
1280
+ # we found a different head for an otherwise complete edge case.
1281
+ # recreate the switch with it.
1282
+ newsc = SwitchCaseNode(better_node_a.switch_expr, better_node_a.cases, node_default, addr=node.addr)
1283
+
1284
+ if node_default is not None and set(graph.succ[node_a]) != set(graph.succ[node_default]):
1285
+ # if node_a and default_node have different successors we need to bail
1286
+ return False
1287
+
1288
+ for pgraph in (graph, full_graph):
1289
+ all_preds = set(pgraph.pred[node])
1290
+ all_succs = set(pgraph.succ[node_a])
1291
+ if node_default is not None:
1292
+ pgraph.remove_node(node_default)
1293
+ pgraph.remove_node(node)
1294
+ pgraph.remove_node(node_a)
1295
+ pgraph.add_node(newsc)
1296
+ for pred in all_preds:
1297
+ pgraph.add_edge(pred, newsc)
1298
+ for succ in all_succs:
1299
+ pgraph.add_edge(newsc, succ)
1300
+
1301
+ return True
1302
+
1275
1303
  if node_default is None:
1276
1304
  switch_end_addr = node_b_addr
1277
1305
  else:
@@ -368,6 +368,17 @@ class SwitchCaseNode(BaseNode):
368
368
  self.default_node = default_node
369
369
  self.addr = addr
370
370
 
371
+ def dbg_repr(self, indent=0) -> str:
372
+ return (
373
+ f"SwitchCaseNode(switch_expr={self.switch_expr}, cases=["
374
+ + ", ".join(
375
+ hex(case) if isinstance(case, int) else f"({', '.join(hex(ccase) for ccase in case)})"
376
+ for case in self.cases
377
+ )
378
+ + "\n"
379
+ + f"], default_node={self.default_node})"
380
+ )
381
+
371
382
 
372
383
  class IncompleteSwitchCaseNode(BaseNode):
373
384
  """
@@ -9,7 +9,7 @@ from cle.backends import ELF
9
9
  import claripy
10
10
 
11
11
  from angr.storage.memory_mixins.paged_memory.pages.multi_values import MultiValues
12
- from angr.sim_type import SimTypeBottom, dereference_simtype
12
+ from angr.sim_type import SimTypeBottom
13
13
  from angr.knowledge_plugins.key_definitions.atoms import Atom, Register, MemoryLocation, SpOffset
14
14
  from angr.knowledge_plugins.key_definitions.tag import Tag
15
15
  from angr.calling_conventions import SimCC
@@ -18,7 +18,7 @@ from angr.knowledge_plugins.key_definitions.definition import Definition
18
18
  from angr.knowledge_plugins.functions import Function
19
19
  from angr.code_location import CodeLocation, ExternalCodeLocation
20
20
  from angr.knowledge_plugins.key_definitions.constants import ObservationPointType
21
- from angr import SIM_LIBRARIES, SIM_TYPE_COLLECTIONS
21
+ from angr.utils.types import dereference_simtype_by_lib
22
22
 
23
23
 
24
24
  if TYPE_CHECKING:
@@ -221,16 +221,16 @@ class FunctionCallDataUnwrapped(FunctionCallData):
221
221
  Typechecks be gone!
222
222
  """
223
223
 
224
- address_multi: MultiValues
225
- address: int
224
+ address_multi: MultiValues # type: ignore[reportIncompatibleVariableOverride]
225
+ address: int # type: ignore[reportIncompatibleVariableOverride]
226
226
  symbol: Symbol
227
- function: Function
228
- name: str
229
- cc: SimCC
230
- prototype: SimTypeFunction
231
- args_atoms: list[set[Atom]]
232
- args_values: list[MultiValues]
233
- ret_atoms: set[Atom]
227
+ function: Function # type: ignore[reportIncompatibleVariableOverride]
228
+ name: str # type: ignore[reportIncompatibleVariableOverride]
229
+ cc: SimCC # type: ignore[reportIncompatibleVariableOverride]
230
+ prototype: SimTypeFunction # type: ignore[reportIncompatibleVariableOverride]
231
+ args_atoms: list[set[Atom]] # type: ignore[reportIncompatibleVariableOverride]
232
+ args_values: list[MultiValues] # type: ignore[reportIncompatibleVariableOverride]
233
+ ret_atoms: set[Atom] # type: ignore[reportIncompatibleVariableOverride]
234
234
 
235
235
  def __init__(self, inner: FunctionCallData):
236
236
  d = dict(inner.__dict__)
@@ -399,14 +399,8 @@ class FunctionHandler:
399
399
  if data.function is not None and data.function.prototype_libname
400
400
  else hook_libname
401
401
  )
402
- type_collections = []
403
- if prototype_libname is not None and prototype_libname in SIM_LIBRARIES:
404
- for prototype_lib in SIM_LIBRARIES[prototype_libname]:
405
- if prototype_lib.type_collection_names:
406
- for typelib_name in prototype_lib.type_collection_names:
407
- type_collections.append(SIM_TYPE_COLLECTIONS[typelib_name])
408
- if type_collections:
409
- prototype = dereference_simtype(data.prototype, type_collections).with_arch(state.arch)
402
+ if prototype_libname is not None:
403
+ prototype = dereference_simtype_by_lib(data.prototype, prototype_libname)
410
404
  data.prototype = cast(SimTypeFunction, prototype)
411
405
 
412
406
  if isinstance(data.prototype, SimTypeFunction):
@@ -17,6 +17,7 @@ from angr.knowledge_plugins import Function
17
17
  from angr.block import BlockNode
18
18
  from angr.errors import SimTranslationError
19
19
  from angr.calling_conventions import SimStackArg
20
+ from angr.utils.types import dereference_simtype_by_lib
20
21
 
21
22
  from .analysis import Analysis
22
23
 
@@ -812,10 +813,15 @@ class StackPointerTracker(Analysis, ForwardAnalysis):
812
813
  if v is BOTTOM:
813
814
  incremented = BOTTOM
814
815
  elif callee.prototype is not None:
816
+ proto = (
817
+ dereference_simtype_by_lib(callee.prototype, callee.prototype_libname)
818
+ if callee.prototype_libname
819
+ else callee.prototype
820
+ )
815
821
  num_stack_args = len(
816
822
  [
817
823
  arg_loc
818
- for arg_loc in callee.calling_convention.arg_locs(callee.prototype)
824
+ for arg_loc in callee.calling_convention.arg_locs(proto)
819
825
  if isinstance(arg_loc, SimStackArg)
820
826
  ]
821
827
  )
@@ -9,10 +9,10 @@ import claripy
9
9
  from unique_log_filter import UniqueLogFilter
10
10
 
11
11
  from angr.engines.light.engine import SimEngineNostmtAIL
12
- from angr.procedures import SIM_LIBRARIES, SIM_TYPE_COLLECTIONS
13
- from angr.sim_type import SimTypeFunction, dereference_simtype
12
+ from angr.sim_type import SimTypeFunction
14
13
  from angr.analyses.typehoon import typeconsts, typevars
15
14
  from angr.analyses.typehoon.lifter import TypeLifter
15
+ from angr.utils.types import dereference_simtype_by_lib
16
16
  from .engine_base import SimEngineVRBase, RichR
17
17
 
18
18
  if TYPE_CHECKING:
@@ -190,17 +190,11 @@ class SimEngineVRAIL(
190
190
 
191
191
  if prototype is not None and args:
192
192
  # add type constraints
193
-
194
- type_collections = []
195
- if prototype_libname is not None:
196
- for prototype_lib in SIM_LIBRARIES[prototype_libname]:
197
- if prototype_lib.type_collection_names:
198
- for typelib_name in prototype_lib.type_collection_names:
199
- type_collections.append(SIM_TYPE_COLLECTIONS[typelib_name])
200
-
201
193
  for arg, arg_type in zip(args, prototype.args):
202
194
  if arg.typevar is not None:
203
- arg_type = dereference_simtype(arg_type, type_collections).with_arch(arg_type._arch)
195
+ arg_type = (
196
+ dereference_simtype_by_lib(arg_type, prototype_libname) if prototype_libname else arg_type
197
+ )
204
198
  arg_ty = TypeLifter(self.arch.bits).lift(arg_type)
205
199
  type_constraint = typevars.Subtype(arg.typevar, arg_ty)
206
200
  self.state.add_type_constraint(type_constraint)
@@ -209,7 +203,7 @@ class SimEngineVRAIL(
209
203
 
210
204
  def _handle_stmt_Call(self, stmt):
211
205
  target = stmt.target
212
- args = []
206
+ args: list[RichR] = []
213
207
  if stmt.args:
214
208
  for arg in stmt.args:
215
209
  self._reference_spoffset = True
@@ -283,22 +277,17 @@ class SimEngineVRAIL(
283
277
 
284
278
  if prototype is not None and args:
285
279
  # add type constraints
286
-
287
- type_collections = []
288
- if prototype_libname is not None:
289
- for prototype_lib in SIM_LIBRARIES[prototype_libname]:
290
- if prototype_lib.type_collection_names:
291
- for typelib_name in prototype_lib.type_collection_names:
292
- type_collections.append(SIM_TYPE_COLLECTIONS[typelib_name])
293
-
294
280
  for arg, arg_type in zip(args, prototype.args):
295
281
  if arg.typevar is not None:
296
- arg_type = dereference_simtype(arg_type, type_collections).with_arch(arg_type._arch)
282
+ arg_type = (
283
+ dereference_simtype_by_lib(arg_type, prototype_libname) if prototype_libname else arg_type
284
+ )
297
285
  arg_ty = TypeLifter(self.arch.bits).lift(arg_type)
298
- if isinstance(arg_ty, typevars.TypeConstraint) and isinstance(arg.typevar, typevars.TypeConstraint):
299
- continue
300
- type_constraint = typevars.Subtype(arg.typevar, arg_ty)
301
- self.state.add_type_constraint(type_constraint)
286
+ if arg.typevar is not None and isinstance(
287
+ arg_ty, (typeconsts.TypeConstant, typevars.TypeVariable, typevars.DerivedTypeVariable)
288
+ ):
289
+ type_constraint = typevars.Subtype(arg.typevar, arg_ty)
290
+ self.state.add_type_constraint(type_constraint)
302
291
 
303
292
  def _handle_stmt_Return(self, stmt):
304
293
  if stmt.ret_exprs:
@@ -47,7 +47,7 @@ class RichR(Generic[RichRT_co]):
47
47
  ):
48
48
  self.data = data
49
49
  self.variable = variable
50
- self.typevar = typevar
50
+ self.typevar: typeconsts.TypeConstant | typevars.TypeVariable | None = typevar
51
51
  self.type_constraints = type_constraints
52
52
 
53
53
  @property
angr/sim_type.py CHANGED
@@ -7,7 +7,7 @@ import re
7
7
  import logging
8
8
  from collections import OrderedDict, defaultdict, ChainMap
9
9
  from collections.abc import Iterable
10
- from typing import Literal, Any, TYPE_CHECKING, cast, overload
10
+ from typing import Literal, Any, cast, overload
11
11
 
12
12
  from archinfo import Endness, Arch
13
13
  import claripy
@@ -17,12 +17,9 @@ import cxxheaderparser.types
17
17
  import pycparser
18
18
  from pycparser import c_ast
19
19
 
20
- from angr.errors import AngrMissingTypeError, AngrTypeError
20
+ from angr.errors import AngrTypeError
21
21
  from angr.sim_state import SimState
22
22
 
23
- if TYPE_CHECKING:
24
- from angr.procedures.definitions import SimTypeCollection
25
-
26
23
  StoreType = int | claripy.ast.BV
27
24
 
28
25
  l = logging.getLogger(name=__name__)
@@ -324,7 +321,7 @@ class SimTypeReg(SimType):
324
321
  with contextlib.suppress(AttributeError):
325
322
  value = value.ast # type: ignore
326
323
  if isinstance(value, claripy.ast.Bits): # pylint:disable=isinstance-second-argument-not-valid-type
327
- if value.size() != self.size:
324
+ if value.size() != self.size: # type: ignore
328
325
  raise ValueError("size of expression is wrong size for type")
329
326
  elif isinstance(value, int):
330
327
  value = claripy.BVV(value, self.size)
@@ -383,7 +380,7 @@ class SimTypeNum(SimType):
383
380
  store_endness = state.arch.memory_endness
384
381
 
385
382
  if isinstance(value, claripy.ast.Bits): # pylint:disable=isinstance-second-argument-not-valid-type
386
- if value.size() != self.size:
383
+ if value.size() != self.size: # type: ignore
387
384
  raise ValueError("size of expression is wrong size for type")
388
385
  elif isinstance(value, int) and self.size is not None:
389
386
  value = claripy.BVV(value, self.size)
@@ -505,7 +502,12 @@ class SimTypeFixedSizeInt(SimTypeInt):
505
502
  _fixed_size: int = 32
506
503
 
507
504
  def c_repr(
508
- self, name=None, full=0, memo=None, indent=0, name_parens: bool = True # pylint:disable=unused-argument
505
+ self,
506
+ name=None,
507
+ full=0,
508
+ memo=None,
509
+ indent: int | None = 0,
510
+ name_parens: bool = True, # pylint:disable=unused-argument
509
511
  ):
510
512
  out = self._base_name
511
513
  if not self.signed:
@@ -1653,7 +1655,7 @@ class SimUnion(NamedTypeMixin, SimType):
1653
1655
  def size(self):
1654
1656
  if self._arch is None:
1655
1657
  raise ValueError("Can't tell my size without an arch!")
1656
- member_sizes = [ty.size for ty in self.members.values() if not isinstance(ty, SimTypeBottom)]
1658
+ member_sizes: list[int] = [ty.size for ty in self.members.values() if not isinstance(ty, SimTypeBottom)]
1657
1659
  # fall back to word size in case all members are SimTypeBottom
1658
1660
  return max(member_sizes) if member_sizes else self._arch.bytes
1659
1661
 
@@ -3652,67 +3654,6 @@ def parse_cpp_file(cpp_decl, with_param_names: bool = False):
3652
3654
  return func_decls, {}
3653
3655
 
3654
3656
 
3655
- def dereference_simtype(
3656
- t: SimType, type_collections: list[SimTypeCollection], memo: dict[str, SimType] | None = None
3657
- ) -> SimType:
3658
- if memo is None:
3659
- memo = {}
3660
-
3661
- if isinstance(t, SimTypeRef):
3662
- real_type = None
3663
-
3664
- if t.name in memo:
3665
- return memo[t.name]
3666
-
3667
- if type_collections and t.name is not None:
3668
- for tc in type_collections:
3669
- try:
3670
- real_type = tc.get(t.name)
3671
- break
3672
- except AngrMissingTypeError:
3673
- continue
3674
- if real_type is None:
3675
- raise AngrMissingTypeError(f"Missing type {t.name}")
3676
- return dereference_simtype(real_type, type_collections, memo=memo)
3677
-
3678
- # the following code prepares a real_type SimType object that will be returned at the end of this method
3679
- if isinstance(t, SimStruct):
3680
- if t.name in memo:
3681
- return memo[t.name]
3682
-
3683
- real_type = t.copy()
3684
- if not t.anonymous:
3685
- memo[t.name] = real_type
3686
- fields = OrderedDict((k, dereference_simtype(v, type_collections, memo=memo)) for k, v in t.fields.items())
3687
- real_type.fields = fields
3688
- elif isinstance(t, SimTypePointer):
3689
- real_pts_to = dereference_simtype(t.pts_to, type_collections, memo=memo)
3690
- real_type = t.copy()
3691
- real_type.pts_to = real_pts_to
3692
- elif isinstance(t, SimTypeArray):
3693
- real_elem_type = dereference_simtype(t.elem_type, type_collections, memo=memo)
3694
- real_type = t.copy()
3695
- real_type.elem_type = real_elem_type
3696
- elif isinstance(t, SimUnion):
3697
- real_members = {k: dereference_simtype(v, type_collections, memo=memo) for k, v in t.members.items()}
3698
- real_type = t.copy()
3699
- real_type.members = real_members
3700
- elif isinstance(t, SimTypeFunction):
3701
- real_args = [dereference_simtype(arg, type_collections, memo=memo) for arg in t.args]
3702
- real_return_type = (
3703
- dereference_simtype(t.returnty, type_collections, memo=memo) if t.returnty is not None else None
3704
- )
3705
- real_type = t.copy()
3706
- real_type.args = tuple(real_args)
3707
- real_type.returnty = real_return_type
3708
- else:
3709
- return t
3710
-
3711
- if t._arch is not None:
3712
- real_type = real_type.with_arch(t._arch)
3713
- return real_type
3714
-
3715
-
3716
3657
  if pycparser is not None:
3717
3658
  _accepts_scope_stack()
3718
3659
 
angr/utils/types.py CHANGED
@@ -1,6 +1,23 @@
1
1
  from __future__ import annotations
2
+ from typing import TYPE_CHECKING
3
+ from collections import OrderedDict
2
4
 
3
- from angr.sim_type import TypeRef, SimType, SimTypePointer, SimTypeArray, SimTypeFixedSizeArray
5
+ from angr.sim_type import (
6
+ TypeRef,
7
+ SimType,
8
+ SimTypePointer,
9
+ SimTypeArray,
10
+ SimTypeFixedSizeArray,
11
+ SimTypeRef,
12
+ SimStruct,
13
+ SimUnion,
14
+ SimTypeFunction,
15
+ )
16
+ from angr.errors import AngrMissingTypeError
17
+ from angr import SIM_TYPE_COLLECTIONS, SIM_LIBRARIES
18
+
19
+ if TYPE_CHECKING:
20
+ from angr.procedures.definitions import SimTypeCollection
4
21
 
5
22
 
6
23
  def unpack_typeref(ty):
@@ -57,3 +74,78 @@ def squash_array_reference(ty):
57
74
  if array_of:
58
75
  return SimTypePointer(array_of)
59
76
  return ty
77
+
78
+
79
+ def dereference_simtype(
80
+ t: SimType, type_collections: list[SimTypeCollection], memo: dict[str, SimType] | None = None
81
+ ) -> SimType:
82
+ if memo is None:
83
+ memo = {}
84
+
85
+ if isinstance(t, SimTypeRef):
86
+ real_type = None
87
+
88
+ if t.name in memo:
89
+ return memo[t.name]
90
+
91
+ if type_collections and t.name is not None:
92
+ for tc in type_collections:
93
+ try:
94
+ real_type = tc.get(t.name)
95
+ break
96
+ except AngrMissingTypeError:
97
+ continue
98
+ if real_type is None:
99
+ raise AngrMissingTypeError(f"Missing type {t.name}")
100
+ return dereference_simtype(real_type, type_collections, memo=memo)
101
+
102
+ # the following code prepares a real_type SimType object that will be returned at the end of this method
103
+ if isinstance(t, SimStruct):
104
+ if t.name in memo:
105
+ return memo[t.name]
106
+
107
+ real_type = t.copy()
108
+ if not t.anonymous:
109
+ memo[t.name] = real_type
110
+ fields = OrderedDict((k, dereference_simtype(v, type_collections, memo=memo)) for k, v in t.fields.items())
111
+ real_type.fields = fields
112
+ elif isinstance(t, SimTypePointer):
113
+ real_pts_to = dereference_simtype(t.pts_to, type_collections, memo=memo)
114
+ real_type = t.copy()
115
+ real_type.pts_to = real_pts_to
116
+ elif isinstance(t, SimTypeArray):
117
+ real_elem_type = dereference_simtype(t.elem_type, type_collections, memo=memo)
118
+ real_type = t.copy()
119
+ real_type.elem_type = real_elem_type
120
+ elif isinstance(t, SimUnion):
121
+ real_members = {k: dereference_simtype(v, type_collections, memo=memo) for k, v in t.members.items()}
122
+ real_type = t.copy()
123
+ real_type.members = real_members
124
+ elif isinstance(t, SimTypeFunction):
125
+ real_args = [dereference_simtype(arg, type_collections, memo=memo) for arg in t.args]
126
+ real_return_type = (
127
+ dereference_simtype(t.returnty, type_collections, memo=memo) if t.returnty is not None else None
128
+ )
129
+ real_type = t.copy()
130
+ real_type.args = tuple(real_args)
131
+ real_type.returnty = real_return_type
132
+ else:
133
+ return t
134
+
135
+ if t._arch is not None:
136
+ real_type = real_type.with_arch(t._arch)
137
+ return real_type
138
+
139
+
140
+ def dereference_simtype_by_lib(t: SimType, libname: str) -> SimType:
141
+ if libname not in SIM_LIBRARIES:
142
+ return t
143
+
144
+ type_collections = []
145
+ for prototype_lib in SIM_LIBRARIES[libname]:
146
+ if prototype_lib.type_collection_names:
147
+ for typelib_name in prototype_lib.type_collection_names:
148
+ type_collections.append(SIM_TYPE_COLLECTIONS[typelib_name])
149
+ if type_collections:
150
+ return dereference_simtype(t, type_collections)
151
+ return t
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: angr
3
- Version: 9.2.153
3
+ Version: 9.2.154
4
4
  Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
5
5
  License: BSD-2-Clause
6
6
  Project-URL: Homepage, https://angr.io/
@@ -17,13 +17,13 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: cxxheaderparser
19
19
  Requires-Dist: GitPython
20
- Requires-Dist: ailment==9.2.153
21
- Requires-Dist: archinfo==9.2.153
20
+ Requires-Dist: ailment==9.2.154
21
+ Requires-Dist: archinfo==9.2.154
22
22
  Requires-Dist: cachetools
23
23
  Requires-Dist: capstone==5.0.3
24
24
  Requires-Dist: cffi>=1.14.0
25
- Requires-Dist: claripy==9.2.153
26
- Requires-Dist: cle==9.2.153
25
+ Requires-Dist: claripy==9.2.154
26
+ Requires-Dist: cle==9.2.154
27
27
  Requires-Dist: mulpyplexer
28
28
  Requires-Dist: networkx!=2.8.1,>=2.0
29
29
  Requires-Dist: protobuf>=5.28.2
@@ -31,7 +31,7 @@ Requires-Dist: psutil
31
31
  Requires-Dist: pycparser>=2.18
32
32
  Requires-Dist: pydemumble
33
33
  Requires-Dist: pyformlang
34
- Requires-Dist: pyvex==9.2.153
34
+ Requires-Dist: pyvex==9.2.154
35
35
  Requires-Dist: rich>=13.1.0
36
36
  Requires-Dist: sortedcontainers
37
37
  Requires-Dist: sympy
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=ApROccv7-zzv89AOX-4Ox3WeQbu3W39xfautbq4aWfk,9153
1
+ angr/__init__.py,sha256=ymy37RpyLK6hJkrMuf00QEHrqD_rpCvaVPjOR0Pvc7w,9153
2
2
  angr/__main__.py,sha256=AK9V6uPZ58UuTKmmiH_Kgn5pG9AvjnmJCPOku69A-WU,4993
3
3
  angr/annocfg.py,sha256=0NIvcuCskwz45hbBzigUTAuCrYutjDMwEXtMJf0y0S0,10742
4
4
  angr/blade.py,sha256=NhesOPloKJC1DQJRv_HBT18X7oNxK16JwAfNz2Lc1o0,15384
@@ -20,14 +20,14 @@ angr/sim_options.py,sha256=tfl57MFECmA7uvMMtQrRRbpG8g_A9jKOzwY6nApTW6Y,17782
20
20
  angr/sim_procedure.py,sha256=EfXQEX-Na7iNtoqc2-KQhs7AR3tsiMYnxEF1v_lL_ok,26235
21
21
  angr/sim_state.py,sha256=qK6XPl2Q23xEXBud_SBy1fzVPPcrlx0PEQwMtRKBaBI,33893
22
22
  angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
23
- angr/sim_type.py,sha256=Q4fiYpordW0ewqBGh5W25weOwwx-mOIUP85GikQ8iS8,136778
23
+ angr/sim_type.py,sha256=M3Jn3RWYRFnq152pwBFcfPXc9XEyAKqMzkvDgUUG6fU,134454
24
24
  angr/sim_variable.py,sha256=tRQXTCE8GO9V_fjC_umiWOm9rY7JLBjq_zrwKptz20g,16625
25
25
  angr/slicer.py,sha256=DND0BERanYKafasRH9MDFAng0rSjdjmzXj2-phCD6CQ,10634
26
26
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
27
27
  angr/tablespecs.py,sha256=Kx1e87FxTx3_ZN7cAHWZSRpdInT4Vfj5gExAWtLkLTw,3259
28
28
  angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
29
29
  angr/analyses/__init__.py,sha256=KFu0Otm7bqAcjX8dsnQzphJmkUVxMLssjFIJJOci32U,3479
30
- angr/analyses/analysis.py,sha256=GxbQ5MSXcLRXsEWeUA1dnFclmt5yitVRC1NdLjNraIk,14852
30
+ angr/analyses/analysis.py,sha256=vXjgq9LlBhROX-QH-V3Y5DZAM7T5r1Qvv5mXjNF9dtw,14909
31
31
  angr/analyses/backward_slice.py,sha256=fdE1GbppXjGufLzfOQkeuIzGX0yx9ISHJlOGqS6m1lg,27218
32
32
  angr/analyses/binary_optimizer.py,sha256=xFDv8c1s5nQUKY_EWYRCuVroSXFkMiSLl5LngPiysDA,26145
33
33
  angr/analyses/bindiff.py,sha256=ysphJ9cg7yxnW7HxOSLYEohrTdq9ZK-8cVvKQ0U9u9M,64020
@@ -56,7 +56,7 @@ angr/analyses/s_liveness.py,sha256=K4soSrcQE9pIn7Yf2Lb3LZEu1ymuQVpWzOqLKunFDGQ,7
56
56
  angr/analyses/s_propagator.py,sha256=4MUmjo1aozCT-UeN9IMYlxtMjCoTM6hWwYaYTTjwvCQ,24904
57
57
  angr/analyses/smc.py,sha256=UyVaTBms0KI9jRUBhbnz1s6ez_K_oRy4qoPsvxwnoQY,5177
58
58
  angr/analyses/soot_class_hierarchy.py,sha256=R4xeacn-a_Q7PxSyj_stu5mnglZkPB5US5srKChX3mk,8740
59
- angr/analyses/stack_pointer_tracker.py,sha256=XcqCwqurI8x-N4mU_yfQWwIQNkj3fTtXYkUvw2PFIzw,37821
59
+ angr/analyses/stack_pointer_tracker.py,sha256=M75GLS_YsnjjKwZ8_AZftG8l27Z45fPYwiid2rksTJM,38151
60
60
  angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
61
61
  angr/analyses/veritesting.py,sha256=M6WNsbgiv4ScFPQIaFzujNFya66rQ9GSieaRLuC6RSo,25062
62
62
  angr/analyses/vfg.py,sha256=04X_mup9P82bkQIXMju3_DBPPJB1TytA_7RR9uAu3tU,72868
@@ -65,7 +65,7 @@ angr/analyses/vtable.py,sha256=1Ed7jzr99rk9VgOGzcxBw_6GFqby5mIdSTGPqQPhcZM,3872
65
65
  angr/analyses/xrefs.py,sha256=vs6cpVmwXHOmxrI9lJUwCRMYbPSqvIQXS5_fINMaOGI,10290
66
66
  angr/analyses/calling_convention/__init__.py,sha256=bK5VS6AxT5l86LAhTL7l1HUT9IuvXG9x9ikbIohIFoE,194
67
67
  angr/analyses/calling_convention/calling_convention.py,sha256=4QeL92Ec05cVArhunJc43rCgZD3ScHaasOmCmFfsOpU,46601
68
- angr/analyses/calling_convention/fact_collector.py,sha256=dIQGPHHFDNGgAcx6w4cGmjsdxKEZyu_JFBc8tsk2kWw,28885
68
+ angr/analyses/calling_convention/fact_collector.py,sha256=SCdNm-6qfgj-SRnbtPpzzkZBS0nH0Ik3zPn5wLG6-7Y,28480
69
69
  angr/analyses/calling_convention/utils.py,sha256=twkO073RvkkFXnOTc-KYQT1GKUtz0OPjxh0N6AWIriQ,2110
70
70
  angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04,446
71
71
  angr/analyses/cfg/cfb.py,sha256=scykl1FJvqcTe2x69zreWi0PG_zYMbka3k6tlRwaD_g,15367
@@ -73,7 +73,7 @@ angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
73
73
  angr/analyses/cfg/cfg_arch_options.py,sha256=_XRewFZ51SeNaxChadb6_ER7-8LW8KXeTIpoP8_iRj0,3506
74
74
  angr/analyses/cfg/cfg_base.py,sha256=VEsUvo4ySnvMvrphcJjAhCHfh7BX9jmY7KrHc2U_Hgc,123441
75
75
  angr/analyses/cfg/cfg_emulated.py,sha256=wL0ABJMZ8EwKbNjrpE_eqCkZpHDt4y6lmoQOmAIcJMQ,148235
76
- angr/analyses/cfg/cfg_fast.py,sha256=nZVk_Wm1ylS3acBYKN_TDD-8sKg67Gg7mhOI54TYfrA,230949
76
+ angr/analyses/cfg/cfg_fast.py,sha256=vhu-6aPdIaltstPhhtWOpJBCR_M-iB6-5NH-Krh7cUo,231031
77
77
  angr/analyses/cfg/cfg_fast_soot.py,sha256=8YgMtY_8w4nAMcHR6n-q_eFvKwsvNz0anUH7EzIL1B4,25924
78
78
  angr/analyses/cfg/cfg_job_base.py,sha256=Zshze972MakTsd-licQz77lac17igQaaTsAteHeHhYQ,5974
79
79
  angr/analyses/cfg/indirect_jump_resolvers/__init__.py,sha256=qWiTSIAQgXWmaYa9YYaiKsSTwUVClymaXv9sCX-bY-k,835
@@ -106,10 +106,10 @@ angr/analyses/decompiler/ailgraph_walker.py,sha256=m71HCthOr9J8PZoMxJzCPskay8yfC
106
106
  angr/analyses/decompiler/block_io_finder.py,sha256=xMwG8Bi69OGNYVs0U0F4yxM8kEsnyrsMrf0gEr8dOEw,10923
107
107
  angr/analyses/decompiler/block_similarity.py,sha256=SseCdWgh-kS9q_C_BRxlQ4OwCRQfg-9IyncxKXm_OG8,6849
108
108
  angr/analyses/decompiler/block_simplifier.py,sha256=Di5UXgBIXp0pa3_ubHY4k9vj927xAFR3oCUZ16Q3WvE,14229
109
- angr/analyses/decompiler/callsite_maker.py,sha256=ZjtLdxDCLS0WPqOik9bCek2LyuAtQNYA4V-yqGLeENo,23032
110
- angr/analyses/decompiler/clinic.py,sha256=5gs11WIfT7HAFKvVGdPjQHgrMRO8SXHw2zra1r9j63A,146384
109
+ angr/analyses/decompiler/callsite_maker.py,sha256=UKrRCzts2eIc-6tyWsZdrJ6S925cieal9MAz34jNwTo,23140
110
+ angr/analyses/decompiler/clinic.py,sha256=Qq99SIJJF7SHgO_LIG3JBI_F8bbPTPCbmYuYHFsNZqk,146070
111
111
  angr/analyses/decompiler/condition_processor.py,sha256=61VDwVA1e-oKsv0N8kvh3c5QOdQixrkBZcm3RLuw7KU,52679
112
- angr/analyses/decompiler/decompilation_cache.py,sha256=oNkeyrEXhyinrN7-fKeDEuGP6I_oAclGjRS4Aa36FoE,1488
112
+ angr/analyses/decompiler/decompilation_cache.py,sha256=gAZtyXs-eoFj3680bTrJVAZcIoaPsFK0kayu30NYLb4,1509
113
113
  angr/analyses/decompiler/decompilation_options.py,sha256=NDB67DI1L-stvJ4b1eQkfV26HgDJ_rG9-6PEv08G9-8,8195
114
114
  angr/analyses/decompiler/decompiler.py,sha256=qbYhdYbWxkbyHYf3D4py7ehXvsOUbXWgz7aCtTXixRE,29828
115
115
  angr/analyses/decompiler/empty_node_remover.py,sha256=_RAGjqDyRmannEGPcMmWkL7em990-_sKgl5CYreb-yI,7403
@@ -130,7 +130,7 @@ angr/analyses/decompiler/utils.py,sha256=li5ijfTZpkRvDFh0zvLj90jyoBLDIgDapc9suc5
130
130
  angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=TrnykR5cGCXy85f8OApJBjWSQ8WQSzjrnpND2fODWG8,207
131
131
  angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=2kw0H-QNTt03xEm_CKIx-WwXuh7JVMeNDlENdHvXxDU,24953
132
132
  angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=VbCENcybYUGrBD6U1Bp4nonNeEf05z_qhrpHBcyJw_4,496
133
- angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=3osgrQXaq4ArvnJNOChvzaNtovahEjfEl7igPddh-0c,2499
133
+ angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=tZBHtcY0ifSNcamQS0TfUfEb9ERBS5qJjaMPlzxe5Jg,11494
134
134
  angr/analyses/decompiler/counters/__init__.py,sha256=UT5K0cWgkVTAXZxy1qBBzrQip3YR2BOBVpxlAuNlt5o,480
135
135
  angr/analyses/decompiler/counters/boolean_counter.py,sha256=7htcU99D0fR_aDMi8p2MVuYqJRLDxZWAT29JlQSX6z4,873
136
136
  angr/analyses/decompiler/counters/call_counter.py,sha256=9zGhDElg-74EFL0ZVF7XaxDNzwWaSs5Vd2BDKthdFGU,1407
@@ -258,22 +258,22 @@ angr/analyses/decompiler/ssailification/__init__.py,sha256=zcHoI7e2El2RSU_bHTpQR
258
258
  angr/analyses/decompiler/ssailification/rewriting.py,sha256=JW_StoLWuDs2LGyG8XjRUbzvQl7-7s2B8j1GKVaYoDo,15045
259
259
  angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=WpgymMtZPYBPnyHZwzrcGrLHZ1juX0-NgPfPLOH937M,40905
260
260
  angr/analyses/decompiler/ssailification/rewriting_state.py,sha256=L7apDXQLPiItuLdQFoQdut5RMUE8MRV1zRc3CsnuH6E,1883
261
- angr/analyses/decompiler/ssailification/ssailification.py,sha256=GC8ue6Ywxtv0xG1XmxRUZz1HFpc19iOGk05yAsXRNvw,11035
261
+ angr/analyses/decompiler/ssailification/ssailification.py,sha256=Iszu52nKSupnNA5usRDhPPyJHFSvQsFJ5kU15n0V2Jw,11083
262
262
  angr/analyses/decompiler/ssailification/traversal.py,sha256=kZcua4SlDZ8u4EIkjc1Qh85EEYGX63PZ2NYPNq78Kzs,4011
263
263
  angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=oXTf4Z3Q2vPSGAlAPxsSKrqqDVJ3vRcg6LpNK0qJ51k,11419
264
264
  angr/analyses/decompiler/ssailification/traversal_state.py,sha256=RDs2mTc6GYnbMom2gBfNfNMcazKMSkhemEmse8uELTY,1558
265
265
  angr/analyses/decompiler/structured_codegen/__init__.py,sha256=mxG4yruPAab8735wVgXZ1zu8qFPz-njKe0m5UcywE3o,633
266
266
  angr/analyses/decompiler/structured_codegen/base.py,sha256=DEeNrBOC8AAJb-qFyUoYeX8fpHSPmAsutCDF-0UhaQ4,3782
267
- angr/analyses/decompiler/structured_codegen/c.py,sha256=IWOsy9St6_jd9fkNb4c4GVIpFZxtY6LJe7u2ngUpJ34,147855
267
+ angr/analyses/decompiler/structured_codegen/c.py,sha256=q4hYqQrqgi8-xA3SE4IYG4RsfrRreiVQdpwFgOvqEhY,147827
268
268
  angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
269
269
  angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
270
270
  angr/analyses/decompiler/structuring/__init__.py,sha256=kEFP-zv9CZrhJtLTKwT9-9cGVTls71wLYaLDUuYorBU,711
271
271
  angr/analyses/decompiler/structuring/dream.py,sha256=WOvtyQ0ZRABfF2bSQz1kcB_X3KHCL4x3QrJA6YNbgUc,48720
272
- angr/analyses/decompiler/structuring/phoenix.py,sha256=4GmQno5KlL4h8A6SPWsf_5QTGbXHw3_8BVcoJRNLDKw,138321
272
+ angr/analyses/decompiler/structuring/phoenix.py,sha256=ADOKtMMI8yvfUaAnEJ__sPf9Z4kHq8qfNvwsmz-qb3M,139638
273
273
  angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=4lHkzsEDSGsiEHrAImaJ4cQOmoZes87_GDSzOby90Rc,7219
274
274
  angr/analyses/decompiler/structuring/sailr.py,sha256=6lM9cK3iU1kQ_eki7v1Z2VxTiX5OwQzIRF_BbEsw67Q,5721
275
275
  angr/analyses/decompiler/structuring/structurer_base.py,sha256=3TBpv5gE7CfUrRd1TihDDqMVUJnMstO6v6PXJYAOlpA,47399
276
- angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=x1lnHOSaOoQsXJQvHi0jnMe3SdaFUU9tY1mX0Sx6JUI,12318
276
+ angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=5V5UEpFgyN4kZUqyDltiwtqxbcA8nS5hwLv5XSVH-ek,12711
277
277
  angr/analyses/deobfuscator/__init__.py,sha256=7DgTLEs8P6fWJYkMcAjxnS4jjBDX2jJr8bjYvsTua2c,648
278
278
  angr/analyses/deobfuscator/api_obf_finder.py,sha256=044ZCXK6D5BZjVyPfe0isAFDzDDDDzy_oJrfm5fDLew,13686
279
279
  angr/analyses/deobfuscator/api_obf_peephole_optimizer.py,sha256=pyWZgSUyHQ2bnD9Kt3P8fDVwH1QsYrtf2UQJKHVyzVo,2210
@@ -345,7 +345,7 @@ angr/analyses/reaching_definitions/dep_graph.py,sha256=yOuYhAYQQSi2aN6GIWYkgzquq
345
345
  angr/analyses/reaching_definitions/engine_ail.py,sha256=7w3I1mWwvk1FxPTbPS-UCR9Mdbn_YJ_Ltyvbo4Mx5hU,46623
346
346
  angr/analyses/reaching_definitions/engine_vex.py,sha256=K486MkRAvTcTFD52pJtmjWbuVw7KURtGCEC0EDhJmRk,45601
347
347
  angr/analyses/reaching_definitions/external_codeloc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
- angr/analyses/reaching_definitions/function_handler.py,sha256=ZwtBHoAAocYIIUYVjg51sG7ejdmTnXrQzbYlUgkDKXA,29105
348
+ angr/analyses/reaching_definitions/function_handler.py,sha256=Xi3ZqxShzBx77CsncJKPHjBAXX3-F-akU3XwpNvaunU,29135
349
349
  angr/analyses/reaching_definitions/heap_allocator.py,sha256=NQ9wBolyyUlCnQl8K0Gt0XVHhQAkRhNGa1MM9gRV9s8,2626
350
350
  angr/analyses/reaching_definitions/rd_initializer.py,sha256=z6LzV6UOWYg0G-Jnp4M16eFzOeX910YDt1rc-FEA4Kk,11156
351
351
  angr/analyses/reaching_definitions/rd_state.py,sha256=nVtfjqGMNBCgM7yGczkBwPn7XEkfOeIO6qGyxONvcnY,22870
@@ -374,8 +374,8 @@ angr/analyses/unpacker/obfuscation_detector.py,sha256=VWMHOO2UbyiGzRYzAq9yrU3WwZ
374
374
  angr/analyses/unpacker/packing_detector.py,sha256=SO6aXR1gZkQ7w17AAv3C1-U2KAc0yL9OIQqjNOtVnuo,5331
375
375
  angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
376
376
  angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
377
- angr/analyses/variable_recovery/engine_ail.py,sha256=7kGaMVV_h4UAholuJYXazSk0a6CXk3p9H2cd8kQJ7wI,33991
378
- angr/analyses/variable_recovery/engine_base.py,sha256=HFv-grnBD8ubSfDykn3-mLegVwn6T0SgCE3F7sgOxs8,52348
377
+ angr/analyses/variable_recovery/engine_ail.py,sha256=6G-Py2kOvdEIXMA_LBa8S-ns2gLgRiGWrA3lmaaDGcA,33392
378
+ angr/analyses/variable_recovery/engine_base.py,sha256=nTvTYiUiVXJKwDd9Va_KWv1EYLceIQJ6Fnhv4nTIIws,52404
379
379
  angr/analyses/variable_recovery/engine_vex.py,sha256=5Q2S1jAr7tALa0m0okqBHBe3cUePmJlnV1Grxos1xbo,21344
380
380
  angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
381
381
  angr/analyses/variable_recovery/variable_recovery.py,sha256=s5hwY9oOibhLxsJIePhYRmrX0mrDIi_zKkfNblwYyhE,22169
@@ -1380,13 +1380,13 @@ angr/utils/orderedset.py,sha256=aGfmLdOS77nzz2eoPpCqRICqzaAeBnuis1Et_I_hiZg,2047
1380
1380
  angr/utils/segment_list.py,sha256=DulfCDdNETMehseRey64FkjmORQvoSyVd9eRZ4sQ7tw,21065
1381
1381
  angr/utils/tagged_interval_map.py,sha256=rXKBuT14N23AAntpOKhZhmA-qqymnsvjpheFXoTRVRA,4417
1382
1382
  angr/utils/timing.py,sha256=n-YZ86g0ZWmLhsoNvcimRpKzewR5hmquLZe6fagxlBw,2224
1383
- angr/utils/types.py,sha256=5EDtrusFLf1fIcMz8fgJiPPsUhpEm0bf_oqZ_PSRje0,1836
1383
+ angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
1384
1384
  angr/utils/ssa/__init__.py,sha256=ZUPoK7Y1k-7vQkvoYUYPMdjfGh4oC6W3VbWzV_udZHg,14020
1385
1385
  angr/utils/ssa/tmp_uses_collector.py,sha256=rSpvMxBHzg-tmvhsfjn3iLyPEKzaZN-xpQrdslMq3J4,793
1386
1386
  angr/utils/ssa/vvar_uses_collector.py,sha256=O2aNZeM5DL8qatyhYuMhgbYGFp6Onm2yr9pKq1wRjA0,1347
1387
- angr-9.2.153.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1388
- angr-9.2.153.dist-info/METADATA,sha256=EiC80ame406IE0Q0DeYLVD3JFIgtsPhFSjq7A5yiI1g,4910
1389
- angr-9.2.153.dist-info/WHEEL,sha256=ubtdBb52I7avlL-IyqmK8P2nM9T3wuUps5uPIzW-UKg,108
1390
- angr-9.2.153.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1391
- angr-9.2.153.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1392
- angr-9.2.153.dist-info/RECORD,,
1387
+ angr-9.2.154.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1388
+ angr-9.2.154.dist-info/METADATA,sha256=gKPGiOE-SWX8tlHJviov6aieFXnhXqQJVr507GA_Krc,4910
1389
+ angr-9.2.154.dist-info/WHEEL,sha256=UYcdizaJxWvJ0jdUe_NvOp2jkxhFmm-Mxzcx5olQTC4,108
1390
+ angr-9.2.154.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1391
+ angr-9.2.154.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1392
+ angr-9.2.154.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.0)
2
+ Generator: setuptools (80.3.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-manylinux2014_x86_64
5
5