angr 9.2.104__py3-none-manylinux2014_aarch64.whl → 9.2.105__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.104"
4
+ __version__ = "9.2.105"
5
5
 
6
6
  if bytes is str:
7
7
  raise Exception(
@@ -27,6 +27,7 @@ from ...knowledge_plugins.key_definitions import atoms
27
27
  from ...knowledge_plugins.key_definitions.atoms import Register as RegisterAtom
28
28
  from ...knowledge_plugins.key_definitions.definition import Definition
29
29
  from ...knowledge_plugins.key_definitions.constants import OP_BEFORE
30
+ from ...errors import AngrRuntimeError
30
31
  from .. import Analysis, AnalysesHub
31
32
  from .ailgraph_walker import AILGraphWalker
32
33
  from .expression_narrower import ExpressionNarrowingWalker
@@ -811,9 +812,9 @@ class AILSimplifier(Analysis):
811
812
  else:
812
813
  replace_with = eq.atom0
813
814
  else:
814
- raise RuntimeError("Unsupported atom1 type %s." % type(eq.atom1))
815
+ raise AngrRuntimeError("Unsupported atom1 type %s." % type(eq.atom1))
815
816
  else:
816
- raise RuntimeError("Unsupported atom0 type %s." % type(eq.atom0))
817
+ raise AngrRuntimeError("Unsupported atom0 type %s." % type(eq.atom0))
817
818
 
818
819
  to_replace_def = the_def
819
820
 
@@ -1389,6 +1389,10 @@ class Clinic(Analysis):
1389
1389
  for block in ail_graph.nodes():
1390
1390
  self._link_variables_on_block(block, tmp_kb)
1391
1391
 
1392
+ # Link struct member info to Store statements
1393
+ for block in ail_graph.nodes():
1394
+ self._link_struct_member_info_on_block(block, tmp_kb)
1395
+
1392
1396
  if self._cache is not None:
1393
1397
  self._cache.type_constraints = vr.type_constraints
1394
1398
  self._cache.func_typevar = vr.func_typevar
@@ -1396,6 +1400,14 @@ class Clinic(Analysis):
1396
1400
 
1397
1401
  return tmp_kb
1398
1402
 
1403
+ def _link_struct_member_info_on_block(self, block, kb):
1404
+ variable_manager = kb.variables[self.function.addr]
1405
+ for stmt in block.statements:
1406
+ if isinstance(stmt, ailment.Stmt.Store) and isinstance((var := stmt.variable), SimStackVariable):
1407
+ offset = var.offset
1408
+ if offset in variable_manager.stack_offset_to_struct_member_info:
1409
+ stmt.tags["struct_member_info"] = variable_manager.stack_offset_to_struct_member_info[offset]
1410
+
1399
1411
  def _link_variables_on_block(self, block, kb):
1400
1412
  """
1401
1413
  Link atoms (AIL expressions) in the given block to corresponding variables identified previously.
@@ -15,6 +15,7 @@ from ...utils.lazy_import import lazy_import
15
15
  from ...utils import is_pyinstaller
16
16
  from ...utils.graph import dominates, inverted_idoms
17
17
  from ...block import Block, BlockNode
18
+ from ...errors import AngrRuntimeError
18
19
  from .peephole_optimizations import InvertNegatedLogicalConjunctionsAndDisjunctions
19
20
  from .structuring.structurer_nodes import (
20
21
  MultiNode,
@@ -857,7 +858,7 @@ class ConditionProcessor:
857
858
  return claripy.true
858
859
  if isinstance(expr, sympy.logic.boolalg.BooleanFalse):
859
860
  return claripy.false
860
- raise RuntimeError("Unreachable reached")
861
+ raise AngrRuntimeError("Unreachable reached")
861
862
 
862
863
  @staticmethod
863
864
  def simplify_condition(cond, depth_limit=8, variables_limit=8):
@@ -1024,7 +1025,7 @@ class ConditionProcessor:
1024
1025
  elif arg in common_exprs:
1025
1026
  continue
1026
1027
  else:
1027
- raise RuntimeError("Unexpected behavior - you should never reach here")
1028
+ raise AngrRuntimeError("Unexpected behavior - you should never reach here")
1028
1029
 
1029
1030
  return claripy.And(*common_exprs, claripy.Or(*new_args))
1030
1031
 
@@ -11,6 +11,7 @@ from ailment.expression import Const
11
11
 
12
12
  from angr.utils.graph import GraphUtils
13
13
  from ...utils.graph import dfs_back_edges, subgraph_between_nodes, dominates, shallow_reverse
14
+ from ...errors import AngrRuntimeError
14
15
  from .. import Analysis, register_analysis
15
16
  from .structuring.structurer_nodes import MultiNode, ConditionNode, IncompleteSwitchCaseHeadStatement
16
17
  from .graph_region import GraphRegion
@@ -146,7 +147,7 @@ class RegionIdentifier(Analysis):
146
147
  try:
147
148
  return next(n for n in graph.nodes() if n.addr == self.function.addr)
148
149
  except StopIteration as ex:
149
- raise RuntimeError("Cannot find the start node from the graph!") from ex
150
+ raise AngrRuntimeError("Cannot find the start node from the graph!") from ex
150
151
 
151
152
  def _test_reducibility(self):
152
153
  # make a copy of the graph
@@ -5,6 +5,7 @@ import claripy
5
5
 
6
6
  from ..structuring.structurer_nodes import ConditionNode, CascadingConditionNode
7
7
  from ..sequence_walker import SequenceWalker
8
+ from ....errors import AngrRuntimeError
8
9
 
9
10
 
10
11
  class CascadingConditionTransformer(SequenceWalker):
@@ -88,6 +89,6 @@ class CascadingConditionTransformer(SequenceWalker):
88
89
 
89
90
  else:
90
91
  # unexpected!
91
- raise RuntimeError("Impossible happened")
92
+ raise AngrRuntimeError("Impossible happened")
92
93
 
93
94
  return CascadingConditionNode(cond_node.addr, cond_and_nodes, else_node=else_node)
@@ -37,7 +37,7 @@ from ....utils.constants import is_alignment_mask
37
37
  from ....utils.library import get_cpp_function_name
38
38
  from ....utils.loader import is_in_readonly_segment, is_in_readonly_section
39
39
  from ..utils import structured_node_is_simple_return
40
- from ....errors import UnsupportedNodeTypeError
40
+ from ....errors import UnsupportedNodeTypeError, AngrRuntimeError
41
41
  from ....knowledge_plugins.cfg.memory_data import MemoryData, MemoryDataSort
42
42
  from ... import Analysis, register_analysis
43
43
  from ..region_identifier import MultiNode
@@ -1262,7 +1262,9 @@ class CFunctionCall(CStatement, CExpression):
1262
1262
  if self.is_expr:
1263
1263
  return self.prototype.returnty or SimTypeInt(signed=False).with_arch(self.codegen.project.arch)
1264
1264
  else:
1265
- raise RuntimeError("CFunctionCall.type should not be accessed if the function call is used as a statement.")
1265
+ raise AngrRuntimeError(
1266
+ "CFunctionCall.type should not be accessed if the function call is used as a statement."
1267
+ )
1266
1268
 
1267
1269
  def _is_target_ambiguous(self, func_name: str) -> bool:
1268
1270
  """
@@ -3222,8 +3224,12 @@ class CStructuredCodeGenerator(BaseStructuredCodeGenerator, Analysis):
3222
3224
  return old_ty
3223
3225
 
3224
3226
  if stmt.variable is not None:
3225
- cvar = self._variable(stmt.variable, stmt.size)
3226
- offset = stmt.offset or 0
3227
+ if "struct_member_info" in stmt.tags:
3228
+ offset, var, _ = stmt.struct_member_info
3229
+ cvar = self._variable(var, stmt.size)
3230
+ else:
3231
+ cvar = self._variable(stmt.variable, stmt.size)
3232
+ offset = stmt.offset or 0
3227
3233
  assert type(offset) is int # I refuse to deal with the alternative
3228
3234
 
3229
3235
  cdst = self._access_constant_offset(self._get_variable_reference(cvar), offset, cdata.type, True, negotiate)
angr/analyses/flirt.py CHANGED
@@ -7,6 +7,7 @@ import nampa
7
7
  from archinfo.arch_arm import is_arm_arch
8
8
 
9
9
  from ..analyses import AnalysesHub
10
+ from ..errors import AngrRuntimeError
10
11
  from ..flirt import FlirtSignature, STRING_TO_LIBRARIES, LIBRARY_TO_SIGNATURES, FLIRT_SIGNATURES_BY_ARCH
11
12
  from .analysis import Analysis
12
13
 
@@ -49,7 +50,7 @@ class FlirtAnalysis(Analysis):
49
50
 
50
51
  else:
51
52
  if not FLIRT_SIGNATURES_BY_ARCH:
52
- raise RuntimeError(
53
+ raise AngrRuntimeError(
53
54
  "No FLIRT signatures exist. Please load FLIRT signatures by calling "
54
55
  "load_signatures() before running FlirtAnalysis."
55
56
  )
@@ -2,6 +2,7 @@
2
2
  from typing import TYPE_CHECKING
3
3
 
4
4
  from ...sim_type import SimStruct, SimTypePointer, SimTypeArray
5
+ from ...errors import AngrRuntimeError
5
6
  from ..analysis import Analysis, AnalysesHub
6
7
  from .simple_solver import SimpleSolver
7
8
  from .translator import TypeTranslator
@@ -112,7 +113,7 @@ class Typehoon(Analysis):
112
113
  if self._var_mapping is None:
113
114
  raise ValueError("Variable mapping does not exist.")
114
115
  if self.solution is None:
115
- raise RuntimeError("Please run type solver before calling pp_solution().")
116
+ raise AngrRuntimeError("Please run type solver before calling pp_solution().")
116
117
 
117
118
  typevar_to_var = {}
118
119
  for k, typevars in self._var_mapping.items():
@@ -12,6 +12,7 @@ from ailment.expression import BinaryOp, StackBaseOffset
12
12
  from ...utils.cowdict import DefaultChainMapCOW
13
13
  from ...engines.light import SpOffset
14
14
  from ...sim_variable import SimVariable
15
+ from ...errors import AngrRuntimeError
15
16
  from ...storage.memory_mixins import MultiValuedMemory
16
17
  from ..analysis import Analysis
17
18
  from ..typehoon.typevars import TypeVariables, TypeVariable
@@ -328,7 +329,7 @@ class VariableRecoveryStateBase:
328
329
  base = 0x7F_FFFF_FFFE_0000
329
330
  mask = 0xFFFF_FFFF_FFFF_FFFF
330
331
  else:
331
- raise RuntimeError("Unsupported bits %d" % self.arch.bits)
332
+ raise AngrRuntimeError("Unsupported bits %d" % self.arch.bits)
332
333
  return (offset + base) & mask
333
334
 
334
335
  @property
angr/errors.py CHANGED
@@ -5,6 +5,10 @@ class AngrError(Exception):
5
5
  pass
6
6
 
7
7
 
8
+ class AngrRuntimeError(RuntimeError):
9
+ pass
10
+
11
+
8
12
  class AngrValueError(AngrError, ValueError):
9
13
  pass
10
14
 
@@ -146,6 +146,7 @@ from .bucketizer import Bucketizer
146
146
  from .local_loop_seer import LocalLoopSeer
147
147
  from .timeout import Timeout
148
148
  from .suggestions import Suggestions
149
+ from .stub_stasher import StubStasher
149
150
 
150
151
  __all__ = (
151
152
  "ExplorationTechnique",
@@ -173,4 +174,5 @@ __all__ = (
173
174
  "LocalLoopSeer",
174
175
  "Timeout",
175
176
  "Suggestions",
177
+ "StubStasher",
176
178
  )
@@ -0,0 +1,17 @@
1
+ from . import ExplorationTechnique
2
+
3
+
4
+ class StubStasher(ExplorationTechnique):
5
+ """
6
+ Stash states that reach a stub SimProcedure.
7
+ """
8
+
9
+ @staticmethod
10
+ def post_filter(state):
11
+ hook = state.project.hooked_by(state.addr)
12
+ return hook and hook.is_stub
13
+
14
+ def step(self, simgr, stash="active", **kwargs):
15
+ simgr.step(stash=stash, **kwargs)
16
+ simgr.move(stash, "stub", filter_func=self.post_filter)
17
+ return simgr
@@ -112,6 +112,8 @@ class VariableManagerInternal(Serializable):
112
112
  # optimization
113
113
  self._variables_without_writes = set()
114
114
 
115
+ self.stack_offset_to_struct_member_info: dict[SimStackVariable, (int, SimStackVariable, SimStruct)] = {}
116
+
115
117
  self.ret_val_size = None
116
118
 
117
119
  #
@@ -972,6 +974,23 @@ class VariableManagerInternal(Serializable):
972
974
  self.variable_to_types[other_var] = ty
973
975
  if mark_manual:
974
976
  self.variables_with_manual_types.add(other_var)
977
+ if isinstance(var, SimStackVariable) and isinstance(ty, TypeRef) and isinstance(ty.type, SimStruct):
978
+ self.stack_offset_to_struct_member_info.update(self._extract_fields_from_struct(var, ty.type))
979
+
980
+ def _extract_fields_from_struct(self, var, ty: SimStruct, top_struct_offset=0):
981
+ result = {}
982
+ for name, field_offset in ty.offsets.items():
983
+ field_ty = ty.fields[name]
984
+ offset = top_struct_offset + field_offset
985
+ if isinstance(field_ty, TypeRef):
986
+ field_ty = field_ty.type
987
+ if isinstance(field_ty, SimStruct):
988
+ result.update(
989
+ self._extract_fields_from_struct(var, field_ty, top_struct_offset=top_struct_offset + field_offset)
990
+ )
991
+ else:
992
+ result[var.offset + offset] = (offset, var, ty)
993
+ return result
975
994
 
976
995
  def get_variable_type(self, var) -> SimType | None:
977
996
  return self.variable_to_types.get(var, None)
@@ -84,30 +84,50 @@ class UltraPage(MemoryObjectMixin, PageBase):
84
84
  self.symbolic_data[global_start_addr - page_addr] = new_item
85
85
  result[-1] = (global_start_addr, new_item)
86
86
 
87
- for subaddr in range(addr, addr + size):
87
+ subaddr = addr
88
+ end = addr + size
89
+ while subaddr < end:
88
90
  realaddr = subaddr + page_addr
89
91
  if self.symbolic_bitmap[subaddr]:
90
92
  cur_val = self._get_object(subaddr, page_addr, memory=memory)
91
- if cur_val is last_run and last_run is symbolic_run:
92
- pass
93
+ # it must be a different object
94
+ cycle(realaddr)
95
+ next_addr = subaddr + 1
96
+
97
+ # figure out how long the current object is (limit end of page)
98
+ if cur_val is None:
99
+ obj_end = end
93
100
  else:
94
- cycle(realaddr)
95
- last_run = symbolic_run = cur_val
96
- result.append((realaddr, cur_val))
101
+ obj_end = subaddr + cur_val.length
102
+ obj_end = min(end, obj_end)
103
+
104
+ # determine how many bytes come from this object
105
+ # loop until: end of object or not symbolic or until next object
106
+ next_place = None
107
+ while next_addr < obj_end and self.symbolic_bitmap[next_addr]:
108
+ if next_addr == subaddr + 1: # first loop
109
+ next_place = self._get_next_place(next_addr)
110
+ if next_place is not None and next_place <= next_addr:
111
+ break
112
+ next_addr += 1
113
+
114
+ subaddr = next_addr
115
+ last_run = symbolic_run = cur_val
116
+ result.append((realaddr, cur_val))
117
+
97
118
  else:
98
- cur_val = self.concrete_data[subaddr]
99
- if last_run is concrete_run:
100
- if endness == "Iend_LE":
101
- last_run = concrete_run = concrete_run | (
102
- cur_val << (memory.state.arch.byte_width * (realaddr - result[-1][0]))
103
- )
104
- else:
105
- last_run = concrete_run = (concrete_run << memory.state.arch.byte_width) | cur_val
106
- result[-1] = (result[-1][0], concrete_run)
119
+ max_concrete_read = subaddr
120
+ while max_concrete_read < end and not self.symbolic_bitmap[max_concrete_read]:
121
+ max_concrete_read += 1
122
+ cur_val = self.concrete_data[subaddr:max_concrete_read]
123
+ subaddr = max_concrete_read
124
+ # we know the last run was not a concrete one
125
+ cycle(realaddr)
126
+ if endness == "Iend_LE":
127
+ last_run = concrete_run = cur_val[::-1]
107
128
  else:
108
- cycle(realaddr)
109
129
  last_run = concrete_run = cur_val
110
- result.append((realaddr, cur_val))
130
+ result.append((realaddr, cur_val))
111
131
 
112
132
  cycle(page_addr + addr + size)
113
133
  if not cooperate:
@@ -134,8 +154,7 @@ class UltraPage(MemoryObjectMixin, PageBase):
134
154
  addr, data, size, endness, page_addr=page_addr, memory=memory, **kwargs
135
155
  )
136
156
 
137
- if size >= memory.page_size - addr:
138
- size = memory.page_size - addr
157
+ size = min(size, memory.page_size - addr)
139
158
 
140
159
  byte_width = memory.state.arch.byte_width
141
160
 
@@ -410,6 +429,14 @@ class UltraPage(MemoryObjectMixin, PageBase):
410
429
  else:
411
430
  return None
412
431
 
432
+ def _get_next_place(self, start):
433
+ try:
434
+ place = next(self.symbolic_data.irange(minimum=start, reverse=False))
435
+ except StopIteration:
436
+ return None
437
+ else:
438
+ return place
439
+
413
440
  def replace_all_with_offsets(self, offsets: Iterable[int], old: claripy.ast.BV, new: claripy.ast.BV, memory=None):
414
441
  memory_objects = set()
415
442
  for offset in sorted(list(offsets)):
angr/utils/mp.py CHANGED
@@ -2,6 +2,7 @@ from typing import NamedTuple, Optional, Any
2
2
  from collections.abc import Callable
3
3
  import multiprocessing
4
4
  import platform
5
+ from ..errors import AngrRuntimeError
5
6
 
6
7
 
7
8
  class Closure(NamedTuple):
@@ -32,7 +33,7 @@ class Initializer:
32
33
 
33
34
  def __init__(self, *, _manual: bool = True):
34
35
  if _manual:
35
- raise RuntimeError("This is a singleton; call .get() instead")
36
+ raise AngrRuntimeError("This is a singleton; call .get() instead")
36
37
  self.initializers: list[Closure] = []
37
38
 
38
39
  def register(self, f: Callable[..., None], *args: Any, **kwargs: Any) -> None:
@@ -1,7 +1,7 @@
1
1
  # pylint:disable=no-else-break
2
2
  import logging
3
3
 
4
- from angr.errors import AngrCFGError
4
+ from angr.errors import AngrCFGError, AngrRuntimeError
5
5
 
6
6
 
7
7
  l = logging.getLogger(name=__name__)
@@ -267,7 +267,7 @@ class SegmentList:
267
267
  # done
268
268
  break
269
269
  else:
270
- raise RuntimeError("Unreachable reached")
270
+ raise AngrRuntimeError("Unreachable reached")
271
271
  else: # if segment.start > address
272
272
  if address + size <= segment.start:
273
273
  # |--- segment ---|
@@ -293,7 +293,7 @@ class SegmentList:
293
293
  address = new_address
294
294
  idx = self.search(address)
295
295
  else:
296
- raise RuntimeError("Unreachable reached")
296
+ raise AngrRuntimeError("Unreachable reached")
297
297
 
298
298
  def _dbg_output(self):
299
299
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: angr
3
- Version: 9.2.104
3
+ Version: 9.2.105
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.104
19
- Requires-Dist: archinfo ==9.2.104
18
+ Requires-Dist: ailment ==9.2.105
19
+ Requires-Dist: archinfo ==9.2.105
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.104
24
- Requires-Dist: cle ==9.2.104
23
+ Requires-Dist: claripy ==9.2.105
24
+ Requires-Dist: cle ==9.2.105
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.104
34
+ Requires-Dist: pyvex ==9.2.105
35
35
  Requires-Dist: rich >=13.1.0
36
36
  Requires-Dist: rpyc
37
37
  Requires-Dist: sortedcontainers
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=O1gRuB7R2vwdKE9TrN8RObSHkaA4MnJ66Fqkt4YJqTs,3993
1
+ angr/__init__.py,sha256=RfxYMnkIBUfOzgBPLlO_MLM2oGBEzyrkj1Egm6rRUqE,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
@@ -7,7 +7,7 @@ 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
9
9
  angr/codenode.py,sha256=Di6ZxGqf-e6tKL49Zr0sq4vqpy_-nUDYkBdLj2Tg2Po,3760
10
- angr/errors.py,sha256=Hqc7StoAOW-0vQAJOlEyk2Xphe5mH1tUnZCfeoZURKc,8299
10
+ angr/errors.py,sha256=Yh_qSz7FjMSqqK9P3CVJHQZUzvTELLg6dRGYyINVZSM,8348
11
11
  angr/factory.py,sha256=C6HlSkBcl9T8y8s7EvFwj5JCV2OMyKrd317fqOjKcYQ,17305
12
12
  angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  angr/keyed_region.py,sha256=aJzy9-iXxIdJdmrH3fhaM3_KFrGHJUO7YzswjRlrsO0,18109
@@ -45,7 +45,7 @@ angr/analyses/disassembly.py,sha256=ZBVtHUt2TBDuIz_mIFY_6thJrIxCEucOSoBfbOQVwIs,
45
45
  angr/analyses/disassembly_utils.py,sha256=4Np0PCPjr0h0jIVzUUG6KzrEKl9--IpTE3sgmmsmhcg,2989
46
46
  angr/analyses/dominance_frontier.py,sha256=XRfC_LUUetE8t1Cc9bwvWS9sl63Fx9sp8KFqN_Y9IDg,1245
47
47
  angr/analyses/find_objects_static.py,sha256=woA3Fc45jbYMmSps-gOO5DqgPohQbx3LhicfrA6bb34,10158
48
- angr/analyses/flirt.py,sha256=bzPIpZiAbrVcNu_ekXlfQc7DsYSuDRZQNRbDVkoaSfQ,7799
48
+ angr/analyses/flirt.py,sha256=fhSUWcNG8c0Pkg4_H0zRh10aM3jaWVPRyC-ZrFbViXk,7841
49
49
  angr/analyses/init_finder.py,sha256=hFHPsHipF4QkWzVqcDeTgL6YIaYi8bAyaURZBksS4KI,8531
50
50
  angr/analyses/loop_analysis.py,sha256=nIbDIzvys-FRtJYnoZYNbMWH5V88qrhoMtrMRCTbkLY,9412
51
51
  angr/analyses/loopfinder.py,sha256=X8F4Dcu2UHDXt6JifK6EfROAeeczyca6V7zxx9z7GpQ,7122
@@ -89,15 +89,15 @@ angr/analyses/data_dep/data_dependency_analysis.py,sha256=077fujhixS7fb-AUzS_CRW
89
89
  angr/analyses/data_dep/dep_nodes.py,sha256=TMp4xOXbOCqjIrmDeP3cef29GexH5WwX2ZKV9yMqoX8,4640
90
90
  angr/analyses/data_dep/sim_act_location.py,sha256=4f8jp-ahitxoHCCOSSFGJ1olvNWuHyiE6iOLa5DA0k4,1527
91
91
  angr/analyses/decompiler/__init__.py,sha256=RkTvvTwAGpaLdGSTgXxVrKmGEDRxqLCNSB-b8fM6fBM,540
92
- angr/analyses/decompiler/ail_simplifier.py,sha256=Kfb01NkKGJs9mvn9neSWpTunF0EMo3Mtzt3dFYfQdRE,61578
92
+ angr/analyses/decompiler/ail_simplifier.py,sha256=laIPyvY0dCx4CQmo0NFA5Wrr5b_PhrBXyPQonXcnAXs,61625
93
93
  angr/analyses/decompiler/ailgraph_walker.py,sha256=sBz9Cn0GtdpuFt7R9y3oX6NFvETQTZRh6N80eM9ZdJQ,1595
94
94
  angr/analyses/decompiler/block_io_finder.py,sha256=1-u6h4KUPsX-dkXlXz6hN5ntslhEfV7fKQqjkAZcDO8,10490
95
95
  angr/analyses/decompiler/block_similarity.py,sha256=mTpELRDw_qXxjq7B0SzXlBVm3i417Oqu7EzPWx85aUM,6461
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=Pp5qw18JALlVwixzvlHw7KVjx76q8egSqlWKJTK1cgk,95087
100
- angr/analyses/decompiler/condition_processor.py,sha256=Cld6l1AYDOwRCBVc1s7BN9sfDtTVkQlsChP7UlaOVUU,49844
99
+ angr/analyses/decompiler/clinic.py,sha256=WX-qUGhEbaskyXohsOx148vBDWQOSHvxcJlZd9l1LL0,95749
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
103
103
  angr/analyses/decompiler/decompiler.py,sha256=152EWqKPC2J_JcC3_rnJPNL9iDbFTm-AXamm3hjzfFE,22253
@@ -109,7 +109,7 @@ angr/analyses/decompiler/graph_region.py,sha256=-bPM3JqMA4ZnFhPi6QLGw_M1zPWK_yh0
109
109
  angr/analyses/decompiler/jump_target_collector.py,sha256=NP-TgRPEkhBkEx4uZwvFLuUjgrvOIfYI3zP5b4WSfco,1138
110
110
  angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=dcgnXt3oKa8Qm_KtT-Rl7XDmLetvOj_UFALxC2HGLac,2139
111
111
  angr/analyses/decompiler/redundant_label_remover.py,sha256=aYvcQbn0l-LYbJ-DIqGTTLfnL0Hw-OANfFZXnNZH-sE,5324
112
- angr/analyses/decompiler/region_identifier.py,sha256=jCNabIZgVAKWdYcMDSLYYAuOU0uD6xYyQjNtF6kFNCY,45439
112
+ angr/analyses/decompiler/region_identifier.py,sha256=fcS0jYJmpt3hXE-E8o31lDOKF-ozOMIkSnUOCSAKbM4,45482
113
113
  angr/analyses/decompiler/region_walker.py,sha256=lTfweYbY4_a2f2yGztTKG6JtU1jXf-kaz-NHbX9nkXE,717
114
114
  angr/analyses/decompiler/return_maker.py,sha256=CztTpm6e3TF0ijdiZDl0HeObxTtOz0TOQd_uIqL0xMM,2467
115
115
  angr/analyses/decompiler/seq_to_blocks.py,sha256=2KINMEgaXMG3XIiFDMRkbn10dggy7a9AHgwV383huRM,529
@@ -193,7 +193,7 @@ angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py,s
193
193
  angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py,sha256=vqIw5ewmvbNtj86sB2eG_JLvya0bZOKFktyiWNkGyn8,940
194
194
  angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=CVNGZPN4YSu7169-UXR6mlm8yf5VSajoB4yksgfIa6E,4820
195
195
  angr/analyses/decompiler/region_simplifiers/__init__.py,sha256=ZeURg5mKbKRpwo8-SqxJ0jy_A6nNpZMxiKpjZJ0_RS0,48
196
- angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py,sha256=2NHuInoSFwahIrtOStHBmBA7k1zmrUnmSQtTe4EBIbo,3690
196
+ angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py,sha256=PQTkQg_-NSR-0dLAjDdwNHs5b82cmsM15m3OStXg-dg,3734
197
197
  angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=dbAn1fde1-kiF6A9060wEqPKcE3DeBd2Ltt_2UAEdo4,2490
198
198
  angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=gBFr98420bdkmlPMypwU28V2c9PRtBKiRkDv10ne4Ag,24075
199
199
  angr/analyses/decompiler/region_simplifiers/goto.py,sha256=08f-7tVw6w-1Kqaf0py7wdNrfEGTB0uhzTJyBaQVVcw,5996
@@ -206,7 +206,7 @@ angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py,sha256=
206
206
  angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py,sha256=HGIiC6c3C91VfcqxUHe9aTsRohwmMXOHZH_G_dbwwx4,3327
207
207
  angr/analyses/decompiler/structured_codegen/__init__.py,sha256=NLEvs8xnJwJiUgX8AmgS7rtFFW4SxtQcA1AjzE-GryA,313
208
208
  angr/analyses/decompiler/structured_codegen/base.py,sha256=TdghqAsAkjZpPfzFarh8Wn1zfBYMFcMsBZhRqXgoPNo,3778
209
- angr/analyses/decompiler/structured_codegen/c.py,sha256=gF0RSC171Jn-xFtQJ0wfbRaLSTqhk0YPYNK67bKF_Ns,135300
209
+ angr/analyses/decompiler/structured_codegen/c.py,sha256=YcvlggO1mRMbiXZoGMJOj2L09BE2TwaHP5OCwEjAvbo,135539
210
210
  angr/analyses/decompiler/structured_codegen/dummy.py,sha256=IVfmtcWpTgNCRVsuW3GdQgDnuPmvodX85V0bBYtF_BI,535
211
211
  angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=TMz65TkF_ID_Ipocj0aFDb84H6slolN90wq0tzhY2Rk,6773
212
212
  angr/analyses/decompiler/structuring/__init__.py,sha256=Ai63Im5VSiMDP8ACiDb34chqMl84JgzQXFIO8MV7hl0,368
@@ -282,7 +282,7 @@ angr/analyses/typehoon/lifter.py,sha256=3RogUtd8O6txb7_UAjbI7Bn1hc38oP_LsRYyBsPs
282
282
  angr/analyses/typehoon/simple_solver.py,sha256=JWtFIWT6Wlm7kM6KH28dfwm4kvni-PHJjnPRWLmzLr4,48377
283
283
  angr/analyses/typehoon/translator.py,sha256=HLPNDkkl8daZy_mLXvDm3AoBD8auLze3MnkbhRxIMZc,8559
284
284
  angr/analyses/typehoon/typeconsts.py,sha256=yrPpW-EFNwI0vsO9ipVp2wIHsWPoZjXug1sdFHq1R6g,6973
285
- angr/analyses/typehoon/typehoon.py,sha256=KgkOcCvKaIApR6ycTCPhUlkjGA9Wk7QpBjWEvljjd-I,9325
285
+ angr/analyses/typehoon/typehoon.py,sha256=Ak0T9DL8kMl__YdJkJUoiN92cRzpUSuyjalKQk3Jbww,9368
286
286
  angr/analyses/typehoon/typevars.py,sha256=2MNNyTSjmKXGIcLqwbO5qKIef5EHoWttjFPFGTfhfGw,15777
287
287
  angr/analyses/typehoon/variance.py,sha256=VPuBrPmbw5RgNG5SUTNFEd5rr4v3V_qD1vgilqWvdrs,158
288
288
  angr/analyses/variable_recovery/__init__.py,sha256=j2SZyfzCAagqNTj0IcYJtOx4b3oAvhEY9GR3hb0bx4o,105
@@ -292,7 +292,7 @@ angr/analyses/variable_recovery/engine_base.py,sha256=HVCtyY4tgx8cjHyP1aPoCCgW57
292
292
  angr/analyses/variable_recovery/engine_vex.py,sha256=ni-OCeHFhhPRo5iH2p4AvI_43ADOO1jUc__GX0tIb-U,19215
293
293
  angr/analyses/variable_recovery/irsb_scanner.py,sha256=IZVaL_axfPBcM_MvjIOXwICK3otK3B5AIbwjhVscylc,4878
294
294
  angr/analyses/variable_recovery/variable_recovery.py,sha256=-chYezAPEMrgwu_w3pBv_uzGnJb1wi3zsa1DLPdTya8,21777
295
- angr/analyses/variable_recovery/variable_recovery_base.py,sha256=n4DmEuJppuyqIaHFeipNVG1QROVNZjhnPobmdWxuhHM,14919
295
+ angr/analyses/variable_recovery/variable_recovery_base.py,sha256=EhqACAQwd6qKWC19-kbTvXEio3k9JNc3cyYg4MLHebw,14962
296
296
  angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=_eOpy1qppTti2P7Sn0MK3IMLQfYw1-V7AoZkmSizYjc,24070
297
297
  angr/angrdb/__init__.py,sha256=df9W7J7c4rD5oYx6fZGf0BIBwOqVVJlIJTDrAtQChqY,231
298
298
  angr/angrdb/db.py,sha256=tVrjdgEWZC0HeBVdOQ1nG0lKPwsvlITk2u4eCPMfG-4,6416
@@ -407,7 +407,7 @@ angr/engines/vex/light/__init__.py,sha256=WblrLgYRbdBAvNGbkzGsTgOq2A_pUBJP-FxANP
407
407
  angr/engines/vex/light/light.py,sha256=CZFEgsXM-CSwVexiu6WFikjwXvpAyCR66HjVT--3_0g,21698
408
408
  angr/engines/vex/light/resilience.py,sha256=FaHiSMv_hsIiNEqA2Wga2F3bVyXGPtWudL00785ebEs,2002
409
409
  angr/engines/vex/light/slicing.py,sha256=lGZsF5_xtVKjCJmD2FMABkyz-kZWctWOMjuWnFWpe2g,2023
410
- angr/exploration_techniques/__init__.py,sha256=95T9fVNalvf0veq0NAmmHE-cEfBPoP_S-IRcilXGx5o,6980
410
+ angr/exploration_techniques/__init__.py,sha256=ywiuWYV080w7n4HQUd40DNDfL5FwDVPFlySD2KLRzfM,7037
411
411
  angr/exploration_techniques/bucketizer.py,sha256=H-5QyOfDNdCSTbCk8MQluwi9C9Y0iE7E1s_4EAb3LXk,2588
412
412
  angr/exploration_techniques/common.py,sha256=7vKlFQjuVoTmtKgYbYjhg67-e3weTzFtU2hC91wHHtI,2262
413
413
  angr/exploration_techniques/dfs.py,sha256=IpEmTGVqGAKUCmchKBR_w0SISIsBlNRjdp6sgZlcWis,1167
@@ -424,6 +424,7 @@ angr/exploration_techniques/slicecutor.py,sha256=qGX-9t28CiSXiDoz-dbE6X6oqpGt8Vq
424
424
  angr/exploration_techniques/spiller.py,sha256=2_Jf8OyttY58-q9TvcvBrjb-1DOOZ4o0kkd_3O1RMUk,9382
425
425
  angr/exploration_techniques/spiller_db.py,sha256=9Q855QsH96ZxGe7d0cv9YTcQrjd8E4X8WG4mZQgJRP4,818
426
426
  angr/exploration_techniques/stochastic.py,sha256=gmFim2h9sFhoeC-zlpGCS0iUDkvM2wwKa_mN5Cc7mmQ,2059
427
+ angr/exploration_techniques/stub_stasher.py,sha256=lGSBgOG4v1bGl5k_lWplkOIL3uWv_Ns9RJoe8rZ2V8k,459
427
428
  angr/exploration_techniques/suggestions.py,sha256=GICcH_fIA1ltIwQlbSMse5f1HJ0jdwtpNdnHfVFScXA,6969
428
429
  angr/exploration_techniques/symbion.py,sha256=o-o_ZdbSMZCjA0_uV4TJV6jdtZXq2cO3KYzv038rJbQ,3122
429
430
  angr/exploration_techniques/tech_builder.py,sha256=UWmOE7GqQkZj_X_kR4Un7rDZyB4oL84Q6L-nLaU1i70,1586
@@ -483,7 +484,7 @@ angr/knowledge_plugins/sync/__init__.py,sha256=RN3y0UhYax-GdPyAhondMXEBuWIu-enHj
483
484
  angr/knowledge_plugins/sync/sync_controller.py,sha256=gZ1NUg8iJWu2EaOYY6WYj_W13tRtreIu5CA1VvpTmTA,9270
484
485
  angr/knowledge_plugins/variables/__init__.py,sha256=tmh_2i0X6Y41TkEgxHRQ4y-kVEGZnlDIpJZ_wUkCISI,60
485
486
  angr/knowledge_plugins/variables/variable_access.py,sha256=RzT-6C3cPXqSlWpQ_vZUf6s4tfYXp2lfOvgfYWkTLyo,3726
486
- angr/knowledge_plugins/variables/variable_manager.py,sha256=A0M4E6S0O98JpdrFyu1TOQkBCk8DkP2hy9a-2TPWz8Q,46325
487
+ angr/knowledge_plugins/variables/variable_manager.py,sha256=r8w2xIP-VN1_DS3r9y2GK3LAy8fMndL1m-7_obiIsbY,47315
487
488
  angr/knowledge_plugins/xrefs/__init__.py,sha256=-5A2h048WTRu6Et7q7bqlc-AyBXNuJ9AF9nE9zc3M4I,94
488
489
  angr/knowledge_plugins/xrefs/xref.py,sha256=1BMphrr8iViDtVWPXWidmY1_uNmw9LRvEwwZLt3Zqw8,4907
489
490
  angr/knowledge_plugins/xrefs/xref_manager.py,sha256=a4uvTJkdM0PQIuyYcd7t76IddrrVjPGe9SZrRaqp2II,3980
@@ -1265,7 +1266,7 @@ angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=hW-8svWpMJj
1265
1266
  angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py,sha256=7pAL_YxTNEx1d7qTpJqrXIRKMB04SN4ASwz6vfyBbCk,17671
1266
1267
  angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py,sha256=Ek2YSmFOGUScFXPx8hqroNkl3gK1aqKCMv_X3_pImLs,830
1267
1268
  angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py,sha256=oES5tahTy4SgyDi2h5oRRC0PC4JHNcIvdAC4INKkeJw,1701
1268
- angr/storage/memory_mixins/paged_memory/pages/ultra_page.py,sha256=iZLW5HTaalj2wnZqunJCKwFvMP54Nv0QbbgW6kD4Wgc,19116
1269
+ angr/storage/memory_mixins/paged_memory/pages/ultra_page.py,sha256=JIgC5wpl006FEFyDg_Z_gvEtMWJ0G0OWq9y8PcnFOzA,20062
1269
1270
  angr/storage/memory_mixins/regioned_memory/__init__.py,sha256=qFW74mjzZmHnIX-cyvOHhOFWSJOdQwcPUm_IhDryObo,351
1270
1271
  angr/storage/memory_mixins/regioned_memory/abstract_address_descriptor.py,sha256=9p4Eo7zE-gqfodF1P80GMEgCONpP4Qy90zzyY3ivbII,1094
1271
1272
  angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py,sha256=KW8zdtvWh1I00NXdDYrP3dyIJguWIu0DqRVqMVRsUtw,1333
@@ -1288,13 +1289,13 @@ angr/utils/graph.py,sha256=baLY5RJYp06XXBKrqtEIu8b7wpWYSxwVODbIFUxm3Kc,28347
1288
1289
  angr/utils/lazy_import.py,sha256=VgN0-cMsr6XdGIq56Js1X8YecfPdW9Z4NrB3d2jD-5Y,308
1289
1290
  angr/utils/library.py,sha256=6RKKn7Hm-YEw0AoTFIjL86kCdvglKI_5KtSysDAE06Q,7170
1290
1291
  angr/utils/loader.py,sha256=QdkatPiyRfz5KdfCzRI1Xp3TJL_Pa75wY0dsILgMbwk,1944
1291
- angr/utils/mp.py,sha256=lym2-3K2sSznzZ4vDShMajHPDSTEStIWLXZHprC5a3w,1840
1292
- angr/utils/segment_list.py,sha256=noVHVyH0zYshoU3kntPLTQI3_Swo7VV2kfAb0TUccsU,20384
1292
+ angr/utils/mp.py,sha256=cv_NeysxLgyCdE-Euefnfv078ia5maHSnUn9f23zz88,1882
1293
+ angr/utils/segment_list.py,sha256=5nnuVtdZk9NS2y_xUBVA9khWPueP_zagNtPSjaoMHbA,20410
1293
1294
  angr/utils/timing.py,sha256=uOowCP8kotDrKDOjlAod-guBuYkAA8zEtiAwpdwMlIU,1334
1294
1295
  angr/utils/typing.py,sha256=pCjA7JZAzcvrk-iyIE2cRHc1G66AMSGEON3aFfjtPVc,431
1295
- angr-9.2.104.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1296
- angr-9.2.104.dist-info/METADATA,sha256=RawEOibOIpKDqaJeWk59Xp1BcwDGQvaXeeern_CDVQU,4707
1297
- angr-9.2.104.dist-info/WHEEL,sha256=H5ue-LVDBn1iex4P_oaeMzrdjBvJrmXEpHjXkS8V2vU,110
1298
- angr-9.2.104.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1299
- angr-9.2.104.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1300
- angr-9.2.104.dist-info/RECORD,,
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,,
File without changes