angr 9.2.144__py3-none-macosx_11_0_arm64.whl → 9.2.145__py3-none-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of angr might be problematic. Click here for more details.
- angr/__init__.py +1 -1
- angr/analyses/cfg/cfg_fast.py +14 -1
- angr/analyses/decompiler/clinic.py +1 -1
- angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +58 -2
- angr/analyses/stack_pointer_tracker.py +61 -25
- angr/lib/angr_native.dylib +0 -0
- angr/utils/funcid.py +27 -2
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/METADATA +6 -6
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/RECORD +13 -13
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/WHEEL +1 -1
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/LICENSE +0 -0
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/entry_points.txt +0 -0
- {angr-9.2.144.dist-info → angr-9.2.145.dist-info}/top_level.txt +0 -0
angr/__init__.py
CHANGED
angr/analyses/cfg/cfg_fast.py
CHANGED
|
@@ -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
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
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
|
|
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
|
|
751
|
-
|
|
752
|
-
|
|
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:
|
angr/lib/angr_native.dylib
CHANGED
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
21
|
-
Requires-Dist: archinfo==9.2.
|
|
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.
|
|
26
|
-
Requires-Dist: cle==9.2.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
561
|
+
angr/lib/angr_native.dylib,sha256=XFzaL4kNUD8iGzDVIbjGXfCFJUqTXE8lao0UYX3ajHg,234064
|
|
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=
|
|
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.
|
|
1373
|
-
angr-9.2.
|
|
1374
|
-
angr-9.2.
|
|
1375
|
-
angr-9.2.
|
|
1376
|
-
angr-9.2.
|
|
1377
|
-
angr-9.2.
|
|
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=E9XElQXE55zHDfhtxnPacvpjd2WuQwGSvnGCO-Vo-XM,105
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|