angr 9.2.105__py3-none-manylinux2014_aarch64.whl → 9.2.107__py3-none-manylinux2014_aarch64.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
@@ -1,7 +1,7 @@
1
1
  # pylint: disable=wildcard-import
2
2
  # pylint: disable=wrong-import-position
3
3
 
4
- __version__ = "9.2.105"
4
+ __version__ = "9.2.107"
5
5
 
6
6
  if bytes is str:
7
7
  raise Exception(
@@ -5,7 +5,6 @@ import logging
5
5
  import enum
6
6
  from dataclasses import dataclass
7
7
  from typing import Any, NamedTuple, TYPE_CHECKING
8
-
9
8
  from collections.abc import Iterable
10
9
 
11
10
  import networkx
angr/block.py CHANGED
@@ -419,7 +419,7 @@ class Block(Serializable):
419
419
  return BlockNode(self.addr, self.size, bytestr=self.bytes, thumb=self.thumb)
420
420
 
421
421
  @property
422
- def bytes(self):
422
+ def bytes(self) -> bytes:
423
423
  if self._bytes is None:
424
424
  addr = self.addr
425
425
  if self.thumb:
@@ -895,10 +895,6 @@ class PcodeBasicBlockLifter:
895
895
  last_decode_addr = irsb.addr
896
896
  last_imark_idx = 0
897
897
  for op_idx, op in enumerate(irsb._ops):
898
- # OpCode space begins with control ops ending with RETURN. Quickly filter non-control instructions.
899
- if op.opcode > pypcode.OpCode.RETURN:
900
- continue
901
-
902
898
  if op.opcode == pypcode.OpCode.IMARK:
903
899
  irsb._instruction_addresses.extend([vn.offset for vn in op.inputs])
904
900
  last_decode_addr = op.inputs[0].offset
@@ -1,9 +1,13 @@
1
+ from typing import TYPE_CHECKING
1
2
  import logging
2
3
 
3
4
  import claripy
4
5
 
5
6
  from archinfo.arch_soot import ArchSoot
6
7
 
8
+ if TYPE_CHECKING:
9
+ from angr import SimState
10
+
7
11
 
8
12
  l = logging.getLogger(name=__name__)
9
13
 
@@ -35,21 +39,21 @@ class SimSuccessors:
35
39
  https://docs.angr.io/core-concepts/simulation#simsuccessors
36
40
  """
37
41
 
38
- def __init__(self, addr, initial_state):
42
+ def __init__(self, addr: int | None, initial_state):
39
43
  self.addr = addr
40
- self.initial_state = initial_state
44
+ self.initial_state: "SimState" = initial_state
41
45
 
42
- self.successors = []
43
- self.all_successors = []
44
- self.flat_successors = []
45
- self.unsat_successors = []
46
- self.unconstrained_successors = []
46
+ self.successors: list["SimState"] = []
47
+ self.all_successors: list["SimState"] = []
48
+ self.flat_successors: list["SimState"] = []
49
+ self.unsat_successors: list["SimState"] = []
50
+ self.unconstrained_successors: list["SimState"] = []
47
51
 
48
52
  # the engine that should process or did process this request
49
53
  self.engine = None
50
54
  self.processed = False
51
55
  self.description = "SimSuccessors"
52
- self.sort = None
56
+ self.sort: str | None = None
53
57
  self.artifacts = {}
54
58
 
55
59
  @classmethod
@@ -1,7 +1,9 @@
1
1
  # pylint:disable=no-member
2
+ from __future__ import annotations
3
+
2
4
  import pickle
3
5
  import logging
4
- from typing import Optional, DefaultDict, TYPE_CHECKING
6
+ from typing import TYPE_CHECKING
5
7
  from collections.abc import Callable
6
8
  from collections import defaultdict
7
9
  import bisect
@@ -75,7 +77,7 @@ class CFGModel(Serializable):
75
77
  self.insn_addr_to_memory_data: dict[int, MemoryData] = {}
76
78
 
77
79
  # Lists of CFGNodes indexed by the address of each block. Don't serialize
78
- self._nodes_by_addr: DefaultDict[int, list[CFGNode]] = defaultdict(list)
80
+ self._nodes_by_addr: defaultdict[int, list[CFGNode]] = defaultdict(list)
79
81
  # CFGNodes dict indexed by block ID. Don't serialize
80
82
  self._nodes: dict[int, CFGNode] = {}
81
83
  # addresses of CFGNodes to speed up get_any_node(..., anyaddr=True). Don't serialize
@@ -447,7 +449,7 @@ class CFGModel(Serializable):
447
449
  successors.append(suc)
448
450
  return successors
449
451
 
450
- def get_successors_and_jumpkinds(self, node, excluding_fakeret=True):
452
+ def get_successors_and_jumpkinds(self, node, excluding_fakeret=True) -> list[tuple[CFGNode, str]]:
451
453
  """
452
454
  Get a list of tuples where the first element is the successor of the CFG node and the second element is the
453
455
  jumpkind of the successor.
@@ -564,8 +566,8 @@ class CFGModel(Serializable):
564
566
  self,
565
567
  memory_data_addrs: list[int] | None = None,
566
568
  exec_mem_regions: list[tuple[int, int]] | None = None,
567
- xrefs: Optional["XRefManager"] = None,
568
- seg_list: Optional["SegmentList"] = None,
569
+ xrefs: XRefManager | None = None,
570
+ seg_list: SegmentList | None = None,
569
571
  data_type_guessing_handlers: list[Callable] | None = None,
570
572
  ) -> bool:
571
573
  """
@@ -745,8 +747,8 @@ class CFGModel(Serializable):
745
747
  data_addr,
746
748
  max_size,
747
749
  content_holder=None,
748
- xrefs: Optional["XRefManager"] = None,
749
- seg_list: Optional["SegmentList"] = None,
750
+ xrefs: XRefManager | None = None,
751
+ seg_list: SegmentList | None = None,
750
752
  data_type_guessing_handlers: list[Callable] | None = None,
751
753
  extra_memory_regions: list[tuple[int, int]] | None = None,
752
754
  ):
@@ -775,7 +777,7 @@ class CFGModel(Serializable):
775
777
  irsb_addr, stmt_idx = None, None
776
778
  if xrefs is not None and seg_list is not None:
777
779
  try:
778
- ref: "XRef" = next(iter(xrefs.get_xrefs_by_dst(data_addr)))
780
+ ref: XRef = next(iter(xrefs.get_xrefs_by_dst(data_addr)))
779
781
  irsb_addr = ref.block_addr
780
782
  except StopIteration:
781
783
  pass
@@ -861,7 +863,7 @@ class CFGModel(Serializable):
861
863
  irsb_addr, stmt_idx = None, None
862
864
  if xrefs is not None and seg_list is not None:
863
865
  try:
864
- ref: "XRef" = next(iter(xrefs.get_xrefs_by_dst(data_addr)))
866
+ ref: XRef = next(iter(xrefs.get_xrefs_by_dst(data_addr)))
865
867
  irsb_addr = ref.block_addr
866
868
  stmt_idx = ref.stmt_idx
867
869
  except StopIteration:
@@ -966,8 +968,8 @@ class CFGModel(Serializable):
966
968
  self,
967
969
  addr: int,
968
970
  size: int = 1,
969
- kb: Optional["KnowledgeBase"] = None,
970
- ) -> set["Function"]:
971
+ kb: KnowledgeBase | None = None,
972
+ ) -> set[Function]:
971
973
  """
972
974
  Find all functions with nodes intersecting [addr, addr + size).
973
975
 
@@ -990,9 +992,7 @@ class CFGModel(Serializable):
990
992
  functions.add(func)
991
993
  return functions
992
994
 
993
- def find_function_for_reflow_into_addr(
994
- self, addr: int, kb: Optional["KnowledgeBase"] = None
995
- ) -> Optional["Function"]:
995
+ def find_function_for_reflow_into_addr(self, addr: int, kb: KnowledgeBase | None = None) -> Function | None:
996
996
  """
997
997
  Look for a function that flows into a new node at addr.
998
998
 
@@ -1019,7 +1019,7 @@ class CFGModel(Serializable):
1019
1019
 
1020
1020
  return None
1021
1021
 
1022
- def clear_region_for_reflow(self, addr: int, size: int = 1, kb: Optional["KnowledgeBase"] = None) -> None:
1022
+ def clear_region_for_reflow(self, addr: int, size: int = 1, kb: KnowledgeBase | None = None) -> None:
1023
1023
  """
1024
1024
  Remove nodes in the graph intersecting region [addr, addr + size).
1025
1025
 
@@ -1,6 +1,8 @@
1
+ from __future__ import annotations
2
+
1
3
  import traceback
2
4
  import logging
3
- from typing import TYPE_CHECKING, Union
5
+ from typing import TYPE_CHECKING
4
6
 
5
7
  from archinfo.arch_soot import SootAddressDescriptor
6
8
  import archinfo
@@ -11,12 +13,16 @@ from angr.serializable import Serializable
11
13
  from angr.protos import cfg_pb2
12
14
 
13
15
  if TYPE_CHECKING:
16
+ from angr.block import Block, SootBlock
14
17
  from .cfg_model import CFGModel
15
18
  import angr
16
19
 
17
20
  _l = logging.getLogger(__name__)
18
21
 
19
22
 
23
+ AddressType = int | SootAddressDescriptor
24
+
25
+
20
26
  class CFGNodeCreationFailure:
21
27
  """
22
28
  This class contains additional information for whenever creating a CFGNode failed. It includes a full traceback
@@ -87,13 +93,13 @@ class CFGNode(Serializable):
87
93
  __repr__.
88
94
  """
89
95
 
90
- self.addr = addr
96
+ self.addr: AddressType = addr
91
97
  self.size = size
92
98
  self.simprocedure_name = simprocedure_name
93
99
  self.no_ret = no_ret
94
- self._cfg_model: "CFGModel" = cfg
100
+ self._cfg_model: CFGModel = cfg
95
101
  self.function_address = function_address
96
- self.block_id: Union["angr.analyses.cfg.cfg_job_base.BlockID", int] = block_id
102
+ self.block_id: angr.analyses.cfg.cfg_job_base.BlockID | int = block_id
97
103
  self.thumb = thumb
98
104
  self.byte_string: bytes | None = byte_string
99
105
 
@@ -353,7 +359,7 @@ class CFGNode(Serializable):
353
359
  return BlockNode(self.addr, self.size, thumb=self.thumb)
354
360
 
355
361
  @property
356
- def block(self):
362
+ def block(self) -> Block | SootBlock | None:
357
363
  if self.is_simprocedure or self.is_syscall:
358
364
  return None
359
365
  project = self._cfg_model.project # everything in angr is connected with everything...
@@ -743,7 +743,7 @@ class Function(Serializable):
743
743
 
744
744
  return name
745
745
 
746
- def _get_initial_binary_name(self):
746
+ def _get_initial_binary_name(self) -> str | None:
747
747
  """
748
748
  Determine the name of the binary where this function is.
749
749
 
@@ -33,7 +33,7 @@ class FunctionParser:
33
33
  obj.is_simprocedure = function.is_simprocedure
34
34
  obj.returning = function.returning
35
35
  obj.alignment = function.alignment
36
- obj.binary_name = function.binary_name
36
+ obj.binary_name = function.binary_name or ""
37
37
  obj.normalized = function.normalized
38
38
 
39
39
  # signature matched?
@@ -105,7 +105,7 @@ class FunctionParser:
105
105
  is_simprocedure=cmsg.is_simprocedure,
106
106
  returning=cmsg.returning,
107
107
  alignment=cmsg.alignment,
108
- binary_name=cmsg.binary_name,
108
+ binary_name=None if not cmsg.binary_name else cmsg.binary_name,
109
109
  )
110
110
  obj._project = project
111
111
  obj.normalized = cmsg.normalized
@@ -253,18 +253,16 @@ class FormatString:
253
253
  max_sym_bytes = fmt_spec.length_spec
254
254
 
255
255
  # TODO: look for limits on other characters which scanf is sensitive to, '\x00', '\x20'
256
- _, _, match_indices = region.find(
257
- position, self.parser.state.solver.BVV(b"\n"), max_str_len, max_symbolic_bytes=max_sym_bytes
256
+ result, _, _ = region.find(
257
+ position,
258
+ self.parser.state.solver.BVV(b"\n"),
259
+ max_str_len,
260
+ max_symbolic_bytes=max_sym_bytes,
261
+ default=self.parser.state.solver.BVV(position + max_str_len, 64),
258
262
  )
259
263
 
260
- if not match_indices:
261
- # if no newline is found, mm is position + max_strlen
262
- mm = position + max_str_len
263
- # we're just going to concretize the length, load will do this anyways
264
- length = self.parser.state.solver.max_int(mm - position)
265
- else:
266
- # a newline is found, or a max length is specified with the specifier
267
- length = max(match_indices)
264
+ # concretize the length
265
+ length = self.parser.state.solver.max_int(result - position)
268
266
  src_str = region.load(position, length)
269
267
 
270
268
  # TODO all of these should be delimiters we search for above
angr/sim_manager.py CHANGED
@@ -1,9 +1,11 @@
1
+ from __future__ import annotations
2
+
1
3
  import sys
2
4
  import itertools
3
5
  import types
4
6
  from collections import defaultdict
5
- from typing import DefaultDict
6
7
  import logging
8
+ from types import TracebackType
7
9
 
8
10
  import claripy
9
11
  import mulpyplexer
@@ -91,7 +93,7 @@ class SimulationManager:
91
93
 
92
94
  if stashes is None:
93
95
  stashes = self._create_integral_stashes()
94
- self._stashes: DefaultDict[str, list["SimState"]] = stashes
96
+ self._stashes: defaultdict[str, list[SimState]] = stashes
95
97
  self._hierarchy = StateHierarchy() if hierarchy is None else hierarchy
96
98
  self._save_unsat = save_unsat
97
99
  self._auto_drop = {
@@ -189,11 +191,11 @@ class SimulationManager:
189
191
  )
190
192
 
191
193
  @property
192
- def errored(self):
194
+ def errored(self) -> list[ErrorRecord]:
193
195
  return self._errored
194
196
 
195
197
  @property
196
- def stashes(self) -> DefaultDict[str, list["SimState"]]:
198
+ def stashes(self) -> defaultdict[str, list[SimState]]:
197
199
  return self._stashes
198
200
 
199
201
  def mulpyplex(self, *stashes):
@@ -394,7 +396,7 @@ class SimulationManager:
394
396
 
395
397
  :param stash: The name of the stash to step (default: 'active')
396
398
  :param target_stash: The name of the stash to put the results in (default: same as ``stash``)
397
- :param error_list: The list to put ErroredState objects in (default: ``self.errored``)
399
+ :param error_list: The list to put ErrorRecord objects in (default: ``self.errored``)
398
400
  :param selector_func: If provided, should be a function that takes a state and returns a
399
401
  boolean. If True, the state will be stepped. Otherwise, it will be
400
402
  kept as-is.
@@ -894,7 +896,7 @@ class SimulationManager:
894
896
  # ...
895
897
  #
896
898
 
897
- def _create_integral_stashes(self) -> DefaultDict[str, list["SimState"]]:
899
+ def _create_integral_stashes(self) -> defaultdict[str, list[SimState]]:
898
900
  stashes = defaultdict(list)
899
901
  stashes.update({name: [] for name in self._integral_stashes})
900
902
  return stashes
@@ -945,9 +947,9 @@ class ErrorRecord:
945
947
  """
946
948
 
947
949
  def __init__(self, state, error, traceback):
948
- self.state = state
949
- self.error = error
950
- self.traceback = traceback
950
+ self.state: SimState = state
951
+ self.error: Exception = error
952
+ self.traceback: TracebackType = traceback
951
953
 
952
954
  def debug(self):
953
955
  """
@@ -1,3 +1,4 @@
1
+ from collections.abc import Reversible
1
2
  import operator
2
3
  import logging
3
4
  import itertools
@@ -40,7 +41,7 @@ class SimStateHistory(SimStatePlugin):
40
41
  self.jump_source = None if clone is None else clone.jump_source
41
42
  self.jump_avoidable = None if clone is None else clone.jump_avoidable
42
43
  self.jump_guard: BV | None = None if clone is None else clone.jump_guard
43
- self.jumpkind = None if clone is None else clone.jumpkind
44
+ self.jumpkind: str | None = None if clone is None else clone.jumpkind
44
45
 
45
46
  # the execution log for this history
46
47
  self.recent_events = [] if clone is None else list(clone.recent_events)
@@ -358,19 +359,19 @@ class SimStateHistory(SimStatePlugin):
358
359
  yield from self.parent.lineage
359
360
 
360
361
  @property
361
- def events(self):
362
+ def events(self) -> Reversible["SimEvent"]:
362
363
  return LambdaIterIter(self, operator.attrgetter("recent_events"))
363
364
 
364
365
  @property
365
- def actions(self):
366
+ def actions(self) -> Reversible["SimAction"]:
366
367
  return LambdaIterIter(self, operator.attrgetter("recent_actions"))
367
368
 
368
369
  @property
369
- def jumpkinds(self):
370
+ def jumpkinds(self) -> Reversible[str]:
370
371
  return LambdaAttrIter(self, operator.attrgetter("jumpkind"))
371
372
 
372
373
  @property
373
- def jump_guards(self):
374
+ def jump_guards(self) -> Reversible[claripy.ast.Bool]:
374
375
  return LambdaAttrIter(self, operator.attrgetter("jump_guard"))
375
376
 
376
377
  @property
@@ -382,15 +383,15 @@ class SimStateHistory(SimStatePlugin):
382
383
  return LambdaAttrIter(self, operator.attrgetter("jump_source"))
383
384
 
384
385
  @property
385
- def descriptions(self):
386
+ def descriptions(self) -> Reversible[str]:
386
387
  return LambdaAttrIter(self, operator.attrgetter("recent_description"))
387
388
 
388
389
  @property
389
- def bbl_addrs(self):
390
+ def bbl_addrs(self) -> Reversible[int]:
390
391
  return LambdaIterIter(self, operator.attrgetter("recent_bbl_addrs"))
391
392
 
392
393
  @property
393
- def ins_addrs(self):
394
+ def ins_addrs(self) -> Reversible[int]:
394
395
  return LambdaIterIter(self, operator.attrgetter("recent_ins_addrs"))
395
396
 
396
397
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: angr
3
- Version: 9.2.105
3
+ Version: 9.2.107
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.105
19
- Requires-Dist: archinfo ==9.2.105
18
+ Requires-Dist: ailment ==9.2.107
19
+ Requires-Dist: archinfo ==9.2.107
20
20
  Requires-Dist: cachetools
21
21
  Requires-Dist: capstone ==5.0.0.post1
22
22
  Requires-Dist: cffi >=1.14.0
23
- Requires-Dist: claripy ==9.2.105
24
- Requires-Dist: cle ==9.2.105
23
+ Requires-Dist: claripy ==9.2.107
24
+ Requires-Dist: cle ==9.2.107
25
25
  Requires-Dist: dpkt
26
26
  Requires-Dist: itanium-demangler
27
27
  Requires-Dist: mulpyplexer
@@ -31,7 +31,7 @@ Requires-Dist: protobuf >=3.19.0
31
31
  Requires-Dist: psutil
32
32
  Requires-Dist: pycparser >=2.18
33
33
  Requires-Dist: pyformlang
34
- Requires-Dist: pyvex ==9.2.105
34
+ Requires-Dist: pyvex ==9.2.107
35
35
  Requires-Dist: rich >=13.1.0
36
36
  Requires-Dist: rpyc
37
37
  Requires-Dist: sortedcontainers
@@ -47,10 +47,10 @@ Requires-Dist: myst-parser ; extra == 'docs'
47
47
  Requires-Dist: sphinx ; extra == 'docs'
48
48
  Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
49
49
  Provides-Extra: pcode
50
- Requires-Dist: pypcode ~=2.1.0 ; extra == 'pcode'
50
+ Requires-Dist: pypcode ~=3.0 ; extra == 'pcode'
51
51
  Provides-Extra: testing
52
52
  Requires-Dist: keystone-engine ; extra == 'testing'
53
- Requires-Dist: pypcode ~=2.1.0 ; extra == 'testing'
53
+ Requires-Dist: pypcode ~=3.0 ; extra == 'testing'
54
54
  Requires-Dist: pytest ; extra == 'testing'
55
55
  Requires-Dist: pytest-split ; extra == 'testing'
56
56
  Requires-Dist: pytest-xdist ; extra == 'testing'
@@ -1,8 +1,8 @@
1
- angr/__init__.py,sha256=RfxYMnkIBUfOzgBPLlO_MLM2oGBEzyrkj1Egm6rRUqE,3993
1
+ angr/__init__.py,sha256=R0l86rWUgejEZSvJjbSX_yUG3S1XbpboqEWc5DN0fcg,3993
2
2
  angr/__main__.py,sha256=kaO56Te6h73SM94BVtASF00q5QbBbC3eBs9poVc9sVI,1887
3
3
  angr/annocfg.py,sha256=1tnBfxgLJh9I6Brm1JDdsWLHGmCQYdD6PTC_bFTOMrg,10775
4
4
  angr/blade.py,sha256=B8QXVQ93jz1YCIlb-dZLeBqYmVFdMXI5GleP1Wnxjrw,15519
5
- angr/block.py,sha256=uinLN30NbaVUcFJNDJaeWTKJiNwVFMte2vaGhYlkD-8,14752
5
+ angr/block.py,sha256=tHxXlBBFrPZbp5phhTn63K55khjDIIUSNJgFn4lPd9I,14761
6
6
  angr/callable.py,sha256=-E9HelavtRY1xPAxCVXl120H8Rb7Myd2IcrXtWZFAOU,6034
7
7
  angr/calling_conventions.py,sha256=JjgIx0PHOfP9O8fcLjaKFEnznDfgmcf8ezMS6s54Me8,91288
8
8
  angr/code_location.py,sha256=IudWSR-gJzq_EeVw-jEZvQumVYwUUDWXR1vmLAkS-SQ,5432
@@ -15,7 +15,7 @@ angr/project.py,sha256=-1VjiXyaqokF_J4fJ_ZWB3alko7dkx0JBV9AK6dZvcM,37254
15
15
  angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
16
16
  angr/serializable.py,sha256=6cljvzAqFwsLqFu9ouCno7hMpgstha5-8C7RyWNCRXc,1502
17
17
  angr/service.py,sha256=9R50bFaCf6zjxybiEIVIkODSVCsE2VcTul_KjjsjaGU,1102
18
- angr/sim_manager.py,sha256=5XCwoZQU_RfGJX-5td8ILCj_6bm-Fwxhb7ijf6h8LbE,39287
18
+ angr/sim_manager.py,sha256=YN7WwjAyGEdnTaj3tBSQt-3I9aYn3aEfgxT5RRm4HbQ,39374
19
19
  angr/sim_options.py,sha256=OuT01xS_F3ifBD9MAfZmNCnfjtTg0HulZlrKcs1LNSY,18057
20
20
  angr/sim_procedure.py,sha256=SKlD_-qGh-llcuennKZoHK1yzDUTaa5z5W2l22Ean-U,26259
21
21
  angr/sim_state.py,sha256=-BhSkyucG6wwZSrgSoAKWNRFHQjcVP8R7ux0z7E2AOg,37820
@@ -96,7 +96,7 @@ angr/analyses/decompiler/block_similarity.py,sha256=mTpELRDw_qXxjq7B0SzXlBVm3i41
96
96
  angr/analyses/decompiler/block_simplifier.py,sha256=78vfpaG13JWCxijDrp3Q4wyiEw7hQXngb8itd9y39Os,17227
97
97
  angr/analyses/decompiler/call_counter.py,sha256=V3TIaSvLUy9vLEWErnvlCS--_ubGWQAeU0tqq6XYeOU,1205
98
98
  angr/analyses/decompiler/callsite_maker.py,sha256=GUgUkSsOznUaTIB9PUoBFyWJp9WkH4T8jf5xBIE5p9M,15909
99
- angr/analyses/decompiler/clinic.py,sha256=WX-qUGhEbaskyXohsOx148vBDWQOSHvxcJlZd9l1LL0,95749
99
+ angr/analyses/decompiler/clinic.py,sha256=81gi7DBCaZy-xK_TZGrApUEz00y756V4ZKVAHtugmwk,95748
100
100
  angr/analyses/decompiler/condition_processor.py,sha256=L4piCxmoD3xZHQNSZqgj67WBGhljW3bjUii_Nirugm0,49891
101
101
  angr/analyses/decompiler/decompilation_cache.py,sha256=NKbvKYZOe7791udwdf70tq9hJe79GMS6M1jaDJC8lSQ,1130
102
102
  angr/analyses/decompiler/decompilation_options.py,sha256=FMfcQ0aFDMPW9d0sYpqCwrOVYoq75YkExAvR6CjZCt4,8224
@@ -332,7 +332,7 @@ angr/engines/engine.py,sha256=Lm0RE8XxSJQw11wj2umlAaJkUWv6F7VouEu_-0Jry1A,8075
332
332
  angr/engines/failure.py,sha256=zZw_7cYCkxrVhJ-gWb9apNV6cAf4pqKESDPrQdd1Mpg,996
333
333
  angr/engines/hook.py,sha256=_dobnJ3m3F0FPHWbv82ZS5fyNmSt-wuNzMlZ-81sRgc,2546
334
334
  angr/engines/procedure.py,sha256=dEvCtpS7-LLfr1OX3LT4_4QFyW7Wgt13UtHuAXowDSs,2515
335
- angr/engines/successors.py,sha256=uwDz7vhLObuu8TX_zLfLSVqu_vCiPG1SaSHqtBJEt30,23679
335
+ angr/engines/successors.py,sha256=SuzeKILLcQd2OIQdnLCB6n9rmFJ88Xe_c2quz7osKVU,23887
336
336
  angr/engines/syscall.py,sha256=LNMC3zyis3OiWC7_8Zn1blMw1EDib5FjUqepXlaWDTI,2177
337
337
  angr/engines/unicorn.py,sha256=gf7LjjWyaaujqSuCq3d-BGm8t5sdZjzsJeBevGfdiLw,24447
338
338
  angr/engines/light/__init__.py,sha256=j9vH2fU9MaNVQ8NT3Ek3Tj2zkGlVxlKyzia8zVTofYs,186
@@ -343,7 +343,7 @@ angr/engines/pcode/behavior.py,sha256=BuzA_nX_ebuFiGgup7aJ-bgD9KmUR2dPSGUM51MKxO
343
343
  angr/engines/pcode/cc.py,sha256=CUKkivYUddt8McAYLwAPO5btzDHwO65yBQvWs3CV9dU,3085
344
344
  angr/engines/pcode/emulate.py,sha256=l4MUuUEJDcCihfKCy5_4S6GOG_rzd1DdYzTQ1ObZdgI,16715
345
345
  angr/engines/pcode/engine.py,sha256=WTiIXZ8moilS4BHU-nQSgMopOstLnuoTjXWHpLOKF98,10532
346
- angr/engines/pcode/lifter.py,sha256=978w9-4xWjIUDfnrAOA0AQtcz-La300uwOgaXH-AwHM,52142
346
+ angr/engines/pcode/lifter.py,sha256=4y8kAIlqtb5xVL4gyyXZe74vTUXn9Bp6oMdOM_wNrWI,51942
347
347
  angr/engines/soot/__init__.py,sha256=TznVGXAtXWZQb7K3vgGXWalwHDuuJu9KkFvacG6rYhU,30
348
348
  angr/engines/soot/engine.py,sha256=vCcaW_QOSmK8XsO3qgvNbx303tTzEsf9dx_I2y1PjKU,17238
349
349
  angr/engines/soot/exceptions.py,sha256=Ta2qcX_NXRqst6OzoAaIZyzDuCqxhf-BEIBkzzID5Iw,221
@@ -450,14 +450,14 @@ angr/knowledge_plugins/plugin.py,sha256=5x_6uCatsbqfQBHfRNqoRS9yc8JrwGnGMDyAn29u
450
450
  angr/knowledge_plugins/types.py,sha256=DNBPxMzFYYTtvdGL0va6irXp9z6qn0kAdlOngHwPz4U,2038
451
451
  angr/knowledge_plugins/cfg/__init__.py,sha256=L7qgnAg6rXGq8NCfdr1RLSSPRmQ1O87ZkLEDeC6k000,382
452
452
  angr/knowledge_plugins/cfg/cfg_manager.py,sha256=9qvUkOW1pLZTXlVFm1b6lTfHsqKi05BCPPTsJwsSWx8,2613
453
- angr/knowledge_plugins/cfg/cfg_model.py,sha256=EKi2qEiSiVB3S6lZ_5rTgdltOB32regEtHah9R_44Xw,41709
454
- angr/knowledge_plugins/cfg/cfg_node.py,sha256=TOuGvCKdKAR_5-gcl6TDwJl6JGXkuSR5vC_27JD5q0s,17216
453
+ angr/knowledge_plugins/cfg/cfg_model.py,sha256=_ueS8bcvXHuZ-NgtBqupRvT0KVL8nmBheOpXBHtql-8,41691
454
+ angr/knowledge_plugins/cfg/cfg_node.py,sha256=sOxGwme_hQ5SAzVjS2aUdMeomCAqXS6GXk70PvSUGvc,17364
455
455
  angr/knowledge_plugins/cfg/indirect_jump.py,sha256=ixNJtGspxiaWUPsGNtRJ0fvrskumaJhl3164J2zIkKI,2092
456
456
  angr/knowledge_plugins/cfg/memory_data.py,sha256=zoFZMcegVjzlOsLG2rjjGlvxGijZxL1763hw4ISwwdg,4988
457
457
  angr/knowledge_plugins/functions/__init__.py,sha256=6IerJjMKKvM70mcJQhmXJYiipePOQ9ZSTmavTIUgg5Q,77
458
- angr/knowledge_plugins/functions/function.py,sha256=jf5CVE4V4mL4-1GzPSnW_sK0JpTAL-thNkzlwIDzwoE,67099
458
+ angr/knowledge_plugins/functions/function.py,sha256=YaoFHFkj-Dy4VCR-_UlAJSn0PFnCfFRF1rYL2IEkmK0,67113
459
459
  angr/knowledge_plugins/functions/function_manager.py,sha256=wGQ41kKOPqPgUe8cMfySusOA7_p0-KWNDROT_lFakZ8,18972
460
- angr/knowledge_plugins/functions/function_parser.py,sha256=cb_AD5oFqoyXapDBawnJV1D9XVRMBGa9GwwDudNSc3M,11916
460
+ angr/knowledge_plugins/functions/function_parser.py,sha256=f2x8ib4kUAZEfd3j3egubY4DpEYYf4_jwlbuM6Fk-CE,11956
461
461
  angr/knowledge_plugins/functions/soot_function.py,sha256=2zwz_tdKbEnF8eUkOEmpNr7AUeooun2-SiIoY_xIdMw,4971
462
462
  angr/knowledge_plugins/key_definitions/__init__.py,sha256=xnn-6qL8csRtqWkHn6OTHQxiQChD8Z1xuqLN56GjZi4,397
463
463
  angr/knowledge_plugins/key_definitions/atoms.py,sha256=sMqROOR2VlEHS8HmEhtPaHl5gE0g0mu2lD2IVIqjkSw,9704
@@ -1129,7 +1129,7 @@ angr/procedures/stubs/__init__.py,sha256=44m1-NIxNEwXtyCkYnHnH1jYw5Mp53ObHGzw1bT
1129
1129
  angr/procedures/stubs/b64_decode.py,sha256=baovh7-PURKxG0eks07cTX6_RO8gYw-UmqEgaHlf24w,342
1130
1130
  angr/procedures/stubs/caller.py,sha256=wT3A37gO0QBOKdsT12DpNz4zZMivFIwJtXr2oApJ8XI,343
1131
1131
  angr/procedures/stubs/crazy_scanf.py,sha256=CJe3qzTJEv_0AHmcl3gOxGwZOhV8o1z73fAMqIOiuJM,643
1132
- angr/procedures/stubs/format_parser.py,sha256=IEyFcaxaW8TNJws5dtqtvbgmIkvM-Jktf5nQDiBvdLk,28180
1132
+ angr/procedures/stubs/format_parser.py,sha256=fbFkxcAbUrmoUMK5zCBngleVXReOvcFHsPCabip-pBo,27941
1133
1133
  angr/procedures/stubs/syscall_stub.py,sha256=ZURVeDuH06xX-eseAMQZCkYYRDxXx2USQSkGhOoAl5o,902
1134
1134
  angr/procedures/testing/__init__.py,sha256=mkl-uqerjl2KIlTiJDmE9WW9zE9sL2MQsYLHOfeoJh8,106
1135
1135
  angr/procedures/testing/manyargs.py,sha256=omzRwPCNqrBodw1nJ-alQh4v_82NHaJfr-1E5xCGQjU,100
@@ -1192,7 +1192,7 @@ angr/state_plugins/debug_variables.py,sha256=MjNQKrxhvbDJ3cXW0g6CTA4refWYSWYn8PJ
1192
1192
  angr/state_plugins/filesystem.py,sha256=SjspfS6OXwXRa2ynbD0lddM__puKbxaIG5zVXwWzRcA,15902
1193
1193
  angr/state_plugins/gdb.py,sha256=tPQM-guGghWD65FHF2n_etc2UGMoaUBiXBtlRPVewNA,5125
1194
1194
  angr/state_plugins/globals.py,sha256=tfEVa8iqEmvD2vGoogx89aIoouw9GFc8JQcscDlXLbA,1507
1195
- angr/state_plugins/history.py,sha256=pgnojJBWZlJzDpWZo3Rk3Az7n-Biva3uiz2mHvCisTk,19073
1195
+ angr/state_plugins/history.py,sha256=EuFnc-6z6k58Z9LCqH5gQVk1Iiz7tKP6XUokxLXVLT0,19285
1196
1196
  angr/state_plugins/inspect.py,sha256=49xo60mAI6o1IDZTcLMoqO5N78DXoHHregnSt8V54Eg,11317
1197
1197
  angr/state_plugins/javavm_classloader.py,sha256=t0O7e6DbXykuCbBTQ6bPv13vl99GrXpHvqSnkvWlpfo,5547
1198
1198
  angr/state_plugins/jni_references.py,sha256=AkrXa_ptTV97V1acnwvpnW7svUttpx1w4g9wmGc4NaA,3403
@@ -1293,9 +1293,9 @@ angr/utils/mp.py,sha256=cv_NeysxLgyCdE-Euefnfv078ia5maHSnUn9f23zz88,1882
1293
1293
  angr/utils/segment_list.py,sha256=5nnuVtdZk9NS2y_xUBVA9khWPueP_zagNtPSjaoMHbA,20410
1294
1294
  angr/utils/timing.py,sha256=uOowCP8kotDrKDOjlAod-guBuYkAA8zEtiAwpdwMlIU,1334
1295
1295
  angr/utils/typing.py,sha256=pCjA7JZAzcvrk-iyIE2cRHc1G66AMSGEON3aFfjtPVc,431
1296
- angr-9.2.105.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1297
- angr-9.2.105.dist-info/METADATA,sha256=V1M9-4al8xY_0eM5h_mQmwbpCgm3I3F9M2tUD-IaWJw,4707
1298
- angr-9.2.105.dist-info/WHEEL,sha256=H5ue-LVDBn1iex4P_oaeMzrdjBvJrmXEpHjXkS8V2vU,110
1299
- angr-9.2.105.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1300
- angr-9.2.105.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1301
- angr-9.2.105.dist-info/RECORD,,
1296
+ angr-9.2.107.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1297
+ angr-9.2.107.dist-info/METADATA,sha256=_gEn1iA1KJfNDSl9GKjBrAhN7mSwB_qABsgvByfyh5E,4703
1298
+ angr-9.2.107.dist-info/WHEEL,sha256=H5ue-LVDBn1iex4P_oaeMzrdjBvJrmXEpHjXkS8V2vU,110
1299
+ angr-9.2.107.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1300
+ angr-9.2.107.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1301
+ angr-9.2.107.dist-info/RECORD,,
File without changes