angr 9.2.144__py3-none-macosx_10_9_x86_64.whl → 9.2.145__py3-none-macosx_10_9_x86_64.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.144"
5
+ __version__ = "9.2.145"
6
6
 
7
7
  if bytes is str:
8
8
  raise Exception(
@@ -1540,6 +1540,19 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
1540
1540
  }:
1541
1541
  func.info["is_alloca_probe"] = True
1542
1542
 
1543
+ elif self.project.arch.name == "X86":
1544
+ # determine if the function is __alloca_probe
1545
+ func = self.kb.functions.get_by_addr(func_addr) if self.kb.functions.contains_addr(func_addr) else None
1546
+ if func is not None and len(func.block_addrs_set) == 4:
1547
+ block_bytes = {func.get_block(block_addr).bytes for block_addr in func.block_addrs_set}
1548
+ if block_bytes == {
1549
+ b"-\x00\x10\x00\x00\x85\x00\xeb\xe9",
1550
+ b";\xc8r\n",
1551
+ b"Q\x8dL$\x04+\xc8\x1b\xc0\xf7\xd0#\xc8\x8b\xc4%\x00\xf0\xff\xff;\xc8r\n",
1552
+ b"\x8b\xc1Y\x94\x8b\x00\x89\x04$\xc3",
1553
+ }:
1554
+ func.info["is_alloca_probe"] = True
1555
+
1543
1556
  if self._collect_data_ref and self.project is not None and ":" in self.project.arch.name:
1544
1557
  # this is a pcode arch - use Clinic to recover data references
1545
1558
 
@@ -1829,7 +1842,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
1829
1842
 
1830
1843
  if (
1831
1844
  self.project.simos is not None
1832
- and self.project.arch.name == "AMD64"
1845
+ and self.project.arch.name in {"X86", "AMD64"}
1833
1846
  and self.project.simos.name == "Win32"
1834
1847
  and isinstance(self.project.loader.main_object, cle.PE)
1835
1848
  ):
@@ -2951,7 +2951,7 @@ class Clinic(Analysis):
2951
2951
  if self.project.kb.functions.contains_addr(last_stmt.target.value)
2952
2952
  else None
2953
2953
  )
2954
- if func is not None and func.name == "__chkstk":
2954
+ if func is not None and (func.name == "__chkstk" or func.info.get("is_alloca_probe", False) is True):
2955
2955
  # get rid of this call
2956
2956
  node.statements = node.statements[:-1]
2957
2957
  if self.project.arch.call_pushes_ret and node.statements:
@@ -110,8 +110,11 @@ class WinStackCanarySimplifier(OptimizationPass):
110
110
  _l.debug("Cannot find the statement calling _security_check_cookie() in the predecessor.")
111
111
  continue
112
112
 
113
- # TODO: Support x86
114
- canary_storing_stmt_idx = self._find_amd64_canary_storing_stmt(pred, store_offset)
113
+ canary_storing_stmt_idx = (
114
+ self._find_amd64_canary_storing_stmt(pred, store_offset)
115
+ if self.project.arch.name == "AMD64"
116
+ else self._find_x86_canary_storing_stmt(pred, store_offset)
117
+ )
115
118
  if canary_storing_stmt_idx is None:
116
119
  _l.debug("Cannot find the canary check statement in the predecessor.")
117
120
  continue
@@ -270,6 +273,59 @@ class WinStackCanarySimplifier(OptimizationPass):
270
273
  return idx
271
274
  return None
272
275
 
276
+ def _find_x86_canary_storing_stmt(self, block, canary_value_stack_offset):
277
+ load_stmt_idx = None
278
+
279
+ for idx, stmt in enumerate(block.statements):
280
+ # when we are lucky, we have one instruction
281
+ if (
282
+ (
283
+ isinstance(stmt, ailment.Stmt.Assignment)
284
+ and isinstance(stmt.dst, ailment.Expr.VirtualVariable)
285
+ and stmt.dst.was_reg
286
+ and stmt.dst.reg_offset == self.project.arch.registers["eax"][0]
287
+ )
288
+ and isinstance(stmt.src, ailment.Expr.BinaryOp)
289
+ and stmt.src.op == "Xor"
290
+ ):
291
+ op0, op1 = stmt.src.operands
292
+ if (
293
+ isinstance(op0, ailment.Expr.Load)
294
+ and isinstance(op0.addr, ailment.Expr.StackBaseOffset)
295
+ and op0.addr.offset == canary_value_stack_offset
296
+ ) and isinstance(op1, ailment.Expr.StackBaseOffset):
297
+ # found it
298
+ return idx
299
+ # or when we are unlucky, we have two instructions...
300
+ if (
301
+ isinstance(stmt, ailment.Stmt.Assignment)
302
+ and isinstance(stmt.dst, ailment.Expr.VirtualVariable)
303
+ and stmt.dst.reg_offset == self.project.arch.registers["eax"][0]
304
+ and isinstance(stmt.src, ailment.Expr.Load)
305
+ and isinstance(stmt.src.addr, ailment.Expr.StackBaseOffset)
306
+ and stmt.src.addr.offset == canary_value_stack_offset
307
+ ):
308
+ load_stmt_idx = idx
309
+ if (
310
+ load_stmt_idx is not None
311
+ and idx >= load_stmt_idx + 1
312
+ and (
313
+ isinstance(stmt, ailment.Stmt.Assignment)
314
+ and isinstance(stmt.dst, ailment.Expr.VirtualVariable)
315
+ and stmt.dst.was_reg
316
+ and isinstance(stmt.src, ailment.Expr.BinaryOp)
317
+ and stmt.src.op == "Xor"
318
+ )
319
+ and (
320
+ isinstance(stmt.src.operands[0], ailment.Expr.VirtualVariable)
321
+ and stmt.src.operands[0].was_reg
322
+ and stmt.src.operands[0].reg_offset == self.project.arch.registers["eax"][0]
323
+ and isinstance(stmt.src.operands[1], ailment.Expr.StackBaseOffset)
324
+ )
325
+ ):
326
+ return idx
327
+ return None
328
+
273
329
  @staticmethod
274
330
  def _find_return_addr_storing_stmt(block):
275
331
  for idx, stmt in enumerate(block.statements):
@@ -15,6 +15,7 @@ from angr.analyses import AnalysesHub
15
15
  from angr.knowledge_plugins import Function
16
16
  from angr.block import BlockNode
17
17
  from angr.errors import SimTranslationError
18
+ from angr.calling_conventions import SimStackArg
18
19
  from .analysis import Analysis
19
20
 
20
21
  try:
@@ -554,7 +555,7 @@ class StackPointerTracker(Analysis, ForwardAnalysis):
554
555
  if vex_block is not None:
555
556
  if isinstance(vex_block, pyvex.IRSB):
556
557
  curr_stmt_start_addr = self._process_vex_irsb(node, vex_block, state)
557
- elif pypcode is not None and isinstance(vex_block, pcode.lifter.IRSB):
558
+ elif pypcode is not None and isinstance(vex_block, pcode.lifter.IRSB): # type: ignore
558
559
  curr_stmt_start_addr = self._process_pcode_irsb(node, vex_block, state)
559
560
  else:
560
561
  raise NotImplementedError(f"Unsupported block type {type(vex_block)}")
@@ -587,7 +588,7 @@ class StackPointerTracker(Analysis, ForwardAnalysis):
587
588
  raise CouldNotResolveException
588
589
  if arg1_expr is BOTTOM:
589
590
  return BOTTOM
590
- return arg0_expr + arg1_expr
591
+ return arg0_expr + arg1_expr # type: ignore
591
592
  if expr.op.startswith("Iop_Sub"):
592
593
  arg0_expr = _resolve_expr(arg0)
593
594
  if arg0_expr is None:
@@ -599,7 +600,7 @@ class StackPointerTracker(Analysis, ForwardAnalysis):
599
600
  raise CouldNotResolveException
600
601
  if arg1_expr is BOTTOM:
601
602
  return BOTTOM
602
- return arg0_expr - arg1_expr
603
+ return arg0_expr - arg1_expr # type: ignore
603
604
  if expr.op.startswith("Iop_And"):
604
605
  # handle stack pointer alignments
605
606
  arg0_expr = _resolve_expr(arg0)
@@ -713,43 +714,78 @@ class StackPointerTracker(Analysis, ForwardAnalysis):
713
714
  pass
714
715
  # who are we calling?
715
716
  callees = [] if self._func is None else self._find_callees(node)
717
+ sp_adjusted = False
716
718
  if callees:
717
719
  if len(callees) == 1:
720
+
718
721
  callee = callees[0]
719
- track_rax = False
720
- if (
721
- (callee.info.get("is_rust_probestack", False) and self.project.arch.name == "AMD64")
722
- or (callee.info.get("is_alloca_probe", False) and self.project.arch.name == "AMD64")
723
- or callee.name == "__chkstk"
724
- ):
725
- # sp = sp - rax right after returning from the call
726
- track_rax = True
727
-
728
- if track_rax:
729
- for stmt in reversed(vex_block.statements):
730
- if (
731
- isinstance(stmt, pyvex.IRStmt.Put)
732
- and stmt.offset == self.project.arch.registers["rax"][0]
733
- and isinstance(stmt.data, pyvex.IRExpr.Const)
734
- ):
735
- state.put(stmt.offset, Constant(stmt.data.con.value), force=True)
736
- break
722
+ if callee.info.get("is_rust_probestack", False):
723
+ # sp = sp - rax/eax right after returning from the call
724
+ rust_probe_stack_rax_regname: str | None = None
725
+ if self.project.arch.name == "AMD64":
726
+ rust_probe_stack_rax_regname = "rax"
727
+ elif self.project.arch.name == "X86":
728
+ rust_probe_stack_rax_regname = "eax"
729
+
730
+ if rust_probe_stack_rax_regname is not None:
731
+ for stmt in reversed(vex_block.statements):
732
+ if (
733
+ isinstance(stmt, pyvex.IRStmt.Put)
734
+ and stmt.offset == self.project.arch.registers[rust_probe_stack_rax_regname][0]
735
+ and isinstance(stmt.data, pyvex.IRExpr.Const)
736
+ ):
737
+ sp_adjusted = True
738
+ state.put(stmt.offset, Constant(stmt.data.con.value), force=True)
739
+ break
740
+
741
+ if not sp_adjusted and (callee.info.get("is_alloca_probe", False) or callee.name == "__chkstk"):
742
+ # sp = sp - rax, but it's adjusted within the callee
743
+ chkstk_stack_rax_regname: str | None = None
744
+ if self.project.arch.name == "AMD64":
745
+ chkstk_stack_rax_regname = "rax"
746
+ elif self.project.arch.name == "X86":
747
+ chkstk_stack_rax_regname = "eax"
748
+
749
+ if chkstk_stack_rax_regname is not None:
750
+ for stmt in reversed(vex_block.statements):
751
+ if (
752
+ isinstance(stmt, pyvex.IRStmt.Put)
753
+ and stmt.offset == self.project.arch.registers[chkstk_stack_rax_regname][0]
754
+ and isinstance(stmt.data, pyvex.IRExpr.Const)
755
+ and self.project.arch.sp_offset in state.regs
756
+ ):
757
+ sp_adjusted = True
758
+ sp_v = state.regs[self.project.arch.sp_offset]
759
+ sp_v -= Constant(stmt.data.con.value)
760
+ state.put(self.project.arch.sp_offset, sp_v, force=True)
761
+ break
737
762
 
738
763
  callee_cleanups = [
739
764
  callee
740
765
  for callee in callees
741
- if callee.calling_convention is not None and callee.calling_convention.CALLEE_CLEANUP
766
+ if callee.calling_convention is not None
767
+ and callee.calling_convention.CALLEE_CLEANUP
768
+ and callee.prototype is not None
742
769
  ]
743
770
  if callee_cleanups:
744
771
  # found callee clean-up cases...
772
+ callee = callee_cleanups[0]
773
+ assert callee.calling_convention is not None # just to make pyright happy
745
774
  try:
746
775
  v = state.get(self.project.arch.sp_offset)
747
776
  incremented = None
748
777
  if v is BOTTOM:
749
778
  incremented = BOTTOM
750
- elif callee_cleanups[0].prototype is not None:
751
- num_args = len(callee_cleanups[0].prototype.args)
752
- incremented = v + Constant(self.project.arch.bytes * num_args)
779
+ elif callee.prototype is not None:
780
+ num_stack_args = len(
781
+ [
782
+ arg_loc
783
+ for arg_loc in callee.calling_convention.arg_locs(callee.prototype)
784
+ if isinstance(arg_loc, SimStackArg)
785
+ ]
786
+ )
787
+ if num_stack_args > 0:
788
+ incremented = v + Constant(self.project.arch.bytes * num_stack_args)
753
789
  if incremented is not None:
754
790
  state.put(self.project.arch.sp_offset, incremented)
755
791
  except CouldNotResolveException:
Binary file
angr/utils/funcid.py CHANGED
@@ -17,7 +17,8 @@ def is_function_security_check_cookie(func, project, security_cookie_addr: int)
17
17
  return False
18
18
  ins0 = block.capstone.insns[0]
19
19
  if (
20
- ins0.mnemonic == "cmp"
20
+ project.arch.name == "AMD64"
21
+ and ins0.mnemonic == "cmp"
21
22
  and len(ins0.operands) == 2
22
23
  and ins0.operands[0].type == capstone.x86.X86_OP_REG
23
24
  and ins0.operands[0].reg == capstone.x86.X86_REG_RCX
@@ -29,6 +30,20 @@ def is_function_security_check_cookie(func, project, security_cookie_addr: int)
29
30
  ins1 = block.capstone.insns[1]
30
31
  if ins1.mnemonic == "jne":
31
32
  return True
33
+ if (
34
+ project.arch.name == "X86"
35
+ and ins0.mnemonic == "cmp"
36
+ and len(ins0.operands) == 2
37
+ and ins0.operands[0].type == capstone.x86.X86_OP_REG
38
+ and ins0.operands[0].reg == capstone.x86.X86_REG_ECX
39
+ and ins0.operands[1].type == capstone.x86.X86_OP_MEM
40
+ and ins0.operands[1].mem.base == 0
41
+ and ins0.operands[1].mem.disp == security_cookie_addr
42
+ and ins0.operands[1].mem.index == 0
43
+ ):
44
+ ins1 = block.capstone.insns[1]
45
+ if ins1.mnemonic == "jne":
46
+ return True
32
47
  return False
33
48
 
34
49
 
@@ -63,13 +78,23 @@ def is_function_security_init_cookie(func: Function, project, security_cookie_ad
63
78
  continue
64
79
  last_insn = block.capstone.insns[-1]
65
80
  if (
66
- last_insn.mnemonic == "mov"
81
+ project.arch.name == "AMD64"
82
+ and last_insn.mnemonic == "mov"
67
83
  and len(last_insn.operands) == 2
68
84
  and last_insn.operands[0].type == capstone.x86.X86_OP_MEM
69
85
  and last_insn.operands[0].mem.base == capstone.x86.X86_REG_RIP
70
86
  and last_insn.operands[0].mem.index == 0
71
87
  and last_insn.operands[0].mem.disp + last_insn.address + last_insn.size == security_cookie_addr
72
88
  and last_insn.operands[1].type == capstone.x86.X86_OP_REG
89
+ ) or (
90
+ project.arch.name == "X86"
91
+ and last_insn.mnemonic == "mov"
92
+ and len(last_insn.operands) == 2
93
+ and last_insn.operands[0].type == capstone.x86.X86_OP_MEM
94
+ and last_insn.operands[0].mem.base == 0
95
+ and last_insn.operands[0].mem.index == 0
96
+ and last_insn.operands[0].mem.disp == security_cookie_addr
97
+ and last_insn.operands[1].type == capstone.x86.X86_OP_REG
73
98
  ):
74
99
  return True
75
100
  return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: angr
3
- Version: 9.2.144
3
+ Version: 9.2.145
4
4
  Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
5
5
  License: BSD-2-Clause
6
6
  Project-URL: Homepage, https://angr.io/
@@ -17,13 +17,13 @@ Description-Content-Type: text/markdown
17
17
  License-File: LICENSE
18
18
  Requires-Dist: CppHeaderParser
19
19
  Requires-Dist: GitPython
20
- Requires-Dist: ailment==9.2.144
21
- Requires-Dist: archinfo==9.2.144
20
+ Requires-Dist: ailment==9.2.145
21
+ Requires-Dist: archinfo==9.2.145
22
22
  Requires-Dist: cachetools
23
23
  Requires-Dist: capstone==5.0.3
24
24
  Requires-Dist: cffi>=1.14.0
25
- Requires-Dist: claripy==9.2.144
26
- Requires-Dist: cle==9.2.144
25
+ Requires-Dist: claripy==9.2.145
26
+ Requires-Dist: cle==9.2.145
27
27
  Requires-Dist: mulpyplexer
28
28
  Requires-Dist: nampa
29
29
  Requires-Dist: networkx!=2.8.1,>=2.0
@@ -32,7 +32,7 @@ Requires-Dist: psutil
32
32
  Requires-Dist: pycparser>=2.18
33
33
  Requires-Dist: pydemumble
34
34
  Requires-Dist: pyformlang
35
- Requires-Dist: pyvex==9.2.144
35
+ Requires-Dist: pyvex==9.2.145
36
36
  Requires-Dist: rich>=13.1.0
37
37
  Requires-Dist: sortedcontainers
38
38
  Requires-Dist: sympy
@@ -1,4 +1,4 @@
1
- angr/__init__.py,sha256=sKhb29BGGRRtqv47AVHqOhnkPM_rXaUlpATdVGgPip4,9153
1
+ angr/__init__.py,sha256=y79FN6Lox_8nXGt5Uo5d4Xqytt0U-2K5ke6HLp1A4iQ,9153
2
2
  angr/__main__.py,sha256=XeawhF6Cco9eWcfMTDWzYYggLB3qjnQ87IIeFOplaHM,2873
3
3
  angr/annocfg.py,sha256=0NIvcuCskwz45hbBzigUTAuCrYutjDMwEXtMJf0y0S0,10742
4
4
  angr/blade.py,sha256=NhesOPloKJC1DQJRv_HBT18X7oNxK16JwAfNz2Lc1o0,15384
@@ -57,7 +57,7 @@ angr/analyses/s_liveness.py,sha256=K4soSrcQE9pIn7Yf2Lb3LZEu1ymuQVpWzOqLKunFDGQ,7
57
57
  angr/analyses/s_propagator.py,sha256=ChFdiT4wCN0p5mY0UsFGopH3ZH0zM5V_2Ur5cN15Kcc,23667
58
58
  angr/analyses/smc.py,sha256=0fvLPUpjlg6GCjYnfSqanXkGYlthmPwqMYR-ZYBHsbo,5075
59
59
  angr/analyses/soot_class_hierarchy.py,sha256=R4xeacn-a_Q7PxSyj_stu5mnglZkPB5US5srKChX3mk,8740
60
- angr/analyses/stack_pointer_tracker.py,sha256=54wijIt-uJZ2KIOjbEpgKucNoDK3qIvtGh2WuEvRAD0,33370
60
+ angr/analyses/stack_pointer_tracker.py,sha256=xY6ed-TM_WCodDt2aMJgt_TNAP8TN630cLNDcoccjrs,35614
61
61
  angr/analyses/static_hooker.py,sha256=8aine4A1KnkWNfn7IarlWUyX7NjygbFDYbE3_ptCPlA,1764
62
62
  angr/analyses/veritesting.py,sha256=M6WNsbgiv4ScFPQIaFzujNFya66rQ9GSieaRLuC6RSo,25062
63
63
  angr/analyses/vfg.py,sha256=rlA3LXDAtGGiiqoWsQFOLPxU3pvhvTWpC_WPfC1d5tM,72879
@@ -74,7 +74,7 @@ angr/analyses/cfg/cfg.py,sha256=dc9M91CaLeEKduYfMwpsT_01x6XyYuoNvgvcDKtbN-I,3177
74
74
  angr/analyses/cfg/cfg_arch_options.py,sha256=QpC_sonf0eODcIxWtjVrW6E-gFRGvvdataqGEp9DFFI,3142
75
75
  angr/analyses/cfg/cfg_base.py,sha256=gDbi5bKkM90Bvdp37QbW_iAIGVKuJ5pZmcS_dcB42Rc,124229
76
76
  angr/analyses/cfg/cfg_emulated.py,sha256=JgAen52lAK0v2f_EwiB_gS9BBhg8oqTALN7IVFd80Hk,148051
77
- angr/analyses/cfg/cfg_fast.py,sha256=grDRUS624AyGvKIau8eYeDacK6eAhG8um9cy8snj-GA,226219
77
+ angr/analyses/cfg/cfg_fast.py,sha256=ybkp6Hthz1UPJH2Am1OAIkKgXomFAfq4C96lw5yMvkk,226977
78
78
  angr/analyses/cfg/cfg_fast_soot.py,sha256=X2uroCSbtfgugO33pbIU_hx62bHzZTBweO35iLwEaLo,25906
79
79
  angr/analyses/cfg/cfg_job_base.py,sha256=Zshze972MakTsd-licQz77lac17igQaaTsAteHeHhYQ,5974
80
80
  angr/analyses/cfg/indirect_jump_resolvers/__init__.py,sha256=qWiTSIAQgXWmaYa9YYaiKsSTwUVClymaXv9sCX-bY-k,835
@@ -108,7 +108,7 @@ angr/analyses/decompiler/block_io_finder.py,sha256=xMwG8Bi69OGNYVs0U0F4yxM8kEsny
108
108
  angr/analyses/decompiler/block_similarity.py,sha256=SseCdWgh-kS9q_C_BRxlQ4OwCRQfg-9IyncxKXm_OG8,6849
109
109
  angr/analyses/decompiler/block_simplifier.py,sha256=Pl7qh9ODO41iXkBsKuB8-1gtjnqr6Qc1b8So2MbrTLM,13537
110
110
  angr/analyses/decompiler/callsite_maker.py,sha256=eWO19uHZVUs3i4Bu8iGSjuJkHZ4CleB0RNA_zTUJByw,22168
111
- angr/analyses/decompiler/clinic.py,sha256=6PqJ2E7J5MDqs_SCwLbJ9vXL8M7AMQy9JYj3MvRKxc4,138101
111
+ angr/analyses/decompiler/clinic.py,sha256=Zj6PRpipY-CWccLMXpsknOcNyOuSgybKwK6VHV9Ho7I,138154
112
112
  angr/analyses/decompiler/condition_processor.py,sha256=BCBcgj-QDGNj3ajOKzEktqckTozcSgonaMk1a42QAGc,53853
113
113
  angr/analyses/decompiler/decompilation_cache.py,sha256=oNkeyrEXhyinrN7-fKeDEuGP6I_oAclGjRS4Aa36FoE,1488
114
114
  angr/analyses/decompiler/decompilation_options.py,sha256=NDB67DI1L-stvJ4b1eQkfV26HgDJ_rG9-6PEv08G9-8,8195
@@ -173,7 +173,7 @@ angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py,sha256=_
173
173
  angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py,sha256=gvGpjP3t-an8iIBkmPGXob0-aRHL2idGZpd7hErlgFo,6461
174
174
  angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py,sha256=m7ZMkqE2qbl4rl4M_Fi8xS6I1vUaTzUBIzsE6qpbwkM,4020
175
175
  angr/analyses/decompiler/optimization_passes/tag_slicer.py,sha256=8_gmoeYgDD1Hb8Rpqcb-01_B4897peDF-J6KA5PjQT8,1176
176
- angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=OkC5vPGlH6GRA-VrfOZrZ6TzWxLPyIq2IX5MYMzjwlM,13073
176
+ angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=MHrVduNXHBmaa4-6PyqBLj7Urc8DnK-zd8zrqawiVxM,15674
177
177
  angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py,sha256=6NxaX2oT6BMkevb8xt9vlS3Jl-CmSK59F0FVab68B48,3088
178
178
  angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py,sha256=hTeOdooVDZnBnjiAguD7_BS9YJru8rOiSHN3H0sdzcA,126
179
179
  angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py,sha256=Trp6qkwO_L4oMfdX78ZOoplcIpLV4CV1k_ZimY2IvxA,21658
@@ -558,7 +558,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyC
558
558
  angr/knowledge_plugins/xrefs/xref.py,sha256=U2H1rfffp5EXoh0awlGxMBxA4K5MIwl3CXjV3Uih3tA,4856
559
559
  angr/knowledge_plugins/xrefs/xref_manager.py,sha256=1n373rtV91xicAfSUresRigsZ6qCBhPOaJKrN_SW3QY,4157
560
560
  angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
561
- angr/lib/angr_native.dylib,sha256=TY7IKU34Nyaw8_pRhe-KFOwTfBevfcheb4yVNKPVz80,264696
561
+ angr/lib/angr_native.dylib,sha256=v0lMlm9XqllO7adZBxC2dIvTgJXnD8rXmaftudg8_s8,264696
562
562
  angr/misc/__init__.py,sha256=FoUwjk1DhqlIsr2sBN0MlR8MnSOGQv9QJhxmq32RYuA,355
563
563
  angr/misc/ansi.py,sha256=nPJHC0SKfqasMQZ0LxdmmIYojjmk4nr5jI6FrzoTwS0,811
564
564
  angr/misc/autoimport.py,sha256=iZagpuPwZWczUTYIqs-JkDMQjftMqc_cchcm7OBFiEg,3450
@@ -1355,7 +1355,7 @@ angr/utils/endness.py,sha256=wBcek3rwRQCYdMVFOV5h5q16Ahgjn2x_zZdPeZQEui0,501
1355
1355
  angr/utils/enums_conv.py,sha256=fA6qeoRZ6Cj6gCIS_PZbP4PX7E8IybnYQ90OZGnBVrc,2746
1356
1356
  angr/utils/env.py,sha256=aO4N2h7DUsUQtTgnC5J_oPHvMxJRur20m5UFSkmy4XU,398
1357
1357
  angr/utils/formatting.py,sha256=OWzSfAlKcL09cEtcqxszYWHsRO9tih7hvXD2K9kUZc8,4343
1358
- angr/utils/funcid.py,sha256=dSGbKUWpTzy48374lJqHyRefJ6K7B7jRVhYHmpGmD3I,5256
1358
+ angr/utils/funcid.py,sha256=Rd4r8juv2IpeMtCpPp4wxJoEZTnZZ1NsxdT42tvrKVA,6353
1359
1359
  angr/utils/graph.py,sha256=0A4NqNvWXxXMrzBENbeyDE8t78MZ01mzmGesZplA8OQ,30882
1360
1360
  angr/utils/lazy_import.py,sha256=7Mx-y-aZFsXX9jNxvEcXT-rO8tL8rknb6D6RbSFOI1M,343
1361
1361
  angr/utils/library.py,sha256=z3rFYm7ePZTXNZJuKiQrR0SnlbVb-OzkX0t0U44nXDk,7181
@@ -1369,9 +1369,9 @@ angr/utils/types.py,sha256=5EDtrusFLf1fIcMz8fgJiPPsUhpEm0bf_oqZ_PSRje0,1836
1369
1369
  angr/utils/ssa/__init__.py,sha256=ohP9IJh9ZvdVH8nH-ZrYA8hwIi8L98XQ6NMNL6q_pJ0,13649
1370
1370
  angr/utils/ssa/tmp_uses_collector.py,sha256=rSpvMxBHzg-tmvhsfjn3iLyPEKzaZN-xpQrdslMq3J4,793
1371
1371
  angr/utils/ssa/vvar_uses_collector.py,sha256=O2aNZeM5DL8qatyhYuMhgbYGFp6Onm2yr9pKq1wRjA0,1347
1372
- angr-9.2.144.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1373
- angr-9.2.144.dist-info/METADATA,sha256=n6znfc4OJcs2jpsgUugSnCofX2ycjw0SO06dp2jjmF8,4909
1374
- angr-9.2.144.dist-info/WHEEL,sha256=iId1cGaFIHvrdUDQ8nUVM8cxJ9m1QOVfFPekQlGkl_0,106
1375
- angr-9.2.144.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1376
- angr-9.2.144.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1377
- angr-9.2.144.dist-info/RECORD,,
1372
+ angr-9.2.145.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1373
+ angr-9.2.145.dist-info/METADATA,sha256=B5Y7_LuwUNmGrB64e-hnqcpwrBUG-3URXMGIc8bc73s,4909
1374
+ angr-9.2.145.dist-info/WHEEL,sha256=_-0GUS_OSZSK-qMRiixeJ3H4QmbWTAFd_j7RYSzVpgM,106
1375
+ angr-9.2.145.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1376
+ angr-9.2.145.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1377
+ angr-9.2.145.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.1)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-macosx_10_9_x86_64
5
5