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 +1 -1
- angr/analyses/decompiler/callsite_maker.py +11 -1
- angr/lib/angr_native.dll +0 -0
- angr/sim_type.py +53 -18
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/METADATA +6 -6
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/RECORD +10 -10
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/LICENSE +0 -0
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/WHEEL +0 -0
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/entry_points.txt +0 -0
- {angr-9.2.121.dist-info → angr-9.2.122.dist-info}/top_level.txt +0 -0
angr/__init__.py
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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__(
|
|
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.
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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.
|
|
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.
|
|
19
|
-
Requires-Dist: archinfo==9.2.
|
|
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.
|
|
24
|
-
Requires-Dist: cle==9.2.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
1338
|
-
angr-9.2.
|
|
1339
|
-
angr-9.2.
|
|
1340
|
-
angr-9.2.
|
|
1341
|
-
angr-9.2.
|
|
1342
|
-
angr-9.2.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|