angr 9.2.153__py3-none-win_amd64.whl → 9.2.154__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/analysis.py +3 -3
- angr/analyses/calling_convention/fact_collector.py +8 -14
- angr/analyses/cfg/cfg_fast.py +2 -2
- angr/analyses/decompiler/callsite_maker.py +17 -17
- angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py +210 -1
- angr/analyses/decompiler/clinic.py +6 -12
- angr/analyses/decompiler/decompilation_cache.py +1 -1
- angr/analyses/decompiler/ssailification/ssailification.py +1 -1
- angr/analyses/decompiler/structured_codegen/c.py +15 -15
- angr/analyses/decompiler/structuring/phoenix.py +28 -0
- angr/analyses/decompiler/structuring/structurer_nodes.py +11 -0
- angr/analyses/reaching_definitions/function_handler.py +13 -19
- angr/analyses/stack_pointer_tracker.py +7 -1
- angr/analyses/variable_recovery/engine_ail.py +14 -25
- angr/analyses/variable_recovery/engine_base.py +1 -1
- angr/lib/angr_native.dll +0 -0
- angr/sim_type.py +11 -70
- angr/utils/types.py +93 -1
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/METADATA +6 -6
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/RECORD +25 -25
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/WHEEL +1 -1
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/entry_points.txt +0 -0
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/licenses/LICENSE +0 -0
- {angr-9.2.153.dist-info → angr-9.2.154.dist-info}/top_level.txt +0 -0
|
@@ -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
|
|
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
|
|
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
|
-
|
|
403
|
-
|
|
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(
|
|
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.
|
|
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 =
|
|
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 =
|
|
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
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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:
|
angr/lib/angr_native.dll
CHANGED
|
Binary file
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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.
|
|
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.
|
|
21
|
-
Requires-Dist: archinfo==9.2.
|
|
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.
|
|
26
|
-
Requires-Dist: cle==9.2.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
110
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
378
|
-
angr/analyses/variable_recovery/engine_base.py,sha256=
|
|
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
|
|
@@ -572,7 +572,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyC
|
|
|
572
572
|
angr/knowledge_plugins/xrefs/xref.py,sha256=U2H1rfffp5EXoh0awlGxMBxA4K5MIwl3CXjV3Uih3tA,4856
|
|
573
573
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=1n373rtV91xicAfSUresRigsZ6qCBhPOaJKrN_SW3QY,4157
|
|
574
574
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
|
|
575
|
-
angr/lib/angr_native.dll,sha256=
|
|
575
|
+
angr/lib/angr_native.dll,sha256=WMP8N20efvUlcCvuHcWig77Yy54GxEAdgrIa0x2Es1c,786432
|
|
576
576
|
angr/misc/__init__.py,sha256=FoUwjk1DhqlIsr2sBN0MlR8MnSOGQv9QJhxmq32RYuA,355
|
|
577
577
|
angr/misc/ansi.py,sha256=nPJHC0SKfqasMQZ0LxdmmIYojjmk4nr5jI6FrzoTwS0,811
|
|
578
578
|
angr/misc/autoimport.py,sha256=iZagpuPwZWczUTYIqs-JkDMQjftMqc_cchcm7OBFiEg,3450
|
|
@@ -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=
|
|
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.
|
|
1388
|
-
angr-9.2.
|
|
1389
|
-
angr-9.2.
|
|
1390
|
-
angr-9.2.
|
|
1391
|
-
angr-9.2.
|
|
1392
|
-
angr-9.2.
|
|
1387
|
+
angr-9.2.154.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
|
|
1388
|
+
angr-9.2.154.dist-info/METADATA,sha256=RT0xn8p_s0XNCBwHuHMdb1IQ9ivocdZezc6MSHdqAAw,5033
|
|
1389
|
+
angr-9.2.154.dist-info/WHEEL,sha256=NksL3MEVxGzZIk3JFq-Onsaky3opSuETMvlFyzpKtnA,97
|
|
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,,
|