angr 9.2.98__py3-none-macosx_10_9_x86_64.whl → 9.2.99__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 +1 -1
- angr/analyses/cfg/cfg_fast.py +3 -3
- angr/analyses/decompiler/clinic.py +2 -40
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py +10 -2
- angr/analyses/decompiler/region_simplifiers/expr_folding.py +5 -3
- angr/analyses/decompiler/return_maker.py +71 -0
- angr/lib/angr_native.dylib +0 -0
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/METADATA +6 -6
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/RECORD +13 -12
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/LICENSE +0 -0
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/WHEEL +0 -0
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/entry_points.txt +0 -0
- {angr-9.2.98.dist-info → angr-9.2.99.dist-info}/top_level.txt +0 -0
angr/__init__.py
CHANGED
angr/analyses/cfg/cfg_fast.py
CHANGED
|
@@ -3287,7 +3287,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
3287
3287
|
|
|
3288
3288
|
removed_nodes = set()
|
|
3289
3289
|
|
|
3290
|
-
a = None # it always
|
|
3290
|
+
a = None # it always holds the very recent non-removed node
|
|
3291
3291
|
is_arm = is_arm_arch(self.project.arch)
|
|
3292
3292
|
|
|
3293
3293
|
for i in range(len(sorted_nodes)): # pylint:disable=consider-using-enumerate
|
|
@@ -3341,7 +3341,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
3341
3341
|
# but somehow we thought b is the beginning
|
|
3342
3342
|
if a.addr + a.size == b.addr + b.size:
|
|
3343
3343
|
in_edges = len([_ for _, _, data in self.graph.in_edges([b], data=True)])
|
|
3344
|
-
if in_edges == 0:
|
|
3344
|
+
if in_edges == 0 and b in self.graph:
|
|
3345
3345
|
# we use node a to replace node b
|
|
3346
3346
|
# link all successors of b to a
|
|
3347
3347
|
for _, dst, data in self.graph.out_edges([b], data=True):
|
|
@@ -3360,7 +3360,7 @@ class CFGFast(ForwardAnalysis[CFGNode, CFGNode, CFGJob, int], CFGBase): # pylin
|
|
|
3360
3360
|
|
|
3361
3361
|
# next case - if b is directly from function prologue detection, or a basic block that is a successor of
|
|
3362
3362
|
# a wrongly identified basic block, we might be totally misdecoding b
|
|
3363
|
-
if b.instruction_addrs[0] not in a.instruction_addrs:
|
|
3363
|
+
if b.instruction_addrs[0] not in a.instruction_addrs and b in self.graph:
|
|
3364
3364
|
# use a, truncate b
|
|
3365
3365
|
|
|
3366
3366
|
new_b_addr = a.addr + a.size # b starts right after a terminates
|
|
@@ -33,6 +33,7 @@ from ...procedures.stubs.UnresolvableJumpTarget import UnresolvableJumpTarget
|
|
|
33
33
|
from .. import Analysis, register_analysis
|
|
34
34
|
from ..cfg.cfg_base import CFGBase
|
|
35
35
|
from ..reaching_definitions import ReachingDefinitionsAnalysis
|
|
36
|
+
from .return_maker import ReturnMaker
|
|
36
37
|
from .ailgraph_walker import AILGraphWalker, RemoveNodeNotice
|
|
37
38
|
from .optimization_passes import (
|
|
38
39
|
get_default_optimization_passes,
|
|
@@ -1054,46 +1055,7 @@ class Clinic(Analysis):
|
|
|
1054
1055
|
# unknown calling convention. cannot do much about return expressions.
|
|
1055
1056
|
return ail_graph
|
|
1056
1057
|
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
def _handle_Return(
|
|
1060
|
-
stmt_idx: int, stmt: ailment.Stmt.Return, block: Optional[ailment.Block]
|
|
1061
|
-
): # pylint:disable=unused-argument
|
|
1062
|
-
if (
|
|
1063
|
-
block is not None
|
|
1064
|
-
and not stmt.ret_exprs
|
|
1065
|
-
and self.function.prototype is not None
|
|
1066
|
-
and self.function.prototype.returnty is not None
|
|
1067
|
-
and type(self.function.prototype.returnty) is not SimTypeBottom
|
|
1068
|
-
):
|
|
1069
|
-
new_stmt = stmt.copy()
|
|
1070
|
-
ret_val = self.function.calling_convention.return_val(self.function.prototype.returnty)
|
|
1071
|
-
if isinstance(ret_val, SimRegArg):
|
|
1072
|
-
reg = self.project.arch.registers[ret_val.reg_name]
|
|
1073
|
-
new_stmt.ret_exprs.append(
|
|
1074
|
-
ailment.Expr.Register(
|
|
1075
|
-
self._next_atom(),
|
|
1076
|
-
None,
|
|
1077
|
-
reg[0],
|
|
1078
|
-
ret_val.size * self.project.arch.byte_width,
|
|
1079
|
-
reg_name=self.project.arch.translate_register_name(reg[0], ret_val.size),
|
|
1080
|
-
)
|
|
1081
|
-
)
|
|
1082
|
-
else:
|
|
1083
|
-
l.warning("Unsupported type of return expression %s.", type(ret_val))
|
|
1084
|
-
block.statements[stmt_idx] = new_stmt
|
|
1085
|
-
|
|
1086
|
-
def _handler(block):
|
|
1087
|
-
walker = ailment.AILBlockWalker()
|
|
1088
|
-
# we don't need to handle any statement besides Returns
|
|
1089
|
-
walker.stmt_handlers.clear()
|
|
1090
|
-
walker.expr_handlers.clear()
|
|
1091
|
-
walker.stmt_handlers[ailment.Stmt.Return] = _handle_Return
|
|
1092
|
-
walker.walk(block)
|
|
1093
|
-
|
|
1094
|
-
# Graph walker
|
|
1095
|
-
|
|
1096
|
-
AILGraphWalker(ail_graph, _handler, replace_nodes=True).walk()
|
|
1058
|
+
ReturnMaker(self._ail_manager, self.project.arch, self.function, ail_graph)
|
|
1097
1059
|
|
|
1098
1060
|
return ail_graph
|
|
1099
1061
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import logging
|
|
3
3
|
|
|
4
4
|
from ailment.statement import ConditionalJump, Assignment, Jump
|
|
5
|
-
from ailment.expression import ITE
|
|
5
|
+
from ailment.expression import ITE, Const
|
|
6
6
|
|
|
7
7
|
from ....utils.graph import subgraph_between_nodes
|
|
8
8
|
from ..utils import remove_labels, to_ail_supergraph
|
|
@@ -146,10 +146,11 @@ class ITERegionConverter(OptimizationPass):
|
|
|
146
146
|
#
|
|
147
147
|
|
|
148
148
|
new_region_head = region_head.copy()
|
|
149
|
+
conditional_jump: ConditionalJump = region_head.statements[-1]
|
|
149
150
|
addr_obj = true_stmt.src if "ins_addr" in true_stmt.src.tags else true_stmt
|
|
150
151
|
ternary_expr = ITE(
|
|
151
152
|
None,
|
|
152
|
-
|
|
153
|
+
conditional_jump.condition,
|
|
153
154
|
true_stmt.src,
|
|
154
155
|
false_stmt.src,
|
|
155
156
|
ins_addr=addr_obj.ins_addr,
|
|
@@ -160,6 +161,13 @@ class ITERegionConverter(OptimizationPass):
|
|
|
160
161
|
new_assignment.src = ternary_expr
|
|
161
162
|
new_region_head.statements[-1] = new_assignment
|
|
162
163
|
|
|
164
|
+
# add a goto statement to the region tail so it can be transformed into a break or other types of control-flow
|
|
165
|
+
# transitioning statement in the future
|
|
166
|
+
goto_stmt = Jump(
|
|
167
|
+
None, Const(None, None, region_tail.addr, self.project.arch.bits), region_tail.idx, **conditional_jump.tags
|
|
168
|
+
)
|
|
169
|
+
new_region_head.statements.append(goto_stmt)
|
|
170
|
+
|
|
163
171
|
#
|
|
164
172
|
# destroy all the old region blocks
|
|
165
173
|
#
|
|
@@ -4,6 +4,7 @@ from typing import Optional, Any, Dict, Set, Tuple, Iterable, Union, DefaultDict
|
|
|
4
4
|
|
|
5
5
|
import ailment
|
|
6
6
|
from ailment import Expression, Block, AILBlockWalker
|
|
7
|
+
from ailment.expression import ITE
|
|
7
8
|
from ailment.statement import Statement, Assignment, Call
|
|
8
9
|
|
|
9
10
|
from ..sequence_walker import SequenceWalker
|
|
@@ -385,11 +386,11 @@ class ExpressionReplacer(AILBlockWalker):
|
|
|
385
386
|
return None
|
|
386
387
|
|
|
387
388
|
def _handle_Assignment(self, stmt_idx: int, stmt: Assignment, block: Optional[Block]):
|
|
388
|
-
# override the base handler and make sure we do not replace .dst with a Call expression
|
|
389
|
+
# override the base handler and make sure we do not replace .dst with a Call expression or an ITE expression
|
|
389
390
|
changed = False
|
|
390
391
|
|
|
391
392
|
dst = self._handle_expr(0, stmt.dst, stmt_idx, stmt, block)
|
|
392
|
-
if dst is not None and dst is not stmt.dst and not isinstance(dst, Call):
|
|
393
|
+
if dst is not None and dst is not stmt.dst and not isinstance(dst, (Call, ITE)):
|
|
393
394
|
changed = True
|
|
394
395
|
else:
|
|
395
396
|
dst = stmt.dst
|
|
@@ -446,7 +447,8 @@ class ExpressionFolder(SequenceWalker):
|
|
|
446
447
|
for stmt in node.statements:
|
|
447
448
|
if isinstance(stmt, ailment.Stmt.Assignment):
|
|
448
449
|
if isinstance(stmt.dst, ailment.Expr.Register) and stmt.dst.variable is not None:
|
|
449
|
-
|
|
450
|
+
unified_var = self._u(stmt.dst.variable)
|
|
451
|
+
if unified_var in self._assignments:
|
|
450
452
|
# remove this statement
|
|
451
453
|
continue
|
|
452
454
|
if (
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
import ailment
|
|
5
|
+
|
|
6
|
+
from angr.sim_type import SimTypeBottom
|
|
7
|
+
from angr.calling_conventions import SimRegArg
|
|
8
|
+
from .ailgraph_walker import AILGraphWalker
|
|
9
|
+
|
|
10
|
+
l = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ReturnMaker(AILGraphWalker):
|
|
14
|
+
"""
|
|
15
|
+
Traverse the AILBlock graph of a function and update .ret_exprs of all return statements.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, ail_manager, arch, function, ail_graph):
|
|
19
|
+
super().__init__(ail_graph, self._handler, replace_nodes=True)
|
|
20
|
+
self.ail_manager = ail_manager
|
|
21
|
+
self.arch = arch
|
|
22
|
+
self.function = function
|
|
23
|
+
self._new_block = None
|
|
24
|
+
|
|
25
|
+
self.walk()
|
|
26
|
+
|
|
27
|
+
def _next_atom(self) -> int:
|
|
28
|
+
return self.ail_manager.next_atom()
|
|
29
|
+
|
|
30
|
+
def _handle_Return(
|
|
31
|
+
self, stmt_idx: int, stmt: ailment.Stmt.Return, block: Optional[ailment.Block]
|
|
32
|
+
): # pylint:disable=unused-argument
|
|
33
|
+
if (
|
|
34
|
+
block is not None
|
|
35
|
+
and not stmt.ret_exprs
|
|
36
|
+
and self.function.prototype is not None
|
|
37
|
+
and self.function.prototype.returnty is not None
|
|
38
|
+
and type(self.function.prototype.returnty) is not SimTypeBottom
|
|
39
|
+
):
|
|
40
|
+
new_stmt = stmt.copy()
|
|
41
|
+
ret_val = self.function.calling_convention.return_val(self.function.prototype.returnty)
|
|
42
|
+
if isinstance(ret_val, SimRegArg):
|
|
43
|
+
reg = self.arch.registers[ret_val.reg_name]
|
|
44
|
+
new_stmt.ret_exprs.append(
|
|
45
|
+
ailment.Expr.Register(
|
|
46
|
+
self._next_atom(),
|
|
47
|
+
None,
|
|
48
|
+
reg[0],
|
|
49
|
+
ret_val.size * self.arch.byte_width,
|
|
50
|
+
reg_name=self.arch.translate_register_name(reg[0], ret_val.size),
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
else:
|
|
54
|
+
l.warning("Unsupported type of return expression %s.", type(ret_val))
|
|
55
|
+
new_statements = block.statements[::]
|
|
56
|
+
new_statements[stmt_idx] = new_stmt
|
|
57
|
+
self._new_block = block.copy(statements=new_statements)
|
|
58
|
+
|
|
59
|
+
def _handler(self, block):
|
|
60
|
+
walker = ailment.AILBlockWalker()
|
|
61
|
+
# we don't need to handle any statement besides Returns
|
|
62
|
+
walker.stmt_handlers.clear()
|
|
63
|
+
walker.expr_handlers.clear()
|
|
64
|
+
walker.stmt_handlers[ailment.Stmt.Return] = self._handle_Return
|
|
65
|
+
|
|
66
|
+
self._new_block = None
|
|
67
|
+
walker.walk(block)
|
|
68
|
+
|
|
69
|
+
if self._new_block is not None:
|
|
70
|
+
return self._new_block
|
|
71
|
+
return None
|
angr/lib/angr_native.dylib
CHANGED
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.99
|
|
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
|
|
@@ -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.99
|
|
21
|
+
Requires-Dist: archinfo ==9.2.99
|
|
22
22
|
Requires-Dist: cachetools
|
|
23
23
|
Requires-Dist: capstone ==5.0.0.post1
|
|
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.99
|
|
26
|
+
Requires-Dist: cle ==9.2.99
|
|
27
27
|
Requires-Dist: dpkt
|
|
28
28
|
Requires-Dist: itanium-demangler
|
|
29
29
|
Requires-Dist: mulpyplexer
|
|
@@ -33,7 +33,7 @@ Requires-Dist: protobuf >=3.19.0
|
|
|
33
33
|
Requires-Dist: psutil
|
|
34
34
|
Requires-Dist: pycparser >=2.18
|
|
35
35
|
Requires-Dist: pyformlang
|
|
36
|
-
Requires-Dist: pyvex ==9.2.
|
|
36
|
+
Requires-Dist: pyvex ==9.2.99
|
|
37
37
|
Requires-Dist: rich >=13.1.0
|
|
38
38
|
Requires-Dist: rpyc
|
|
39
39
|
Requires-Dist: sortedcontainers
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=A-YvzHK9UfVTA3SB2oL_4tIS5rdi3MZmTgwbR1xg2SA,3992
|
|
2
2
|
angr/__main__.py,sha256=kaO56Te6h73SM94BVtASF00q5QbBbC3eBs9poVc9sVI,1887
|
|
3
3
|
angr/annocfg.py,sha256=dK5JAdN4Ig_jgxTBZeZXwk3kAS4-IQUvE6T02GBZTDQ,10818
|
|
4
4
|
angr/blade.py,sha256=B8QXVQ93jz1YCIlb-dZLeBqYmVFdMXI5GleP1Wnxjrw,15519
|
|
@@ -65,7 +65,7 @@ angr/analyses/cfg/cfg.py,sha256=1JpPGlqXXRFwE0tk26xjabT_-dq-kqAxMv7o6-DUhp4,3146
|
|
|
65
65
|
angr/analyses/cfg/cfg_arch_options.py,sha256=YONHg6y-h6BCsBkJK9tuxb94DDfeOoy9CUS-LVyyDyg,3112
|
|
66
66
|
angr/analyses/cfg/cfg_base.py,sha256=JOliBFWPDWiIJlV5IUxU2Uf7BjExUNcJCibIlOQKoTs,123056
|
|
67
67
|
angr/analyses/cfg/cfg_emulated.py,sha256=Fi3rDN5ByxhO-H4Y7qn-3WZgBG12JGyvxcWmrD_FnFQ,152842
|
|
68
|
-
angr/analyses/cfg/cfg_fast.py,sha256=
|
|
68
|
+
angr/analyses/cfg/cfg_fast.py,sha256=2qcNkWihXV7M-KrOQv-j7B3m5okEe_7nIzgmZe09GHE,218261
|
|
69
69
|
angr/analyses/cfg/cfg_fast_soot.py,sha256=eA_P-OY3gRRNj2BBgSPMsB_llGyFFCNW3VyGZ2uiMoM,26047
|
|
70
70
|
angr/analyses/cfg/cfg_job_base.py,sha256=3IQE_Iy17xtGfsIkrKc2ERIakAYiNdLtRb_jwOGQtHU,5989
|
|
71
71
|
angr/analyses/cfg/indirect_jump_resolvers/__init__.py,sha256=T2rCpXy_fIoW_kHwZAVZupoj2UljitHvpI2uWJZ8NwU,361
|
|
@@ -96,7 +96,7 @@ angr/analyses/decompiler/block_similarity.py,sha256=x7DTJw6QKrXaPmI0Oxhl2V6rMDhQ
|
|
|
96
96
|
angr/analyses/decompiler/block_simplifier.py,sha256=X5kO97A1bEwSUfbwgj1cSO56qkhwPQZnIFi1DKMZQoo,17199
|
|
97
97
|
angr/analyses/decompiler/call_counter.py,sha256=V3TIaSvLUy9vLEWErnvlCS--_ubGWQAeU0tqq6XYeOU,1205
|
|
98
98
|
angr/analyses/decompiler/callsite_maker.py,sha256=W389gPmq8ylVIr38Re5hEBhaLodipT6div4RlirdnEU,15083
|
|
99
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
99
|
+
angr/analyses/decompiler/clinic.py,sha256=JCW5Trfyc8dmIKQyrTPuj3Jcwil1vaHEvtUDr2H9kdg,85821
|
|
100
100
|
angr/analyses/decompiler/condition_processor.py,sha256=2d6CLDcGa4WqRBVr5NTFZCtJXSuAGlrAM0fGlknE-x4,49596
|
|
101
101
|
angr/analyses/decompiler/decompilation_cache.py,sha256=xj5kzGV6OlTtXIIcvK0Z17TMunggn9ilgKD3wjDiTB0,1176
|
|
102
102
|
angr/analyses/decompiler/decompilation_options.py,sha256=vbuLF0Oze2ldFNpv2jWFnGG4sJPey527KAAbj9TRvAI,8240
|
|
@@ -111,6 +111,7 @@ angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=dcgnXt3oKa
|
|
|
111
111
|
angr/analyses/decompiler/redundant_label_remover.py,sha256=kDGGFWWV61I5fbASiTQTHgDCFLIOkffUdDOsu5yg5ok,5385
|
|
112
112
|
angr/analyses/decompiler/region_identifier.py,sha256=KR4SifhPbPwjrJiW2xQ_64BSdAEUnUTWRUFgHeAMhGc,45489
|
|
113
113
|
angr/analyses/decompiler/region_walker.py,sha256=lTfweYbY4_a2f2yGztTKG6JtU1jXf-kaz-NHbX9nkXE,717
|
|
114
|
+
angr/analyses/decompiler/return_maker.py,sha256=BwxpTtJfVDksZ0Y986KRk9d3jKg98SGaiXXLILeL5Pw,2498
|
|
114
115
|
angr/analyses/decompiler/seq_to_blocks.py,sha256=2KINMEgaXMG3XIiFDMRkbn10dggy7a9AHgwV383huRM,529
|
|
115
116
|
angr/analyses/decompiler/sequence_walker.py,sha256=mw4RG-Act5_no_RyQcsxWZwva-n7FdH2a7w_uItGUpI,8428
|
|
116
117
|
angr/analyses/decompiler/utils.py,sha256=jHTMKKyk4GDkWhJGwmZTl_ZD6efJSr9vtG-cULyzKUc,28116
|
|
@@ -128,7 +129,7 @@ angr/analyses/decompiler/optimization_passes/expr_op_swapper.py,sha256=vlPhWDyvu
|
|
|
128
129
|
angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=GuDDqmZXUo_a9Af30n9tcihNQcATDrztmraZ-88v134,3946
|
|
129
130
|
angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py,sha256=RPxrXnPZoYGQ63eol6Ttfv5s_C-iP7k1Iz_dRCDn6oM,16281
|
|
130
131
|
angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=-6znFCAXS7Z3cn5CTqr3mg4r1G_jJgDFJHk2PzMVwtE,7756
|
|
131
|
-
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=
|
|
132
|
+
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=vjDRO-Rh5LVIlxGRCuggjcz12CIxQuISB0LCC-vF6ZM,7207
|
|
132
133
|
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=9hhCcvE15MCM6KoJU1ba11hFiN6MXxYAb9FbntzYJbg,34328
|
|
133
134
|
angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=o2AZIpj4NpOAaWOGbudDUfGJJAD2exu-HvNbwph3mi8,3124
|
|
134
135
|
angr/analyses/decompiler/optimization_passes/multi_simplifier.py,sha256=_63Y2vMNLSXYM6_Grfs89Nu63i5YLxTPmxTR_Z6fwLY,10420
|
|
@@ -191,7 +192,7 @@ angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=OTdxZB
|
|
|
191
192
|
angr/analyses/decompiler/region_simplifiers/__init__.py,sha256=ZeURg5mKbKRpwo8-SqxJ0jy_A6nNpZMxiKpjZJ0_RS0,48
|
|
192
193
|
angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py,sha256=4oRjmKwk9tSxUSOTTDGLVM7prp1aTrQOUpNuQ1gfMrA,3721
|
|
193
194
|
angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=dbAn1fde1-kiF6A9060wEqPKcE3DeBd2Ltt_2UAEdo4,2490
|
|
194
|
-
angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=
|
|
195
|
+
angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=cTwQHsUz0OyWQwcrTnoIlz2i_H5-xUZfS0Ot1EKrJZE,24126
|
|
195
196
|
angr/analyses/decompiler/region_simplifiers/goto.py,sha256=b8602yf_WcTJXYyKEqh8Wuenwyatxqq-zGIhDPwJnE0,6032
|
|
196
197
|
angr/analyses/decompiler/region_simplifiers/if_.py,sha256=qDkZTrRjDzI4CX6vwEcaddmaPvG4sWHn373VVwmf0e0,5034
|
|
197
198
|
angr/analyses/decompiler/region_simplifiers/ifelse.py,sha256=nWUow7p_TOgFQuUgWXQcH2qSFfxUWJBgkslvajhTbn0,3681
|
|
@@ -484,7 +485,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=-5A2h048WTRu6Et7q7bqlc-AyBXNuJ9A
|
|
|
484
485
|
angr/knowledge_plugins/xrefs/xref.py,sha256=w4wjDFl4xtJYOtJplp9s1AIX3wI1RE71po3ufh1M4aY,4963
|
|
485
486
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=OLHEmgwGbFYWhm6oMgglPQ8Fe7rAvKicFeyQoGqSylc,4009
|
|
486
487
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=VR3xLQQ-gUg25oX0OL3BJHyQRlZh2A8syBac9ZMS9n4,271
|
|
487
|
-
angr/lib/angr_native.dylib,sha256=
|
|
488
|
+
angr/lib/angr_native.dylib,sha256=j_WWiDFF4crczoDzEd8K5J4hKAoFp9-M6baDkLPDlm8,18589760
|
|
488
489
|
angr/misc/__init__.py,sha256=Ct-Q6-c-Frdz5Ihkqmou3j_1jyJi8WJXlQxs-gPQg0Y,237
|
|
489
490
|
angr/misc/ansi.py,sha256=TKrx7d_MViChHh5RBR2VLufNrujTUioJWsZS5ugk8k4,807
|
|
490
491
|
angr/misc/autoimport.py,sha256=K64D53xl3xUqBulXAyaypzqYRBjjm4HDn6TlJsBouKw,3426
|
|
@@ -1288,9 +1289,9 @@ angr/utils/mp.py,sha256=EPeBml7i1HNOg9OFvj-hoqaGJzKD4fKyM-mHWIaJ3Ko,1825
|
|
|
1288
1289
|
angr/utils/segment_list.py,sha256=lhGy16YKKaD-F0JtWmjJ6a2RFcdTrKcLfPE9ILRVtCs,20431
|
|
1289
1290
|
angr/utils/timing.py,sha256=uOowCP8kotDrKDOjlAod-guBuYkAA8zEtiAwpdwMlIU,1334
|
|
1290
1291
|
angr/utils/typing.py,sha256=_I4dzZSh1_uRKQ3PpjXseA_CaJH6ru2yAxjICkJhfmI,417
|
|
1291
|
-
angr-9.2.
|
|
1292
|
-
angr-9.2.
|
|
1293
|
-
angr-9.2.
|
|
1294
|
-
angr-9.2.
|
|
1295
|
-
angr-9.2.
|
|
1296
|
-
angr-9.2.
|
|
1292
|
+
angr-9.2.99.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
|
|
1293
|
+
angr-9.2.99.dist-info/METADATA,sha256=pDpfAvlHP9K2NuxdbBeYBzXuDjDgZwAiIjRx7CcKwgY,4796
|
|
1294
|
+
angr-9.2.99.dist-info/WHEEL,sha256=YBuZgLbEquNCbbbQPlLFm_OOe1fPwf91V3LBhwgnks4,107
|
|
1295
|
+
angr-9.2.99.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
1296
|
+
angr-9.2.99.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
1297
|
+
angr-9.2.99.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|