angr 9.2.162__cp310-abi3-win_amd64.whl → 9.2.163__cp310-abi3-win_amd64.whl

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

Potentially problematic release.


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

angr/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # pylint: disable=wrong-import-position
3
3
  from __future__ import annotations
4
4
 
5
- __version__ = "9.2.162"
5
+ __version__ = "9.2.163"
6
6
 
7
7
  if bytes is str:
8
8
  raise Exception(
@@ -102,6 +102,18 @@ class Const(Atom):
102
102
  self.value = value
103
103
  self.bits = bits
104
104
 
105
+ @property
106
+ def value_int(self) -> int:
107
+ if isinstance(self.value, int):
108
+ return self.value
109
+ raise TypeError(f"Incorrect value type; expect int, got {type(self.value)}")
110
+
111
+ @property
112
+ def value_float(self) -> float:
113
+ if isinstance(self.value, float):
114
+ return self.value
115
+ raise TypeError(f"Incorrect value type; expect float, got {type(self.value)}")
116
+
105
117
  @property
106
118
  def size(self):
107
119
  return self.bits // 8
@@ -1868,7 +1868,7 @@ class CFGBase(Analysis):
1868
1868
  should_merge = True
1869
1869
  functions_to_merge = set()
1870
1870
  i = func_pos + 1
1871
- while i < len(all_func_addrs):
1871
+ while i < len(all_func_addrs) and all_func_addrs[i] < endpoint_addr:
1872
1872
  f_addr = all_func_addrs[i]
1873
1873
  i += 1
1874
1874
  f = functions[f_addr]
@@ -1216,6 +1216,7 @@ class Clinic(Analysis):
1216
1216
  ):
1217
1217
  # found a single successor - replace the last statement
1218
1218
  new_last_stmt = last_stmt.copy()
1219
+ assert isinstance(successors[0].addr, int)
1219
1220
  new_last_stmt.target = ailment.Expr.Const(None, None, successors[0].addr, last_stmt.target.bits)
1220
1221
  block.statements[-1] = new_last_stmt
1221
1222
 
@@ -1844,8 +1845,6 @@ class Clinic(Analysis):
1844
1845
  if v.offset in vr.stack_offset_typevars:
1845
1846
  tv = vr.stack_offset_typevars[v.offset]
1846
1847
  tv_max_sizes[tv] = s
1847
- # clean up existing types for this function
1848
- var_manager.remove_types()
1849
1848
  # TODO: Type inference for global variables
1850
1849
  # run type inference
1851
1850
  if self._must_struct:
@@ -2158,9 +2157,9 @@ class Clinic(Analysis):
2158
2157
  }
2159
2158
  else:
2160
2159
  # global variable?
2161
- global_vars = global_variables.get_global_variables(expr.value)
2160
+ global_vars = global_variables.get_global_variables(expr.value_int)
2162
2161
  # detect if there is a related symbol
2163
- if not global_vars and self.project.loader.find_object_containing(expr.value):
2162
+ if not global_vars and self.project.loader.find_object_containing(expr.value_int):
2164
2163
  symbol = self.project.loader.find_symbol(expr.value)
2165
2164
  if symbol is not None:
2166
2165
  # Create a new global variable if there isn't one already
@@ -3041,12 +3040,12 @@ class Clinic(Analysis):
3041
3040
  op0, op1 = addr.operands
3042
3041
  if (
3043
3042
  isinstance(op0, ailment.Expr.Const)
3044
- and self.project.loader.find_object_containing(op0.value) is not None
3043
+ and self.project.loader.find_object_containing(op0.value_int) is not None
3045
3044
  ):
3046
3045
  return op0, op1
3047
3046
  if (
3048
3047
  isinstance(op1, ailment.Expr.Const)
3049
- and self.project.loader.find_object_containing(op1.value) is not None
3048
+ and self.project.loader.find_object_containing(op1.value_int) is not None
3050
3049
  ):
3051
3050
  return op1, op0
3052
3051
  return op0, op1 # best-effort guess
@@ -3279,6 +3278,7 @@ class Clinic(Analysis):
3279
3278
  )
3280
3279
  ):
3281
3280
  # found it!
3281
+ assert self.project.arch.sp_offset is not None
3282
3282
  alloca_node = node
3283
3283
  sp_equal_to = ailment.Expr.BinaryOp(
3284
3284
  None,
angr/analyses/fcp/fcp.py CHANGED
@@ -343,16 +343,17 @@ class FastConstantPropagation(Analysis):
343
343
  engine.process(state, block=block)
344
344
 
345
345
  # if the node ends with a function call, call _handle_function
346
- succs = list(func_graph_with_callees.successors(node))
347
- if any(isinstance(succ, (Function, HookNode)) for succ in succs):
348
- callee = next(succ for succ in succs if isinstance(succ, (Function, HookNode)))
349
- if isinstance(callee, HookNode):
350
- # attempt to convert it into a function
351
- if self.kb.functions.contains_addr(callee.addr):
352
- callee = self.kb.functions.get_by_addr(callee.addr)
353
- else:
354
- callee = None
355
- state = self._handle_function(state, callee)
346
+ if node in func_graph_with_callees:
347
+ succs = list(func_graph_with_callees.successors(node))
348
+ if any(isinstance(succ, (Function, HookNode)) for succ in succs):
349
+ callee = next(succ for succ in succs if isinstance(succ, (Function, HookNode)))
350
+ if isinstance(callee, HookNode):
351
+ # attempt to convert it into a function
352
+ if self.kb.functions.contains_addr(callee.addr):
353
+ callee = self.kb.functions.get_by_addr(callee.addr)
354
+ else:
355
+ callee = None
356
+ state = self._handle_function(state, callee)
356
357
 
357
358
  states[node] = state
358
359
 
@@ -146,7 +146,7 @@ class FlirtSignatureParsed:
146
146
  name_lst = []
147
147
  name_end = False # in case the function name is too long...
148
148
  for _ in range(1024): # max length of a function name
149
- if next_byte < 0x20:
149
+ if next_byte < 0x20 or next_byte >= 0x80:
150
150
  name_end = True
151
151
  break
152
152
  name_lst.append(next_byte)
@@ -347,7 +347,10 @@ class FlirtSignatureParsed:
347
347
  # is it compressed?
348
348
  if obj.features & FlirtFeatureFlag.FEATURE_COMPRESSED:
349
349
  data = file_obj.read()
350
- decompressed = BytesIO(zlib.decompress(data))
350
+ try:
351
+ decompressed = BytesIO(zlib.decompress(data))
352
+ except zlib.error as ex:
353
+ raise FlirtSignatureError(f"Failed to decompress FLIRT signature: {ex}") from ex
351
354
  file_obj = decompressed
352
355
 
353
356
  root = obj.parse_tree(file_obj, root=True)
@@ -575,7 +575,7 @@ class FunctionHandler:
575
575
  sub_rda = state.analysis.project.analyses.ReachingDefinitions(
576
576
  data.function,
577
577
  observe_all=state.analysis._observe_all,
578
- observation_points=list(state.analysis._observation_points or []).extend(return_observation_points),
578
+ observation_points=list(state.analysis._observation_points or []) + return_observation_points,
579
579
  observe_callback=state.analysis._observe_callback,
580
580
  dep_graph=state.dep_graph,
581
581
  function_handler=self,
@@ -156,14 +156,14 @@ class LibcStdioHandlers(FunctionHandler):
156
156
  @FunctionCallDataUnwrapped.decorate
157
157
  def handle_impl_fread(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
158
158
  size = state.get_concrete_value(data.args_atoms[1]) or 1
159
- nmemb = state.get_concrete_value(data.args_atoms[1]) or 2
159
+ nmemb = state.get_concrete_value(data.args_atoms[2]) or 2
160
160
  dst_atom = state.deref(data.args_atoms[0], size * nmemb)
161
161
  data.depends(dst_atom, StdinAtom("fread", size * nmemb))
162
162
 
163
163
  @FunctionCallDataUnwrapped.decorate
164
164
  def handle_impl_fwrite(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
165
165
  size = state.get_concrete_value(data.args_atoms[1]) or 1
166
- nmemb = state.get_concrete_value(data.args_atoms[1]) or 2
166
+ nmemb = state.get_concrete_value(data.args_atoms[2]) or 2
167
167
  src_atom = state.deref(data.args_atoms[0], size * nmemb)
168
168
  data.depends(StdoutAtom("fwrite", size * nmemb), src_atom, value=state.get_values(src_atom))
169
169
 
@@ -206,8 +206,8 @@ def handle_printf(
206
206
  elif fmt == "%u":
207
207
  buf_atoms = atom
208
208
  buf_data = state.get_concrete_value(buf_atoms)
209
- if buf_data is not None:
210
- buf_data = str(buf_data).encode()
209
+ buf_data = str(buf_data).encode() if buf_data else b"0"
210
+
211
211
  elif fmt == "%d":
212
212
  buf_atoms = atom
213
213
  buf_data = state.get_concrete_value(buf_atoms)
@@ -215,11 +215,12 @@ def handle_printf(
215
215
  if buf_data >= 2**31:
216
216
  buf_data -= 2**32
217
217
  buf_data = str(buf_data).encode()
218
+ else:
219
+ buf_data = b"0"
218
220
  elif fmt == "%c":
219
221
  buf_atoms = atom
220
222
  buf_data = state.get_concrete_value(atom)
221
- if buf_data is not None:
222
- buf_data = chr(buf_data).encode()
223
+ buf_data = chr(buf_data).encode() if buf_data else b"0"
223
224
  else:
224
225
  _l.warning("Unimplemented printf format string %s", fmt)
225
226
  buf_atoms = set()
@@ -64,21 +64,25 @@ class LibcStdlibHandlers(FunctionHandler):
64
64
  buf_value = int(buf_value.decode().strip("\0"))
65
65
  except ValueError:
66
66
  buf_value = 0
67
+ else:
68
+ buf_value = 0 # Make the value concrete if it cannot be parsed
67
69
  data.depends(data.ret_atoms, buf_atoms, value=buf_value)
68
70
 
69
71
  @FunctionCallDataUnwrapped.decorate
70
72
  def handle_impl_malloc(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
71
73
  malloc_size = state.get_concrete_value(data.args_atoms[0]) or 48
72
74
  heap_ptr = state.heap_allocator.allocate(malloc_size)
73
- data.depends(data.ret_atoms, value=state.heap_address(heap_ptr))
75
+ heap_addr = state.heap_address(heap_ptr)
76
+ data.depends(data.ret_atoms, value=heap_addr)
74
77
 
75
78
  @FunctionCallDataUnwrapped.decorate
76
79
  def handle_impl_calloc(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
77
80
  nmemb = state.get_concrete_value(data.args_atoms[0]) or 48
78
81
  size = state.get_concrete_value(data.args_atoms[1]) or 1
79
- heap_ptr = state.heap_address(state.heap_allocator.allocate(nmemb * size))
80
- data.depends(state.deref(heap_ptr, nmemb * size), value=0)
81
- data.depends(data.ret_atoms, value=heap_ptr)
82
+ heap_ptr = state.heap_allocator.allocate(nmemb * size)
83
+ heap_addr = state.heap_address(heap_ptr)
84
+ data.depends(state.deref(heap_addr, nmemb * size), value=0)
85
+ data.depends(data.ret_atoms, value=heap_addr)
82
86
 
83
87
  @FunctionCallDataUnwrapped.decorate
84
88
  def handle_impl_getenv(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
@@ -156,6 +160,8 @@ class LibcStdlibHandlers(FunctionHandler):
156
160
  def handle_impl_execve(self, state: ReachingDefinitionsState, data: FunctionCallDataUnwrapped):
157
161
  argv_value = state.get_one_value(data.args_atoms[1])
158
162
  if argv_value is None:
163
+ # Model execve with unknown argv - still has system effects
164
+ data.depends(SystemAtom(1), data.args_atoms[0], value=state.get_values(data.args_atoms[0]))
159
165
  return
160
166
 
161
167
  nonce = random.randint(1, 999999999)
@@ -30,7 +30,7 @@ class LibcStringHandlers(FunctionHandler):
30
30
  dest_value = src0_value.concat(MultiValues(top_val))
31
31
  dest_atom = state.deref(data.args_atoms[0], len(dest_value) // 8, endness=archinfo.Endness.BE)
32
32
  else:
33
- dest_value = None
33
+ dest_value = state.top(state.arch.bits)
34
34
  dest_atom = src0_atom
35
35
  if src0_atom is not None and src1_atom is not None:
36
36
  data.depends(dest_atom, src0_atom, src1_atom, value=dest_value)
@@ -109,7 +109,8 @@ class LibcStringHandlers(FunctionHandler):
109
109
  src_str = state.get_values(src_atom)
110
110
  malloc_size = len(src_str) // 8 if src_str is not None else 1
111
111
  heap_ptr = state.heap_allocator.allocate(malloc_size)
112
- dst_atom = state.deref(heap_ptr, malloc_size)
112
+ heap_addr = state.heap_address(heap_ptr)
113
+ dst_atom = state.deref(heap_addr, malloc_size)
113
114
  data.depends(dst_atom, src_atom, value=src_str)
114
115
  data.depends(data.ret_atoms, data.args_atoms[0], value=state.get_values(data.args_atoms[0]))
115
116
 
@@ -121,6 +122,16 @@ class LibcStringHandlers(FunctionHandler):
121
122
  dst_atom = state.deref(data.args_atoms[0], size)
122
123
  if src_atom is not None:
123
124
  data.depends(dst_atom, src_atom, value=state.get_values(src_atom))
125
+ else:
126
+ # When size is unknown, use default size and create TOP value
127
+ default_size = state.arch.bytes
128
+ src_atom = state.deref(data.args_atoms[1], default_size)
129
+ dst_atom = state.deref(data.args_atoms[0], default_size)
130
+ if src_atom is not None:
131
+ top_val = state.top(default_size * 8)
132
+ for defn in state.get_definitions(src_atom):
133
+ top_val = state.annotate_with_def(top_val, defn)
134
+ data.depends(dst_atom, src_atom, value=MultiValues(top_val))
124
135
  data.depends(data.ret_atoms, data.args_atoms[0], value=state.get_values(data.args_atoms[0]))
125
136
 
126
137
  @FunctionCallDataUnwrapped.decorate
@@ -32,6 +32,9 @@ class LibcUnistdHandlers(FunctionHandler):
32
32
  buf_data = state.top(size * 8) if size is not None else state.top(state.arch.bits)
33
33
 
34
34
  data.depends(dst_atom, fd_atom, value=buf_data)
35
+ # Model return value - number of bytes read (could be 0 to size, or -1 for error)
36
+ ret_val = state.top(state.arch.bits) # Unknown number of bytes read
37
+ data.depends(data.ret_atoms, fd_atom, value=ret_val)
35
38
 
36
39
  handle_impl_recv = handle_impl_recvfrom = handle_impl_read
37
40
 
@@ -41,4 +44,8 @@ class LibcUnistdHandlers(FunctionHandler):
41
44
  src_atom = state.deref(data.args_atoms[1], size)
42
45
  data.depends(StdoutAtom(data.function.name, size), src_atom, value=state.get_values(src_atom))
43
46
 
47
+ # Model return value - number of bytes written (could be 0 to size, or -1 for error)
48
+ ret_val = state.top(state.arch.bits) # Unknown number of bytes written
49
+ data.depends(data.ret_atoms, value=ret_val)
50
+
44
51
  handle_impl_send = handle_impl_write
@@ -142,6 +142,8 @@ class SimEngineVRBase(
142
142
  ) -> list[tuple[SimVariable, int]]:
143
143
  data = richr_addr.data
144
144
 
145
+ variable: SimVariable | None = None
146
+
145
147
  if self.state.is_stack_address(data):
146
148
  # this is a stack address
147
149
  # extract stack offset
@@ -157,7 +159,6 @@ class SimEngineVRBase(
157
159
  for candidate, offset in var_candidates:
158
160
  if isinstance(candidate, SimStackVariable) and candidate.offset == stack_offset:
159
161
  existing_vars.append((candidate, offset))
160
- variable = None
161
162
  if existing_vars:
162
163
  variable, _ = existing_vars[0]
163
164
 
@@ -179,12 +180,7 @@ class SimEngineVRBase(
179
180
  existing_vars.append((var, var_stack_offset))
180
181
 
181
182
  if not existing_vars:
182
- existing_vars = [
183
- (v, 0)
184
- for v in self.state.variable_manager[self.func_addr].find_variables_by_stack_offset(
185
- stack_offset
186
- )
187
- ]
183
+ existing_vars = [(v, 0) for v in variable_manager.find_variables_by_stack_offset(stack_offset)]
188
184
 
189
185
  if not existing_vars:
190
186
  # no variables exist
@@ -193,10 +189,10 @@ class SimEngineVRBase(
193
189
  stack_offset,
194
190
  lea_size,
195
191
  base="bp",
196
- ident=self.state.variable_manager[self.func_addr].next_variable_ident("stack"),
192
+ ident=variable_manager.next_variable_ident("stack"),
197
193
  region=self.func_addr,
198
194
  )
199
- self.state.variable_manager[self.func_addr].add_variable("stack", stack_offset, variable)
195
+ variable_manager.add_variable("stack", stack_offset, variable)
200
196
  l.debug("Identified a new stack variable %s at %#x.", variable, self.ins_addr)
201
197
  existing_vars.append((variable, 0))
202
198
 
@@ -563,7 +559,7 @@ class SimEngineVRBase(
563
559
 
564
560
  if isinstance(stack_offset, int):
565
561
  expr = data.data
566
- if isinstance(expr, claripy.ast.Bits) and expr.size() > 1024:
562
+ if isinstance(expr, claripy.ast.BV) and expr.size() > 1024:
567
563
  # we don't write more than 256 bytes to the stack at a time for performance reasons
568
564
  expr = expr[expr.size() - 1 : expr.size() - 1024]
569
565
  expr = self.state.annotate_with_variables(expr, [(variable_offset, variable)])
angr/project.py CHANGED
@@ -32,7 +32,10 @@ def load_shellcode(shellcode: bytes | str, arch, start_offset=0, load_address=0,
32
32
  if not isinstance(arch, archinfo.Arch):
33
33
  arch = archinfo.arch_from_id(arch)
34
34
  if isinstance(shellcode, str):
35
- shellcode_bytes: bytes = arch.asm(shellcode, load_address, thumb=thumb)
35
+ shellcode_bytes = arch.asm(shellcode, load_address, thumb=thumb)
36
+ if shellcode_bytes is None:
37
+ raise ValueError("Could not assemble shellcode")
38
+ assert isinstance(shellcode_bytes, bytes)
36
39
  else:
37
40
  shellcode_bytes = shellcode
38
41
  if thumb:
@@ -173,7 +176,7 @@ class Project:
173
176
 
174
177
  # It doesn't make any sense to have auto_load_libs
175
178
  # if you have the concrete target, let's warn the user about this.
176
- if self.concrete_target and load_options.get("auto_load_libs", None):
179
+ if self.concrete_target and load_options.get("auto_load_libs"):
177
180
  l.critical(
178
181
  "Incompatible options selected for this project, please disable auto_load_libs if "
179
182
  "you want to use a concrete target."
angr/rustylib.pyd CHANGED
Binary file
angr/sim_type.py CHANGED
@@ -3342,7 +3342,7 @@ def _decl_to_type(
3342
3342
 
3343
3343
  if decl.name is not None:
3344
3344
  key = "struct " + decl.name
3345
- struct = extra_types.get(key, None)
3345
+ struct = extra_types.get(key)
3346
3346
  from_global = False
3347
3347
  if struct is None:
3348
3348
  struct = ALL_TYPES.get(key)
@@ -3378,7 +3378,7 @@ def _decl_to_type(
3378
3378
 
3379
3379
  if decl.name is not None:
3380
3380
  key = "union " + decl.name
3381
- union = extra_types.get(key, None)
3381
+ union = extra_types.get(key)
3382
3382
  from_global = False
3383
3383
  if union is None and key in ALL_TYPES:
3384
3384
  union = ALL_TYPES[key]
angr/unicornlib.dll CHANGED
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: angr
3
- Version: 9.2.162
3
+ Version: 9.2.163
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/
@@ -16,12 +16,12 @@ Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  Requires-Dist: cxxheaderparser
18
18
  Requires-Dist: GitPython
19
- Requires-Dist: archinfo==9.2.162
19
+ Requires-Dist: archinfo==9.2.163
20
20
  Requires-Dist: cachetools
21
21
  Requires-Dist: capstone==5.0.3
22
22
  Requires-Dist: cffi>=1.14.0
23
- Requires-Dist: claripy==9.2.162
24
- Requires-Dist: cle==9.2.162
23
+ Requires-Dist: claripy==9.2.163
24
+ Requires-Dist: cle==9.2.163
25
25
  Requires-Dist: mulpyplexer
26
26
  Requires-Dist: networkx!=2.8.1,>=2.0
27
27
  Requires-Dist: protobuf>=5.28.2
@@ -30,7 +30,7 @@ Requires-Dist: pycparser>=2.18
30
30
  Requires-Dist: pydemumble
31
31
  Requires-Dist: pyformlang
32
32
  Requires-Dist: pypcode<4.0,>=3.2.1
33
- Requires-Dist: pyvex==9.2.162
33
+ Requires-Dist: pyvex==9.2.163
34
34
  Requires-Dist: rich>=13.1.0
35
35
  Requires-Dist: sortedcontainers
36
36
  Requires-Dist: sympy
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=0P-HJdufts3cRObA3N0C7FJYnel9RPfvVXWaN9hfMxE,9246
1
+ angr/__init__.py,sha256=lCaKZ32usElsmj2KZb9RcCXD0Pu7KBoFZOrq47UzNcs,9246
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
@@ -13,21 +13,21 @@ angr/factory.py,sha256=PPNWvTiWaIgzxzyoTr8ObSF-TXp1hCdbY2e-0xBePNc,17815
13
13
  angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  angr/keyed_region.py,sha256=Cx6dadqFgEvRmEHTbCJpg9mXkBtKGc_BKckHc6bk1IU,17992
15
15
  angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
16
- angr/project.py,sha256=96j1q8aUamVSnn0gqj3mIGIIvwctfv0ZzVf-HTO_CQU,37962
16
+ angr/project.py,sha256=AJmBgv3U8iv-hGEfnpmESVVjK16NiBAemmahLuqz7yk,38096
17
17
  angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
18
- angr/rustylib.pyd,sha256=fkrrqiVLuK0YLKgasKLi0npXng5nMY-wV_eLko13S8g,4508160
18
+ angr/rustylib.pyd,sha256=vvPzYGJpEuq9ivyTEG4EOYIuTJP5MgSc9u35zfywRAw,4429312
19
19
  angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
20
20
  angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
21
21
  angr/sim_options.py,sha256=tfl57MFECmA7uvMMtQrRRbpG8g_A9jKOzwY6nApTW6Y,17782
22
22
  angr/sim_procedure.py,sha256=EfXQEX-Na7iNtoqc2-KQhs7AR3tsiMYnxEF1v_lL_ok,26235
23
23
  angr/sim_state.py,sha256=qK6XPl2Q23xEXBud_SBy1fzVPPcrlx0PEQwMtRKBaBI,33893
24
24
  angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
25
- angr/sim_type.py,sha256=tmVye1wxVMNDJWt7vH_KobNPY3jrLX0JCHnkeae2-Nc,134909
25
+ angr/sim_type.py,sha256=3GwPtArsbtjju9evc7S6VrVsespDFXQL3VH5GVJI26U,134897
26
26
  angr/sim_variable.py,sha256=3DssmMw5G7m_-MYToJ3LBP-ooy2UQEuI2YgxIuX3d4Y,13177
27
27
  angr/slicer.py,sha256=DND0BERanYKafasRH9MDFAng0rSjdjmzXj2-phCD6CQ,10634
28
28
  angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
29
29
  angr/tablespecs.py,sha256=Kx1e87FxTx3_ZN7cAHWZSRpdInT4Vfj5gExAWtLkLTw,3259
30
- angr/unicornlib.dll,sha256=FXKTpsJfT_Cr47_nkQGNSpAd1D2CwOdhPaThgtEBIng,813568
30
+ angr/unicornlib.dll,sha256=w3yQU2tnoQI5a_awQckHkV6Ie-bFkcJSf8Wh9M78Jdk,813568
31
31
  angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
32
32
  angr/ailment/__init__.py,sha256=X1LTS6MuTovGtbXBjZendUVOzRk-ib-bP0imuqJDOYI,2039
33
33
  angr/ailment/block.py,sha256=rkmimsNPhrUabVVbRd2IgCaW0hA2_isvAsKlYtHZhgY,2428
@@ -36,7 +36,7 @@ angr/ailment/constant.py,sha256=UG4OKm6VL3uBW_0NxlosWKBqK49gyduJjw64nBcfFfE,64
36
36
  angr/ailment/converter_common.py,sha256=6MxxI3PRZBlFlIP2uZhQAa8vDvJr0nMDd-QnTbPLn6o,180
37
37
  angr/ailment/converter_pcode.py,sha256=gKyshI--_hzO3CgSD85ehXmgrd8DzL_Zhc740U9KOdo,23721
38
38
  angr/ailment/converter_vex.py,sha256=GQXs8_Zanek3WKqjYfUtWhYo6WokOGt213hLsT5FDZI,28164
39
- angr/ailment/expression.py,sha256=HDFBg3scf4ONIk90mbrsiQBSjdJzsM_UwL2v8WP5VqI,48038
39
+ angr/ailment/expression.py,sha256=Q2PDFCyOFco-0MItGtnoDcQ97EqFkI75wWppioaZ0zk,48450
40
40
  angr/ailment/manager.py,sha256=N6yMJnBdxJfj568KYZbKYERHmQIQpMf_hZPwfpdk9Y8,699
41
41
  angr/ailment/statement.py,sha256=3JEhg-JDRrNjaeHFgO-liEIrZRW6v5sIsOqcGHiuM3A,30472
42
42
  angr/ailment/tagged_object.py,sha256=48xIMC5WKebEpA12Zq6dQz3evvKxT3ULEu2cPdw9w-Y,1566
@@ -86,7 +86,7 @@ angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04
86
86
  angr/analyses/cfg/cfb.py,sha256=scykl1FJvqcTe2x69zreWi0PG_zYMbka3k6tlRwaD_g,15367
87
87
  angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
88
88
  angr/analyses/cfg/cfg_arch_options.py,sha256=_XRewFZ51SeNaxChadb6_ER7-8LW8KXeTIpoP8_iRj0,3506
89
- angr/analyses/cfg/cfg_base.py,sha256=ias2sLiZPGQkfYTCSSYyQsHpndOxnRagBf7GJxg3cCs,124664
89
+ angr/analyses/cfg/cfg_base.py,sha256=0O26tgKiMn31CsGzDmRo4XtgKz2G4hFaG713S_b72m4,124702
90
90
  angr/analyses/cfg/cfg_emulated.py,sha256=wL0ABJMZ8EwKbNjrpE_eqCkZpHDt4y6lmoQOmAIcJMQ,148235
91
91
  angr/analyses/cfg/cfg_fast.py,sha256=bNVUjqY3Zx-zB_6sCh9xf7rYAEwBLAyx2lBzBE45F60,231271
92
92
  angr/analyses/cfg/cfg_fast_soot.py,sha256=8YgMtY_8w4nAMcHR6n-q_eFvKwsvNz0anUH7EzIL1B4,25924
@@ -122,7 +122,7 @@ angr/analyses/decompiler/block_io_finder.py,sha256=9J56W0_SQPczZ2-VoxqSv61T57foH
122
122
  angr/analyses/decompiler/block_similarity.py,sha256=S1lTlXFyOmJlQa7I3y7xgLsENLS4XGET7tdD55k_6Vg,6859
123
123
  angr/analyses/decompiler/block_simplifier.py,sha256=XcX9wsBM4AL_WWqmFrtSUDeSv0a125cC1-Q1NhmTrNE,14777
124
124
  angr/analyses/decompiler/callsite_maker.py,sha256=QxdNvnPt0oyRtsbFLCVpWdI7NL1LdT-TlEq27X5RAqA,23150
125
- angr/analyses/decompiler/clinic.py,sha256=zu0t1FtjfdsVkpMXvFvuOraYbx0IFNtARKh0K_3tfUQ,150858
125
+ angr/analyses/decompiler/clinic.py,sha256=1TnX_kIvZ4kFoK818Tyq98ONATP82T9n7fB4akx9yHg,150921
126
126
  angr/analyses/decompiler/condition_processor.py,sha256=g8sknCiCoBx3rXsHy2nx0VKDymSoSyLpq5zMpvFUhWg,54441
127
127
  angr/analyses/decompiler/decompilation_cache.py,sha256=gAZtyXs-eoFj3680bTrJVAZcIoaPsFK0kayu30NYLb4,1509
128
128
  angr/analyses/decompiler/decompilation_options.py,sha256=NDB67DI1L-stvJ4b1eQkfV26HgDJ_rG9-6PEv08G9-8,8195
@@ -298,7 +298,7 @@ angr/analyses/deobfuscator/string_obf_finder.py,sha256=bCd5Weos3Xn5nQUdoQfq2Mioo
298
298
  angr/analyses/deobfuscator/string_obf_opt_passes.py,sha256=YzrsEKsUaUPshB8LqfwDso8aK7m0ySmR3i50T5ZiwNo,5360
299
299
  angr/analyses/deobfuscator/string_obf_peephole_optimizer.py,sha256=_VQv2E2yOAZDAi53smQL5KcSLNe5FMqNUYC8jNSYXGs,1957
300
300
  angr/analyses/fcp/__init__.py,sha256=E9dxFckDM9DijfU4RRg9SGL6xDKCz7yBBP-XSkS-S9U,115
301
- angr/analyses/fcp/fcp.py,sha256=mJzCZ-JQ9Rv15qnVyqAzAhS8UJHldxbjvLieffG-nn0,16285
301
+ angr/analyses/fcp/fcp.py,sha256=djkJsvSja_De7ptNwllmTHjvVl62BFcH_haBhwhzFtw,16373
302
302
  angr/analyses/flirt/__init__.py,sha256=1jKkwUDhwwnxG5BRcYtwogLHLBvtZApXgvcAcHrJrdw,1293
303
303
  angr/analyses/flirt/consts.py,sha256=9ldvicgtJZa8Hw8cWOKxGkCYtc09I2q5ZWxctXcg20w,4861
304
304
  angr/analyses/flirt/flirt.py,sha256=UNXtUBs11WafKeMAW2BwqKJLFhOyObqmRhfCqYdsJpc,10762
@@ -306,7 +306,7 @@ angr/analyses/flirt/flirt_function.py,sha256=IHskIu5XTTCLKfmow23ig4HIqzs7oGbw7ik
306
306
  angr/analyses/flirt/flirt_matcher.py,sha256=nzhvPTIlVwHrn07qLLSRvgfpyOnlNRsziDCls_xh0Gg,6353
307
307
  angr/analyses/flirt/flirt_module.py,sha256=pUP6vbujzceJMXFxvLAPgek5Y2qPv3KTlKY8ZWHeIQU,920
308
308
  angr/analyses/flirt/flirt_node.py,sha256=ecfJq4Ymp38zzvoZPDfLcLSR045GNOM9je-F_NPM5e0,638
309
- angr/analyses/flirt/flirt_sig.py,sha256=Kcxt7TU76HVW-06amqGlF6HuuG6uyQxjHnZV4uCXP1g,11398
309
+ angr/analyses/flirt/flirt_sig.py,sha256=9cWSXqFBEIpui7pluMTaskfD0mVMomNt1mPXN6pIdjg,11574
310
310
  angr/analyses/flirt/flirt_utils.py,sha256=ojZ_01s7O23vU7dN6xZL7Wyx5M3pgm43frxjbZzSmyU,819
311
311
  angr/analyses/forward_analysis/__init__.py,sha256=Du2Ng6EzDQzQYcRCffkOKjLztqa5GBNhiLSgErIPnHE,319
312
312
  angr/analyses/forward_analysis/forward_analysis.py,sha256=GnEcrQDNxD_yls1fllgXe90IUdc6np2uAWBRaeJc8yc,20020
@@ -360,17 +360,17 @@ angr/analyses/reaching_definitions/dep_graph.py,sha256=yOuYhAYQQSi2aN6GIWYkgzquq
360
360
  angr/analyses/reaching_definitions/engine_ail.py,sha256=PPIqp8XaERWXLNUQN_ALzFcQeKHQe5nZdwoHtoLxWwg,46639
361
361
  angr/analyses/reaching_definitions/engine_vex.py,sha256=K486MkRAvTcTFD52pJtmjWbuVw7KURtGCEC0EDhJmRk,45601
362
362
  angr/analyses/reaching_definitions/external_codeloc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
363
- angr/analyses/reaching_definitions/function_handler.py,sha256=iVxGGZ0u0iua4ZAvgLfcFVDxBcI7kkTVntjiSzcJb-8,29223
363
+ angr/analyses/reaching_definitions/function_handler.py,sha256=MoZSB49ia7BXzdRmlYJgUFY36IDuEpY8FSn99eBjrq4,29217
364
364
  angr/analyses/reaching_definitions/heap_allocator.py,sha256=NQ9wBolyyUlCnQl8K0Gt0XVHhQAkRhNGa1MM9gRV9s8,2626
365
365
  angr/analyses/reaching_definitions/rd_initializer.py,sha256=z6LzV6UOWYg0G-Jnp4M16eFzOeX910YDt1rc-FEA4Kk,11156
366
366
  angr/analyses/reaching_definitions/rd_state.py,sha256=nVtfjqGMNBCgM7yGczkBwPn7XEkfOeIO6qGyxONvcnY,22870
367
367
  angr/analyses/reaching_definitions/reaching_definitions.py,sha256=EeA2qJZYOtnb_cbIj8YJQMCtUt_ra0faDiRCMjtw4ho,23719
368
368
  angr/analyses/reaching_definitions/subject.py,sha256=DxhzWhZz_EJo-Cs-u-kB29M-sVxCqtfXkSv72WEYZp0,2021
369
369
  angr/analyses/reaching_definitions/function_handler_library/__init__.py,sha256=elHg3doPsR68R3mZJM85qmDhy2OaCc347O-RaUaTDqY,458
370
- angr/analyses/reaching_definitions/function_handler_library/stdio.py,sha256=FwtFsiqDQ8fr7sMuwfiyIZlC5S7QrJkZE8QYcuVOFcU,11403
371
- angr/analyses/reaching_definitions/function_handler_library/stdlib.py,sha256=qigMzOOm4Yy598xiZZUO69vvN-41rG5NQmqBb8OajWw,7797
372
- angr/analyses/reaching_definitions/function_handler_library/string.py,sha256=BHgsZPyMf5FASi8UBgeNm1mV9PpQyZD93v7OuKL3eGw,8181
373
- angr/analyses/reaching_definitions/function_handler_library/unistd.py,sha256=cKBMwwzKlwTzmmVR-EU5AhFnMbJuDVf45GgA5b-K7Jg,1916
370
+ angr/analyses/reaching_definitions/function_handler_library/stdio.py,sha256=dPGE2mjCFCCKX-0ixzJ_dwU97QAte3jzkLZGdRMz4YQ,11416
371
+ angr/analyses/reaching_definitions/function_handler_library/stdlib.py,sha256=YRNWe87eQ9aJo-m0IvN_nRIqQLFJxb9kfN3cboN3218,8124
372
+ angr/analyses/reaching_definitions/function_handler_library/string.py,sha256=qh7XJXiSuT5dwUjnYKSo6RhGQbsMjJm97mma1gypNG0,8825
373
+ angr/analyses/reaching_definitions/function_handler_library/unistd.py,sha256=oO2HROZZWsjPlCLMxEo7T4M5JkYRlkc9BLLYLwY1SfQ,2370
374
374
  angr/analyses/s_reaching_definitions/__init__.py,sha256=TyfVplxkJj8FAAAw9wegzJlcrbGwlFpIB23PdCcwrLA,254
375
375
  angr/analyses/s_reaching_definitions/s_rda_model.py,sha256=FJSge_31FFzyzBJA1xm7dQz40TfuNna6v_RWAZMZvi0,5801
376
376
  angr/analyses/s_reaching_definitions/s_rda_view.py,sha256=PtYGELZYBr87xKe2u5LX7V7wfMx_AwhxiGueOnfTV5A,13702
@@ -390,7 +390,7 @@ angr/analyses/unpacker/packing_detector.py,sha256=SO6aXR1gZkQ7w17AAv3C1-U2KAc0yL
390
390
  angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
391
391
  angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
392
392
  angr/analyses/variable_recovery/engine_ail.py,sha256=8yqrl_qfO_DCvaIxwsa_eits5rIbly4rBEFh5W_U2O4,33709
393
- angr/analyses/variable_recovery/engine_base.py,sha256=XAwYN1CsJ_urgQ0j7net9zZw7o6dxBxtWxCZ62een6Y,53381
393
+ angr/analyses/variable_recovery/engine_base.py,sha256=MJ6h-dq_0r-3I3ZOhR8E4So2VqxlyudNeSrAHyQCNRg,53171
394
394
  angr/analyses/variable_recovery/engine_vex.py,sha256=5Q2S1jAr7tALa0m0okqBHBe3cUePmJlnV1Grxos1xbo,21344
395
395
  angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
396
396
  angr/analyses/variable_recovery/variable_recovery.py,sha256=I45eVUpOOcSobA_QyXl3aRNa0kppJH_7YOj95fPPTdE,22272
@@ -1399,9 +1399,9 @@ angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
1399
1399
  angr/utils/ssa/__init__.py,sha256=xbuVllFoPane9lHACdRQP5OO99Mca-4sqpFrtoAvnxo,17464
1400
1400
  angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
1401
1401
  angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
1402
- angr-9.2.162.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1403
- angr-9.2.162.dist-info/METADATA,sha256=Ifs4I2KtO94Cb5HS3FYylHU1HwmRs_yNMmE_jtCBObo,4453
1404
- angr-9.2.162.dist-info/WHEEL,sha256=OJ2zpOfp3Fst0GC5jHtFuY8tAf46LLgZ9O920dE4b3c,100
1405
- angr-9.2.162.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1406
- angr-9.2.162.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1407
- angr-9.2.162.dist-info/RECORD,,
1402
+ angr-9.2.163.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
1403
+ angr-9.2.163.dist-info/METADATA,sha256=RiX9pIX8IacudawRZVb84TY9ldBGwzz2--1kTqhBm4Y,4453
1404
+ angr-9.2.163.dist-info/WHEEL,sha256=OJ2zpOfp3Fst0GC5jHtFuY8tAf46LLgZ9O920dE4b3c,100
1405
+ angr-9.2.163.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1406
+ angr-9.2.163.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1407
+ angr-9.2.163.dist-info/RECORD,,
File without changes