angr 9.2.121__py3-none-win_amd64.whl → 9.2.122__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of angr might be problematic. Click here for more details.

angr/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # pylint: disable=wrong-import-position
3
3
  from __future__ import annotations
4
4
 
5
- __version__ = "9.2.121"
5
+ __version__ = "9.2.122"
6
6
 
7
7
  if bytes is str:
8
8
  raise Exception(
@@ -8,7 +8,7 @@ from ailment import Stmt, Expr, Const
8
8
 
9
9
  from angr.procedures.stubs.format_parser import FormatParser, FormatSpecifier
10
10
  from angr.sim_type import SimTypeBottom, SimTypePointer, SimTypeChar, SimTypeInt, dereference_simtype
11
- from angr.calling_conventions import SimRegArg, SimStackArg, SimCC, SimStructArg
11
+ from angr.calling_conventions import SimRegArg, SimStackArg, SimCC, SimStructArg, SimComboArg
12
12
  from angr.knowledge_plugins.key_definitions.constants import OP_BEFORE
13
13
  from angr.analyses import Analysis, register_analysis
14
14
  from angr.analyses.s_reaching_definitions import SRDAView
@@ -129,7 +129,17 @@ class CallSiteMaker(Analysis):
129
129
  arg_locs = cc.arg_locs(callsite_ty)
130
130
 
131
131
  if arg_locs is not None:
132
+ expanded_arg_locs = []
132
133
  for arg_loc in arg_locs:
134
+ if isinstance(arg_loc, SimComboArg):
135
+ # a ComboArg spans across multiple locations (mostly stack but *in theory* can also be spanning
136
+ # across registers). most importantly, a ComboArg represents one variable, not multiple, but we
137
+ # have no way to know that until later down the pipeline.
138
+ expanded_arg_locs += arg_loc.locations
139
+ else:
140
+ expanded_arg_locs.append(arg_loc)
141
+
142
+ for arg_loc in expanded_arg_locs:
133
143
  if isinstance(arg_loc, SimRegArg):
134
144
  size = arg_loc.size
135
145
  offset = arg_loc.check_offset(cc.arch)
angr/lib/angr_native.dll CHANGED
Binary file
angr/sim_type.py CHANGED
@@ -1,4 +1,4 @@
1
- # pylint:disable=abstract-method,line-too-long,missing-class-docstring,wrong-import-position
1
+ # pylint:disable=abstract-method,line-too-long,missing-class-docstring,wrong-import-position,too-many-positional-arguments
2
2
  from __future__ import annotations
3
3
 
4
4
  import contextlib
@@ -19,7 +19,6 @@ from angr.sim_state import SimState
19
19
  from .misc.ux import deprecated
20
20
 
21
21
  if TYPE_CHECKING:
22
- import pycparser
23
22
  from angr.procedures.definitions import SimTypeCollection
24
23
  from angr.storage.memory_mixins import _Coerce
25
24
 
@@ -120,7 +119,8 @@ class SimType:
120
119
  if self._arch is None:
121
120
  raise ValueError("Can't tell my alignment without an arch!")
122
121
  if self.size is None:
123
- raise AngrTypeError("Cannot compute the alignment of a type with no size")
122
+ l.debug("The size of the type %r is unknown; assuming word size of the arch.", self)
123
+ return self._arch.bytes
124
124
  return self.size // self._arch.byte_width
125
125
 
126
126
  def with_arch(self, arch: Arch | None):
@@ -214,7 +214,9 @@ class TypeRef(SimType):
214
214
  self.type = self.type.with_arch(arch)
215
215
  return self
216
216
 
217
- def c_repr(self, name=None, full=0, memo=None, indent=0):
217
+ def c_repr(
218
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
219
+ ): # pylint: disable=unused-argument
218
220
  if not full:
219
221
  if name is not None:
220
222
  return f"{self.name} {name}"
@@ -265,7 +267,9 @@ class SimTypeBottom(SimType):
265
267
  def __repr__(self):
266
268
  return self.label or "BOT"
267
269
 
268
- def c_repr(self, name=None, full=0, memo=None, indent=0):
270
+ def c_repr(
271
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
272
+ ): # pylint: disable=unused-argument
269
273
  if name is None:
270
274
  return "int"
271
275
  return f'{"int" if self.label is None else self.label} {name}'
@@ -408,7 +412,9 @@ class SimTypeInt(SimTypeReg):
408
412
  super().__init__(None, label=label)
409
413
  self.signed = signed
410
414
 
411
- def c_repr(self, name=None, full=0, memo=None, indent=0):
415
+ def c_repr(
416
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
417
+ ): # pylint: disable=unused-argument
412
418
  out = self._base_name
413
419
  if not self.signed:
414
420
  out = "unsigned " + out
@@ -736,7 +742,9 @@ class SimTypePointer(SimTypeReg):
736
742
  def __repr__(self):
737
743
  return f"{self.pts_to}*"
738
744
 
739
- def c_repr(self, name=None, full=0, memo=None, indent=0):
745
+ def c_repr(
746
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
747
+ ): # pylint: disable=unused-argument
740
748
  # if pts_to is SimTypeBottom, we return a void*
741
749
  if isinstance(self.pts_to, SimTypeBottom):
742
750
  out = "void*"
@@ -803,7 +811,9 @@ class SimTypeReference(SimTypeReg):
803
811
  def __repr__(self):
804
812
  return f"{self.refs}&"
805
813
 
806
- def c_repr(self, name=None, full=0, memo=None, indent=0):
814
+ def c_repr(
815
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
816
+ ): # pylint: disable=unused-argument
807
817
  name = "&" if name is None else f"&{name}"
808
818
  return self.refs.c_repr(name, full, memo, indent)
809
819
 
@@ -869,7 +879,9 @@ class SimTypeArray(SimType):
869
879
  def __repr__(self):
870
880
  return "{}[{}]".format(self.elem_type, "" if self.length is None else self.length)
871
881
 
872
- def c_repr(self, name=None, full=0, memo=None, indent=0):
882
+ def c_repr(
883
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
884
+ ): # pylint: disable=unused-argument
873
885
  if name is None:
874
886
  return repr(self)
875
887
 
@@ -958,7 +970,9 @@ class SimTypeString(NamedTypeMixin, SimType):
958
970
  def __repr__(self):
959
971
  return "string_t"
960
972
 
961
- def c_repr(self, name=None, full=0, memo=None, indent=0):
973
+ def c_repr(
974
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
975
+ ): # pylint: disable=unused-argument
962
976
  if name is None:
963
977
  return repr(self)
964
978
 
@@ -1034,7 +1048,9 @@ class SimTypeWString(NamedTypeMixin, SimType):
1034
1048
  def __repr__(self):
1035
1049
  return "wstring_t"
1036
1050
 
1037
- def c_repr(self, name=None, full=0, memo=None, indent=0):
1051
+ def c_repr(
1052
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
1053
+ ): # pylint: disable=unused-argument
1038
1054
  if name is None:
1039
1055
  return repr(self)
1040
1056
 
@@ -1339,15 +1355,27 @@ class SimTypeDouble(SimTypeFloat):
1339
1355
 
1340
1356
 
1341
1357
  class SimStruct(NamedTypeMixin, SimType):
1342
- _fields = ("name", "fields")
1358
+ _fields = ("name", "fields", "anonymous")
1343
1359
 
1344
- def __init__(self, fields: dict[str, SimType] | OrderedDict[str, SimType], name=None, pack=False, align=None):
1360
+ def __init__(
1361
+ self,
1362
+ fields: dict[str, SimType] | OrderedDict[str, SimType],
1363
+ name=None,
1364
+ pack=False,
1365
+ align=None,
1366
+ anonymous: bool = False,
1367
+ ):
1345
1368
  super().__init__(None, name="<anon>" if name is None else name)
1346
1369
 
1347
1370
  self._pack = pack
1348
1371
  self._align = align
1372
+ self.anonymous = anonymous
1349
1373
  self.fields: OrderedDict[str, SimType] = OrderedDict(fields)
1350
1374
 
1375
+ # FIXME: Hack for supporting win32 struct definitions
1376
+ if self.name == "_Anonymous_e__Struct":
1377
+ self.anonymous = True
1378
+
1351
1379
  self._arch_memo = {}
1352
1380
 
1353
1381
  @property
@@ -1363,7 +1391,7 @@ class SimStruct(NamedTypeMixin, SimType):
1363
1391
  offset_so_far = 0
1364
1392
  for name, ty in self.fields.items():
1365
1393
  if ty.size is None:
1366
- l.warning(
1394
+ l.debug(
1367
1395
  "Found a bottom field in struct %s. Ignore and increment the offset using the default "
1368
1396
  "element size.",
1369
1397
  self.name,
@@ -1418,7 +1446,9 @@ class SimStruct(NamedTypeMixin, SimType):
1418
1446
  def __repr__(self):
1419
1447
  return f"struct {self.name}"
1420
1448
 
1421
- def c_repr(self, name=None, full=0, memo=None, indent=0):
1449
+ def c_repr(
1450
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
1451
+ ): # pylint: disable=unused-argument
1422
1452
  if not full or (memo is not None and self in memo):
1423
1453
  return super().c_repr(name, full, memo, indent)
1424
1454
 
@@ -1632,7 +1662,9 @@ class SimUnion(NamedTypeMixin, SimType):
1632
1662
  self.name, "\n\t".join(f"{name} {ty!s};" for name, ty in self.members.items())
1633
1663
  )
1634
1664
 
1635
- def c_repr(self, name=None, full=0, memo=None, indent=0):
1665
+ def c_repr(
1666
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
1667
+ ): # pylint: disable=unused-argument
1636
1668
  if not full or (memo is not None and self in memo):
1637
1669
  return super().c_repr(name, full, memo, indent)
1638
1670
 
@@ -1875,7 +1907,9 @@ class SimTypeRef(SimType):
1875
1907
  def set_size(self, v: int):
1876
1908
  self._size = v
1877
1909
 
1878
- def c_repr(self, name=None, full=0, memo=None, indent=0) -> str:
1910
+ def c_repr(
1911
+ self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
1912
+ ) -> str: # pylint: disable=unused-argument
1879
1913
  prefix = "unknown"
1880
1914
  if self.original_type is SimStruct:
1881
1915
  prefix = "struct"
@@ -3537,7 +3571,8 @@ def dereference_simtype(
3537
3571
  return memo[t.name]
3538
3572
 
3539
3573
  real_type = t.copy()
3540
- memo[t.name] = real_type
3574
+ if not t.anonymous:
3575
+ memo[t.name] = real_type
3541
3576
  fields = OrderedDict((k, dereference_simtype(v, type_collections, memo=memo)) for k, v in t.fields.items())
3542
3577
  real_type.fields = fields
3543
3578
  elif isinstance(t, SimTypePointer):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: angr
3
- Version: 9.2.121
3
+ Version: 9.2.122
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
  Home-page: https://github.com/angr/angr
6
6
  License: BSD-2-Clause
@@ -15,13 +15,13 @@ Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: CppHeaderParser
17
17
  Requires-Dist: GitPython
18
- Requires-Dist: ailment==9.2.121
19
- Requires-Dist: archinfo==9.2.121
18
+ Requires-Dist: ailment==9.2.122
19
+ Requires-Dist: archinfo==9.2.122
20
20
  Requires-Dist: cachetools
21
21
  Requires-Dist: capstone==5.0.3
22
22
  Requires-Dist: cffi>=1.14.0
23
- Requires-Dist: claripy==9.2.121
24
- Requires-Dist: cle==9.2.121
23
+ Requires-Dist: claripy==9.2.122
24
+ Requires-Dist: cle==9.2.122
25
25
  Requires-Dist: itanium-demangler
26
26
  Requires-Dist: mulpyplexer
27
27
  Requires-Dist: nampa
@@ -30,7 +30,7 @@ Requires-Dist: protobuf>=5.28.2
30
30
  Requires-Dist: psutil
31
31
  Requires-Dist: pycparser>=2.18
32
32
  Requires-Dist: pyformlang
33
- Requires-Dist: pyvex==9.2.121
33
+ Requires-Dist: pyvex==9.2.122
34
34
  Requires-Dist: rich>=13.1.0
35
35
  Requires-Dist: sortedcontainers
36
36
  Requires-Dist: sympy
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=sn4JB3PDK88kv9Zl63UWZmIIgadNc2VcTyw9WUdjML8,9153
1
+ angr/__init__.py,sha256=FvLCWVY2NPQsA6BMek9XDtGgFw8K_KwQEOhf__rdJpk,9153
2
2
  angr/__main__.py,sha256=XeawhF6Cco9eWcfMTDWzYYggLB3qjnQ87IIeFOplaHM,2873
3
3
  angr/annocfg.py,sha256=5fiS9TPt5r1_8g_qSfD2XkETlBdm5MTClBIQKqhm040,10624
4
4
  angr/blade.py,sha256=GpbEumxMsb_6qD7TbtfZuW2CMzV7W1iwqYzQWYlXnxM,15394
@@ -20,7 +20,7 @@ angr/sim_options.py,sha256=tfl57MFECmA7uvMMtQrRRbpG8g_A9jKOzwY6nApTW6Y,17782
20
20
  angr/sim_procedure.py,sha256=hvd180bGmjB2skK93gVfy_W9fNUtI5pAD3upGqgSUJ8,26221
21
21
  angr/sim_state.py,sha256=XokLIEd7Cxod86BvVuhJEA8wUxYa_cSGn7M9BIMmbNQ,33305
22
22
  angr/sim_state_options.py,sha256=OBsH55qwd1FacVL3Uabqjgos-x5BhpdONSnhxkueRwI,12468
23
- angr/sim_type.py,sha256=xrZiNC7uog6ncDKavL4qkh7iUukE5sVEYI5yKG7b6ME,131053
23
+ angr/sim_type.py,sha256=RcIDyMjQ0ochnKDt_Tflbwmw8exyj86R-KimR3tDGGE,132236
24
24
  angr/sim_variable.py,sha256=oN0EIj8Y7vpdZgX0Hp8OMix40EvAvFBmNSH2KkgtAPM,16404
25
25
  angr/slicer.py,sha256=74ujgNMKcEIHM8lqal69Cbls07yCxpxvi-jUYeScfaU,10668
26
26
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
@@ -97,7 +97,7 @@ angr/analyses/decompiler/ailgraph_walker.py,sha256=m71HCthOr9J8PZoMxJzCPskay8yfC
97
97
  angr/analyses/decompiler/block_io_finder.py,sha256=xMwG8Bi69OGNYVs0U0F4yxM8kEsnyrsMrf0gEr8dOEw,10923
98
98
  angr/analyses/decompiler/block_similarity.py,sha256=ISMoOm-TGJ_1wD2i_4m8IYTletgnP66gReQESJnfvS0,6873
99
99
  angr/analyses/decompiler/block_simplifier.py,sha256=_WYyfFW8bJ_-RkrudJIlDdHh9fc6_aHkuwzW9gylY-k,13922
100
- angr/analyses/decompiler/callsite_maker.py,sha256=M-1WkgKk7VfMhiU0aZCkhIsEPE51tXCgVNxj1Ped6Ns,17903
100
+ angr/analyses/decompiler/callsite_maker.py,sha256=ulPOsw1oVSUXGzfR3NKn1CbmR7EcYNb0WAfm69Z8Rzg,18496
101
101
  angr/analyses/decompiler/clinic.py,sha256=lA0CGxxZPc0WfRaMLkZ7zwhzG8plC6yo6fA5Pq8_7Ak,103436
102
102
  angr/analyses/decompiler/condition_processor.py,sha256=pNr-BpmO_Rxma5ETbnlQnjwAWQuriiWXJEKGj5MyLQU,50875
103
103
  angr/analyses/decompiler/decompilation_cache.py,sha256=ynqveXnf_sULwFmQFr4rVDlRHoniICt8iyhC0Ds0mDU,1163
@@ -528,7 +528,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyC
528
528
  angr/knowledge_plugins/xrefs/xref.py,sha256=ROo_kAEKwB51whVYcGtTV0QRtYmQZV8nEoEtbQWyC9U,4883
529
529
  angr/knowledge_plugins/xrefs/xref_manager.py,sha256=Yb88z3L8Y26TfGeRHdsGWQlT9f6oWntjEg6s-kcVtUQ,4040
530
530
  angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
531
- angr/lib/angr_native.dll,sha256=n7eGPgnYcofuJxYmL1v92T2uQL7HuZVfglJnba779i0,19257344
531
+ angr/lib/angr_native.dll,sha256=DETlZz3GV_3dvAvL3MBj5xb4HXcWYF4ai8uvjj117n0,19257344
532
532
  angr/misc/__init__.py,sha256=ZPHXbrIdsfe_qdmq8CnXuS_bBWOy4MDT2NjwUnPgHZc,355
533
533
  angr/misc/ansi.py,sha256=nPJHC0SKfqasMQZ0LxdmmIYojjmk4nr5jI6FrzoTwS0,811
534
534
  angr/misc/autoimport.py,sha256=iZagpuPwZWczUTYIqs-JkDMQjftMqc_cchcm7OBFiEg,3450
@@ -1334,9 +1334,9 @@ angr/utils/timing.py,sha256=ELuRPzdRSHzOATgtAzTFByMlVr021ypMrsvtpopreLg,1481
1334
1334
  angr/utils/ssa/__init__.py,sha256=Z7yXY0xe4X-T4bfdK0YtL9ZFnYF-JhQuJ16ZW-wpSZI,7886
1335
1335
  angr/utils/ssa/tmp_uses_collector.py,sha256=rSpvMxBHzg-tmvhsfjn3iLyPEKzaZN-xpQrdslMq3J4,793
1336
1336
  angr/utils/ssa/vvar_uses_collector.py,sha256=8gfAWdRMz73Deh-ZshDM3GPAot9Lf-rHzCiaCil0hlE,1342
1337
- angr-9.2.121.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1338
- angr-9.2.121.dist-info/METADATA,sha256=DdEMx5H0Oc4PIKcgRNN6CZoviZOpeq6y-krrFm1qgH4,4830
1339
- angr-9.2.121.dist-info/WHEEL,sha256=37evyuMEjsyAveQX40iT43Lz7iWGYiYX5J9a6lEUCNg,97
1340
- angr-9.2.121.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1341
- angr-9.2.121.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1342
- angr-9.2.121.dist-info/RECORD,,
1337
+ angr-9.2.122.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1338
+ angr-9.2.122.dist-info/METADATA,sha256=DWONvK3kM7LVW6pLjbuyxr2eB1P6ZlNdgAEm4afhXK4,4830
1339
+ angr-9.2.122.dist-info/WHEEL,sha256=37evyuMEjsyAveQX40iT43Lz7iWGYiYX5J9a6lEUCNg,97
1340
+ angr-9.2.122.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1341
+ angr-9.2.122.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1342
+ angr-9.2.122.dist-info/RECORD,,
File without changes