angr 9.2.126__py3-none-macosx_11_0_arm64.whl → 9.2.128__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/analysis.py +8 -2
- angr/analyses/cfg/cfg_fast.py +12 -1
- angr/analyses/decompiler/clinic.py +23 -2
- angr/analyses/decompiler/condition_processor.py +5 -7
- angr/analyses/decompiler/decompilation_cache.py +4 -0
- angr/analyses/decompiler/decompiler.py +36 -7
- angr/analyses/decompiler/dephication/graph_vvar_mapping.py +1 -2
- angr/analyses/decompiler/graph_region.py +3 -6
- angr/analyses/decompiler/label_collector.py +32 -0
- angr/analyses/decompiler/optimization_passes/__init__.py +3 -0
- angr/analyses/decompiler/optimization_passes/optimization_pass.py +6 -3
- angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +41 -3
- angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py +102 -0
- angr/analyses/decompiler/presets/basic.py +2 -0
- angr/analyses/decompiler/presets/fast.py +2 -0
- angr/analyses/decompiler/presets/full.py +2 -0
- angr/analyses/decompiler/region_identifier.py +8 -8
- angr/analyses/decompiler/ssailification/traversal.py +1 -0
- angr/analyses/decompiler/ssailification/traversal_engine.py +15 -0
- angr/analyses/decompiler/structured_codegen/c.py +0 -3
- angr/analyses/decompiler/structured_codegen/dwarf_import.py +4 -1
- angr/analyses/decompiler/structuring/phoenix.py +131 -31
- angr/analyses/decompiler/structuring/recursive_structurer.py +3 -1
- angr/analyses/decompiler/structuring/structurer_base.py +33 -1
- angr/analyses/reaching_definitions/function_handler_library/string.py +2 -2
- angr/analyses/s_liveness.py +3 -3
- angr/analyses/s_propagator.py +74 -3
- angr/angrdb/models.py +2 -1
- angr/angrdb/serializers/kb.py +3 -3
- angr/angrdb/serializers/structured_code.py +5 -3
- angr/calling_conventions.py +1 -1
- angr/knowledge_base.py +1 -1
- angr/knowledge_plugins/__init__.py +0 -2
- angr/knowledge_plugins/structured_code.py +1 -1
- angr/lib/angr_native.dylib +0 -0
- angr/utils/ssa/__init__.py +8 -3
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/METADATA +6 -6
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/RECORD +43 -42
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/WHEEL +1 -1
- angr/knowledge_plugins/decompilation.py +0 -45
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/LICENSE +0 -0
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/entry_points.txt +0 -0
- {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/top_level.txt +0 -0
angr/analyses/s_liveness.py
CHANGED
|
@@ -5,7 +5,7 @@ from ailment.expression import VirtualVariable
|
|
|
5
5
|
from ailment.statement import Assignment
|
|
6
6
|
|
|
7
7
|
from angr.analyses import Analysis, register_analysis
|
|
8
|
-
from angr.utils.ssa import
|
|
8
|
+
from angr.utils.ssa import VVarUsesCollector, phi_assignment_get_src
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class SLivenessModel:
|
|
@@ -85,8 +85,8 @@ class SLivenessAnalysis(Analysis):
|
|
|
85
85
|
if isinstance(stmt, Assignment) and isinstance(stmt.dst, VirtualVariable):
|
|
86
86
|
live.discard(stmt.dst.varid)
|
|
87
87
|
|
|
88
|
-
|
|
89
|
-
if
|
|
88
|
+
phi_expr = phi_assignment_get_src(stmt)
|
|
89
|
+
if phi_expr is not None:
|
|
90
90
|
for src, vvar in phi_expr.src_and_vvars:
|
|
91
91
|
if src not in live_in_by_pred:
|
|
92
92
|
live_in_by_pred[src] = live.copy()
|
angr/analyses/s_propagator.py
CHANGED
|
@@ -4,7 +4,7 @@ import contextlib
|
|
|
4
4
|
from collections import defaultdict
|
|
5
5
|
|
|
6
6
|
from ailment.block import Block
|
|
7
|
-
from ailment.expression import Const, VirtualVariable, VirtualVariableCategory, StackBaseOffset
|
|
7
|
+
from ailment.expression import Const, VirtualVariable, VirtualVariableCategory, StackBaseOffset, Load, Convert
|
|
8
8
|
from ailment.statement import Assignment, Store, Return, Jump
|
|
9
9
|
|
|
10
10
|
from angr.knowledge_plugins.functions import Function
|
|
@@ -21,6 +21,7 @@ from angr.utils.ssa import (
|
|
|
21
21
|
is_const_vvar_tmp_assignment,
|
|
22
22
|
get_tmp_uselocs,
|
|
23
23
|
get_tmp_deflocs,
|
|
24
|
+
phi_assignment_get_src,
|
|
24
25
|
)
|
|
25
26
|
|
|
26
27
|
|
|
@@ -129,8 +130,8 @@ class SPropagatorAnalysis(Analysis):
|
|
|
129
130
|
replacements[useloc][vvar_at_use] = v
|
|
130
131
|
continue
|
|
131
132
|
|
|
132
|
-
|
|
133
|
-
if
|
|
133
|
+
v = phi_assignment_get_src(stmt)
|
|
134
|
+
if v is not None:
|
|
134
135
|
src_varids = {vvar.varid if vvar is not None else None for _, vvar in v.src_and_vvars}
|
|
135
136
|
if None not in src_varids and all(varid in const_vvars for varid in src_varids):
|
|
136
137
|
src_values = {
|
|
@@ -182,6 +183,31 @@ class SPropagatorAnalysis(Analysis):
|
|
|
182
183
|
# this vvar is used once if we exclude its uses at ret sites or jump sites. we can propagate it
|
|
183
184
|
for vvar_used, vvar_useloc in vvar_uselocs[vvar.varid]:
|
|
184
185
|
replacements[vvar_useloc][vvar_used] = stmt.src
|
|
186
|
+
continue
|
|
187
|
+
|
|
188
|
+
# special logic for global variables: if it's used once or multiple times, and the variable is never
|
|
189
|
+
# updated before it's used, we will propagate the load
|
|
190
|
+
if isinstance(stmt, Assignment):
|
|
191
|
+
stmt_src = stmt.src
|
|
192
|
+
# unpack conversions
|
|
193
|
+
while isinstance(stmt_src, Convert):
|
|
194
|
+
stmt_src = stmt_src.operand
|
|
195
|
+
if isinstance(stmt_src, Load) and isinstance(stmt_src.addr, Const):
|
|
196
|
+
gv_updated = False
|
|
197
|
+
for vvar_used, vvar_useloc in vvar_uselocs[vvar.varid]:
|
|
198
|
+
gv_updated |= self.is_global_variable_updated(
|
|
199
|
+
self.func_graph,
|
|
200
|
+
blocks,
|
|
201
|
+
vvar.varid,
|
|
202
|
+
stmt_src.addr.value,
|
|
203
|
+
stmt_src.size,
|
|
204
|
+
defloc,
|
|
205
|
+
vvar_useloc,
|
|
206
|
+
)
|
|
207
|
+
if not gv_updated:
|
|
208
|
+
for vvar_used, vvar_useloc in vvar_uselocs[vvar.varid]:
|
|
209
|
+
replacements[vvar_useloc][vvar_used] = stmt.src
|
|
210
|
+
continue
|
|
185
211
|
|
|
186
212
|
for vvar_id, uselocs in vvar_uselocs.items():
|
|
187
213
|
vvar = next(iter(uselocs))[0] if vvar_id not in vvarid_to_vvar else vvarid_to_vvar[vvar_id]
|
|
@@ -257,5 +283,50 @@ class SPropagatorAnalysis(Analysis):
|
|
|
257
283
|
|
|
258
284
|
self.model.replacements = replacements
|
|
259
285
|
|
|
286
|
+
@staticmethod
|
|
287
|
+
def is_global_variable_updated(
|
|
288
|
+
func_graph, block_dict, varid: int, gv_addr: int, gv_size: int, defloc: CodeLocation, useloc: CodeLocation
|
|
289
|
+
) -> bool:
|
|
290
|
+
defblock = block_dict[(defloc.block_addr, defloc.block_idx)]
|
|
291
|
+
useblock = block_dict[(useloc.block_addr, useloc.block_idx)]
|
|
292
|
+
|
|
293
|
+
# traverse a graph slice from the def block to the use block and check if the global variable is updated
|
|
294
|
+
seen = {defblock}
|
|
295
|
+
queue = [defblock]
|
|
296
|
+
while queue:
|
|
297
|
+
block = queue.pop(0)
|
|
298
|
+
|
|
299
|
+
start_stmt_idx = defloc.stmt_idx if block is defblock else 0 # inclusive
|
|
300
|
+
end_stmt_idx = useloc.stmt_idx if block is useblock else len(block.statements) # exclusive
|
|
301
|
+
|
|
302
|
+
for idx in range(start_stmt_idx, end_stmt_idx):
|
|
303
|
+
stmt = block.statements[idx]
|
|
304
|
+
if isinstance(stmt, Store) and isinstance(stmt.addr, Const):
|
|
305
|
+
store_addr = stmt.addr.value
|
|
306
|
+
store_size = stmt.size
|
|
307
|
+
if gv_addr <= store_addr < gv_addr + gv_size or store_addr <= gv_addr < store_addr + store_size:
|
|
308
|
+
return True
|
|
309
|
+
|
|
310
|
+
if block is useblock:
|
|
311
|
+
continue
|
|
312
|
+
|
|
313
|
+
for succ in func_graph.successors(block):
|
|
314
|
+
if succ not in seen:
|
|
315
|
+
abort_path = False
|
|
316
|
+
for stmt in succ.statements:
|
|
317
|
+
if is_phi_assignment(stmt) and any(
|
|
318
|
+
vvar.varid == varid for _, vvar in stmt.src.src_and_vvars if vvar is not None
|
|
319
|
+
):
|
|
320
|
+
# the virtual variable is no longer live after this point
|
|
321
|
+
abort_path = True
|
|
322
|
+
break
|
|
323
|
+
if abort_path:
|
|
324
|
+
continue
|
|
325
|
+
|
|
326
|
+
seen.add(succ)
|
|
327
|
+
queue.append(succ)
|
|
328
|
+
|
|
329
|
+
return False
|
|
330
|
+
|
|
260
331
|
|
|
261
332
|
register_analysis(SPropagatorAnalysis, "SPropagator")
|
angr/angrdb/models.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
|
-
from sqlalchemy import Column, Integer, String, Boolean, BLOB, ForeignKey
|
|
2
|
+
from sqlalchemy import Column, Integer, String, Boolean, BLOB, TEXT, ForeignKey
|
|
3
3
|
from sqlalchemy.orm import declarative_base, relationship
|
|
4
4
|
|
|
5
5
|
Base = declarative_base()
|
|
@@ -127,6 +127,7 @@ class DbStructuredCode(Base):
|
|
|
127
127
|
configuration = Column(BLOB, nullable=True)
|
|
128
128
|
const_formats = Column(BLOB, nullable=True)
|
|
129
129
|
ite_exprs = Column(BLOB, nullable=True)
|
|
130
|
+
errors = Column(TEXT, nullable=True)
|
|
130
131
|
|
|
131
132
|
|
|
132
133
|
class DbXRefs(Base):
|
angr/angrdb/serializers/kb.py
CHANGED
|
@@ -16,7 +16,7 @@ class KnowledgeBaseSerializer:
|
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
@staticmethod
|
|
19
|
-
def dump(session, kb):
|
|
19
|
+
def dump(session, kb: KnowledgeBase):
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
22
|
:param session: The database session object.
|
|
@@ -40,7 +40,7 @@ class KnowledgeBaseSerializer:
|
|
|
40
40
|
CommentsSerializer.dump(session, db_kb, kb.comments)
|
|
41
41
|
LabelsSerializer.dump(session, db_kb, kb.labels)
|
|
42
42
|
VariableManagerSerializer.dump(session, db_kb, kb.variables)
|
|
43
|
-
StructuredCodeManagerSerializer.dump(session, db_kb, kb.
|
|
43
|
+
StructuredCodeManagerSerializer.dump(session, db_kb, kb.decompilations)
|
|
44
44
|
|
|
45
45
|
@staticmethod
|
|
46
46
|
def load(session, project, name):
|
|
@@ -89,7 +89,7 @@ class KnowledgeBaseSerializer:
|
|
|
89
89
|
# Load structured code
|
|
90
90
|
structured_code = StructuredCodeManagerSerializer.load(session, db_kb, kb)
|
|
91
91
|
if structured_code is not None:
|
|
92
|
-
kb.
|
|
92
|
+
kb.decompilations = structured_code
|
|
93
93
|
|
|
94
94
|
if cfg_model is not None:
|
|
95
95
|
# CFG may not exist for all knowledge bases
|
|
@@ -37,15 +37,15 @@ class StructuredCodeManagerSerializer:
|
|
|
37
37
|
# TODO: Cache types
|
|
38
38
|
|
|
39
39
|
expr_comments = None
|
|
40
|
-
if cache.codegen.expr_comments:
|
|
40
|
+
if cache.codegen is not None and cache.codegen.expr_comments:
|
|
41
41
|
expr_comments = json.dumps(cache.codegen.expr_comments).encode("utf-8")
|
|
42
42
|
|
|
43
43
|
stmt_comments = None
|
|
44
|
-
if cache.codegen.stmt_comments:
|
|
44
|
+
if cache.codegen is not None and cache.codegen.stmt_comments:
|
|
45
45
|
stmt_comments = json.dumps(cache.codegen.stmt_comments).encode("utf-8")
|
|
46
46
|
|
|
47
47
|
const_formats = None
|
|
48
|
-
if cache.codegen.const_formats:
|
|
48
|
+
if cache.codegen is not None and cache.codegen.const_formats:
|
|
49
49
|
const_formats = pickle.dumps(cache.codegen.const_formats)
|
|
50
50
|
|
|
51
51
|
ite_exprs = None
|
|
@@ -60,6 +60,7 @@ class StructuredCodeManagerSerializer:
|
|
|
60
60
|
stmt_comments=stmt_comments,
|
|
61
61
|
const_formats=const_formats,
|
|
62
62
|
ite_exprs=ite_exprs,
|
|
63
|
+
errors="\n\n\n".join(cache.errors),
|
|
63
64
|
# configuration=configuration,
|
|
64
65
|
)
|
|
65
66
|
session.add(db_code)
|
|
@@ -118,6 +119,7 @@ class StructuredCodeManagerSerializer:
|
|
|
118
119
|
cache = DecompilationCache(db_code.func_addr)
|
|
119
120
|
cache.codegen = dummy_codegen
|
|
120
121
|
cache.ite_exprs = ite_exprs
|
|
122
|
+
cache.errors = db_code.errors.split("\n\n\n")
|
|
121
123
|
manager[(db_code.func_addr, db_code.flavor)] = cache
|
|
122
124
|
|
|
123
125
|
return manager
|
angr/calling_conventions.py
CHANGED
|
@@ -1654,7 +1654,7 @@ class SimCCAMD64WindowsSyscall(SimCCSyscall):
|
|
|
1654
1654
|
class SimCCARM(SimCC):
|
|
1655
1655
|
ARG_REGS = ["r0", "r1", "r2", "r3"]
|
|
1656
1656
|
FP_ARG_REGS = [] # regular arg regs are used as fp arg regs
|
|
1657
|
-
CALLER_SAVED_REGS = []
|
|
1657
|
+
CALLER_SAVED_REGS = ["r0", "r1", "r2", "r3"]
|
|
1658
1658
|
RETURN_ADDR = SimRegArg("lr", 4)
|
|
1659
1659
|
RETURN_VAL = SimRegArg("r0", 4)
|
|
1660
1660
|
OVERFLOW_RETURN_VAL = SimRegArg("r1", 4)
|
angr/knowledge_base.py
CHANGED
|
@@ -35,13 +35,13 @@ class KnowledgeBase:
|
|
|
35
35
|
|
|
36
36
|
functions: FunctionManager
|
|
37
37
|
variables: VariableManager
|
|
38
|
-
structured_code: StructuredCodeManager
|
|
39
38
|
defs: KeyDefinitionManager
|
|
40
39
|
cfgs: CFGManager
|
|
41
40
|
_project: Project
|
|
42
41
|
types: TypesStore
|
|
43
42
|
propagations: PropagationManager
|
|
44
43
|
xrefs: XRefManager
|
|
44
|
+
decompilations: StructuredCodeManager
|
|
45
45
|
|
|
46
46
|
def __init__(self, project, obj=None, name=None):
|
|
47
47
|
if obj is not None:
|
|
@@ -17,7 +17,6 @@ from .structured_code import StructuredCodeManager
|
|
|
17
17
|
from .types import TypesStore
|
|
18
18
|
from .callsite_prototypes import CallsitePrototypes
|
|
19
19
|
from .custom_strings import CustomStrings
|
|
20
|
-
from .decompilation import DecompilationManager
|
|
21
20
|
from .obfuscations import Obfuscations
|
|
22
21
|
|
|
23
22
|
|
|
@@ -40,6 +39,5 @@ __all__ = (
|
|
|
40
39
|
"TypesStore",
|
|
41
40
|
"CallsitePrototypes",
|
|
42
41
|
"CustomStrings",
|
|
43
|
-
"DecompilationManager",
|
|
44
42
|
"Obfuscations",
|
|
45
43
|
)
|
angr/lib/angr_native.dylib
CHANGED
|
Binary file
|
angr/utils/ssa/__init__.py
CHANGED
|
@@ -178,10 +178,14 @@ def is_const_vvar_load_dirty_assignment(stmt: Statement) -> bool:
|
|
|
178
178
|
return False
|
|
179
179
|
|
|
180
180
|
|
|
181
|
-
def is_phi_assignment(stmt: Statement) ->
|
|
181
|
+
def is_phi_assignment(stmt: Statement) -> bool:
|
|
182
|
+
return isinstance(stmt, Assignment) and isinstance(stmt.src, Phi)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def phi_assignment_get_src(stmt: Statement) -> Phi | None:
|
|
182
186
|
if isinstance(stmt, Assignment) and isinstance(stmt.src, Phi):
|
|
183
|
-
return
|
|
184
|
-
return
|
|
187
|
+
return stmt.src
|
|
188
|
+
return None
|
|
185
189
|
|
|
186
190
|
|
|
187
191
|
__all__ = (
|
|
@@ -190,6 +194,7 @@ __all__ = (
|
|
|
190
194
|
"get_vvar_uselocs",
|
|
191
195
|
"is_const_assignment",
|
|
192
196
|
"is_phi_assignment",
|
|
197
|
+
"phi_assignment_get_src",
|
|
193
198
|
"is_const_and_vvar_assignment",
|
|
194
199
|
"is_const_vvar_load_assignment",
|
|
195
200
|
"is_const_vvar_load_dirty_assignment",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.128
|
|
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
|
|
@@ -16,13 +16,13 @@ Description-Content-Type: text/markdown
|
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
Requires-Dist: CppHeaderParser
|
|
18
18
|
Requires-Dist: GitPython
|
|
19
|
-
Requires-Dist: ailment==9.2.
|
|
20
|
-
Requires-Dist: archinfo==9.2.
|
|
19
|
+
Requires-Dist: ailment==9.2.128
|
|
20
|
+
Requires-Dist: archinfo==9.2.128
|
|
21
21
|
Requires-Dist: cachetools
|
|
22
22
|
Requires-Dist: capstone==5.0.3
|
|
23
23
|
Requires-Dist: cffi>=1.14.0
|
|
24
|
-
Requires-Dist: claripy==9.2.
|
|
25
|
-
Requires-Dist: cle==9.2.
|
|
24
|
+
Requires-Dist: claripy==9.2.128
|
|
25
|
+
Requires-Dist: cle==9.2.128
|
|
26
26
|
Requires-Dist: itanium-demangler
|
|
27
27
|
Requires-Dist: mulpyplexer
|
|
28
28
|
Requires-Dist: nampa
|
|
@@ -31,7 +31,7 @@ Requires-Dist: protobuf>=5.28.2
|
|
|
31
31
|
Requires-Dist: psutil
|
|
32
32
|
Requires-Dist: pycparser>=2.18
|
|
33
33
|
Requires-Dist: pyformlang
|
|
34
|
-
Requires-Dist: pyvex==9.2.
|
|
34
|
+
Requires-Dist: pyvex==9.2.128
|
|
35
35
|
Requires-Dist: rich>=13.1.0
|
|
36
36
|
Requires-Dist: sortedcontainers
|
|
37
37
|
Requires-Dist: sympy
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=ytV3MRTukLbYI2A4Ge6uSfkOLZka9s_y8R41PJE1kJs,9153
|
|
2
2
|
angr/__main__.py,sha256=XeawhF6Cco9eWcfMTDWzYYggLB3qjnQ87IIeFOplaHM,2873
|
|
3
3
|
angr/annocfg.py,sha256=5fiS9TPt5r1_8g_qSfD2XkETlBdm5MTClBIQKqhm040,10624
|
|
4
4
|
angr/blade.py,sha256=GpbEumxMsb_6qD7TbtfZuW2CMzV7W1iwqYzQWYlXnxM,15394
|
|
5
5
|
angr/block.py,sha256=O5kFpofRMVlCqdG-6E53UEti7bGtIcqqx6fvyWDPu58,14975
|
|
6
6
|
angr/callable.py,sha256=1rzhXjWlx62jKJaRKHvp12rbsJ75zNa86vXtCt6eFLo,6065
|
|
7
|
-
angr/calling_conventions.py,sha256=
|
|
7
|
+
angr/calling_conventions.py,sha256=oBgMwDZBVqKYcLa9w96Brn32s06Ffuru3fd2V7gFI_0,92972
|
|
8
8
|
angr/code_location.py,sha256=JpxnEa-FbQIloGwrGa4SyZlA6La_DsvHNt4WMh7lMMY,5466
|
|
9
9
|
angr/codenode.py,sha256=z-XdQh20yl_exg5H4Ep62Kw2lb3ce8od_IaEHw2v-D8,3793
|
|
10
10
|
angr/errors.py,sha256=I0L-TbxmVYIkC-USuHwaQ9BGPi2YVObnhZXQQ3kJFuo,8385
|
|
11
11
|
angr/factory.py,sha256=YMieuzZk70g96BcqgUT0vZxemDlQh0WvjzoxZgduZj0,17453
|
|
12
12
|
angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
angr/keyed_region.py,sha256=bi4xQYh3Is4t5LuFykgVDaaPpko0s4kEmDUEsGsJuPM,17992
|
|
14
|
-
angr/knowledge_base.py,sha256=
|
|
14
|
+
angr/knowledge_base.py,sha256=cvMTebMzLwTdvYCALxGDK1mj3PRf-CJWfI0GFOUDNxo,4537
|
|
15
15
|
angr/project.py,sha256=TQUXF1qyKpYjAs0gY2abwwhSwxLj67IeHlwQC-9ylcY,37535
|
|
16
16
|
angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
17
17
|
angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
|
|
@@ -27,7 +27,7 @@ angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
|
|
|
27
27
|
angr/tablespecs.py,sha256=Kx1e87FxTx3_ZN7cAHWZSRpdInT4Vfj5gExAWtLkLTw,3259
|
|
28
28
|
angr/vaults.py,sha256=v_RBKEGN2wkyOoskC_akKSlawcRtMicukKh1O1hxrJk,9719
|
|
29
29
|
angr/analyses/__init__.py,sha256=wchoQKOTR2QWB-5Gk-cNI4Zi5510LPZcBjcDp9PiIOw,3434
|
|
30
|
-
angr/analyses/analysis.py,sha256=
|
|
30
|
+
angr/analyses/analysis.py,sha256=upfeqlRt9mePT1io8FvV_rREdGrjZOROoERmqjqHv30,14872
|
|
31
31
|
angr/analyses/backward_slice.py,sha256=pLMeo7Y2niifNmtfIzMbQDlRy_w5GbKi1sYa0XVhPBA,27228
|
|
32
32
|
angr/analyses/binary_optimizer.py,sha256=JqKfOXx5FiWsYdQ6JMWYivfB2AiNl2Pw8Utk8kPEVrk,26186
|
|
33
33
|
angr/analyses/bindiff.py,sha256=ZAnBeB4-0sGRZ494MTjM6NrNXL33YWcXw2bHZRBqY8M,51431
|
|
@@ -54,8 +54,8 @@ angr/analyses/patchfinder.py,sha256=i0TJmBwNlFKJYpG04YpU6yFBdZlNAuzj3VwM28jfnW0,
|
|
|
54
54
|
angr/analyses/pathfinder.py,sha256=_prNqmRUSuSt2ZCP8qbvNN7pw7mtM8pWr9IL0AO6XL8,11496
|
|
55
55
|
angr/analyses/proximity_graph.py,sha256=-g7pNpbP2HQhKW3w1Eff23K8vAsgWWYoe3wVxRh3Lhk,16066
|
|
56
56
|
angr/analyses/reassembler.py,sha256=y41XIGWqCVvwFlE3uACEMFLR-vByKkOazC405UPCOpM,98524
|
|
57
|
-
angr/analyses/s_liveness.py,sha256=
|
|
58
|
-
angr/analyses/s_propagator.py,sha256=
|
|
57
|
+
angr/analyses/s_liveness.py,sha256=TQ_Er-6nQXZZU-tp_LNUXPbZeVCyR_QtVofpPLo8DU4,5239
|
|
58
|
+
angr/analyses/s_propagator.py,sha256=7iyYX_MW6ljpd5BPjALIYcFmcjHzOW_BcmZLaO4YPQQ,14634
|
|
59
59
|
angr/analyses/smc.py,sha256=0fvLPUpjlg6GCjYnfSqanXkGYlthmPwqMYR-ZYBHsbo,5075
|
|
60
60
|
angr/analyses/soot_class_hierarchy.py,sha256=AtvXMAlz6CVvfbtkPY4ghouH_1mNnPg9s9jFhZwWvEw,8741
|
|
61
61
|
angr/analyses/stack_pointer_tracker.py,sha256=5NZf4muUFIJX-F605n5LMw8ihA648-FA4Bm5mAcsHBE,31379
|
|
@@ -71,7 +71,7 @@ angr/analyses/cfg/cfg.py,sha256=ZHZFWtP4uD1YxgKy44O_oD_BiSo871Llcd1zpXmFkBE,3177
|
|
|
71
71
|
angr/analyses/cfg/cfg_arch_options.py,sha256=QpC_sonf0eODcIxWtjVrW6E-gFRGvvdataqGEp9DFFI,3142
|
|
72
72
|
angr/analyses/cfg/cfg_base.py,sha256=CIVnGRf8zDUK-lu4Ovm0joPn9pRNjijilSUX585MteA,122866
|
|
73
73
|
angr/analyses/cfg/cfg_emulated.py,sha256=BK80J79mEyg2RlDo-ikuQkW2VePuquY3kkSCA2YwDw4,152255
|
|
74
|
-
angr/analyses/cfg/cfg_fast.py,sha256=
|
|
74
|
+
angr/analyses/cfg/cfg_fast.py,sha256=QE28ijb8Kk5FIRhOocjve0Qw_ouzgDtMgchYzF0cr9A,222452
|
|
75
75
|
angr/analyses/cfg/cfg_fast_soot.py,sha256=3ImLNg04hssYTQYm2ZcKXoc5E30LxFrPDA0MQblpn6k,25913
|
|
76
76
|
angr/analyses/cfg/cfg_job_base.py,sha256=Zshze972MakTsd-licQz77lac17igQaaTsAteHeHhYQ,5974
|
|
77
77
|
angr/analyses/cfg/indirect_jump_resolvers/__init__.py,sha256=EXzMcZH1DBZ-jBLJcYThR0fmWAlJmqhesZNBh_2SlCk,691
|
|
@@ -102,19 +102,20 @@ angr/analyses/decompiler/block_io_finder.py,sha256=xMwG8Bi69OGNYVs0U0F4yxM8kEsny
|
|
|
102
102
|
angr/analyses/decompiler/block_similarity.py,sha256=ISMoOm-TGJ_1wD2i_4m8IYTletgnP66gReQESJnfvS0,6873
|
|
103
103
|
angr/analyses/decompiler/block_simplifier.py,sha256=_WYyfFW8bJ_-RkrudJIlDdHh9fc6_aHkuwzW9gylY-k,13922
|
|
104
104
|
angr/analyses/decompiler/callsite_maker.py,sha256=Gs_FmlmIs5jM-XccL9OMCaj_-L83NlYzkzxsy2HmcfQ,18749
|
|
105
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
106
|
-
angr/analyses/decompiler/condition_processor.py,sha256=
|
|
107
|
-
angr/analyses/decompiler/decompilation_cache.py,sha256=
|
|
105
|
+
angr/analyses/decompiler/clinic.py,sha256=Psy7ljBDFOqYx_Al8xvDPe3naJi8YsdMryXo8wVlrhM,106999
|
|
106
|
+
angr/analyses/decompiler/condition_processor.py,sha256=MbpbSk6zXHmMLWjLAHxpYjcLCVL1TuL08KmTBTNpm_4,52839
|
|
107
|
+
angr/analyses/decompiler/decompilation_cache.py,sha256=ELz1DDVYvrs6IeUX4_L0OZDZICUifSBdJkdJXWrFZAY,1375
|
|
108
108
|
angr/analyses/decompiler/decompilation_options.py,sha256=QWUGnfQ0FUekGs_I6X-ZKvAvL39VX2hFRcZrlXd72fY,7957
|
|
109
|
-
angr/analyses/decompiler/decompiler.py,sha256=
|
|
109
|
+
angr/analyses/decompiler/decompiler.py,sha256=BF859tVg7IWwEnarW30dXoQYHXco3lngTh0vx7Q5Je8,28672
|
|
110
110
|
angr/analyses/decompiler/empty_node_remover.py,sha256=_RAGjqDyRmannEGPcMmWkL7em990-_sKgl5CYreb-yI,7403
|
|
111
111
|
angr/analyses/decompiler/expression_narrower.py,sha256=TvkqtgNI9aDsquqyNFH5kXLW04rP_J940GFhrGopxP4,10343
|
|
112
112
|
angr/analyses/decompiler/goto_manager.py,sha256=GUWt3Y_NCpmreIt4plxX5Y3UO2V8IVGZuRtF2GqI-cw,4006
|
|
113
|
-
angr/analyses/decompiler/graph_region.py,sha256=
|
|
113
|
+
angr/analyses/decompiler/graph_region.py,sha256=KFJ_8qCn0bbjPO1l0D2-eVqRzkgiLNpxiynhWHhtxdA,16538
|
|
114
114
|
angr/analyses/decompiler/jump_target_collector.py,sha256=qR11VsIp6H1N-19xCdXMRs1LGX31o3_Cz1Z5wRyMIl8,1173
|
|
115
115
|
angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=f_JyNiSZfoudElfl2kIzONoYCiosR4xYFOe8Q5SkvLg,2176
|
|
116
|
+
angr/analyses/decompiler/label_collector.py,sha256=JLaGuSZu-DdJMBTYOPt4QpWJ6UigOpsC5bgNANrSao4,798
|
|
116
117
|
angr/analyses/decompiler/redundant_label_remover.py,sha256=J9hpP3C_P08v84FjVU0q5Rmj5M1N9q3HKWSWsA2u7Yg,5879
|
|
117
|
-
angr/analyses/decompiler/region_identifier.py,sha256=
|
|
118
|
+
angr/analyses/decompiler/region_identifier.py,sha256=DGxaIc3cy-NYxKeZgMO_BuybQvI86XXxNX88Ya6elAw,47396
|
|
118
119
|
angr/analyses/decompiler/region_walker.py,sha256=u0hR0bEX1hSwkv-vejIM1gS-hcX2F2DLsDqpKhQ5_pQ,752
|
|
119
120
|
angr/analyses/decompiler/return_maker.py,sha256=pKn9_y5VXqTeJnD5uzLLd9sH_Dp_9wkPcWPiJPTV-7A,2550
|
|
120
121
|
angr/analyses/decompiler/seq_to_blocks.py,sha256=bB-1m8oBO59AlAp6izAROks3BBxFW8zigLlrIMt6Yfs,564
|
|
@@ -132,10 +133,10 @@ angr/analyses/decompiler/dephication/__init__.py,sha256=0Ufg3SSL7VkKBn-sfMZg2XRA
|
|
|
132
133
|
angr/analyses/decompiler/dephication/dephication_base.py,sha256=UToP1wF9814qxzJpQcqGljYlOkYA7mwvLveGn41089o,3132
|
|
133
134
|
angr/analyses/decompiler/dephication/graph_dephication.py,sha256=xjm_OrWgcuDIoDCEAhbW4xGzCHwOPw9ya8IroZH3qf4,2169
|
|
134
135
|
angr/analyses/decompiler/dephication/graph_rewriting.py,sha256=R0rlwYL0Cnt1UPjdEJZG4kEvruKPr8I1hfhTMTZnBxA,3405
|
|
135
|
-
angr/analyses/decompiler/dephication/graph_vvar_mapping.py,sha256=
|
|
136
|
+
angr/analyses/decompiler/dephication/graph_vvar_mapping.py,sha256=nsMwppwMXrGC8_RF-neehpaz-7kmEORVhpAbjOdVFWM,13703
|
|
136
137
|
angr/analyses/decompiler/dephication/rewriting_engine.py,sha256=3KUIxwUmfTZj2Jm1mB98J5vMkHqy4LLPYTrLzZfLbBA,10442
|
|
137
138
|
angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=q29kS8lOs_-mxgJMtQvoZdw6l3q2lUDeXcTcGienIrY,4343
|
|
138
|
-
angr/analyses/decompiler/optimization_passes/__init__.py,sha256=
|
|
139
|
+
angr/analyses/decompiler/optimization_passes/__init__.py,sha256=7CvrHdbjvebdxzXYIvLqzKNv41bc19tecWZJBnEwEyo,4965
|
|
139
140
|
angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py,sha256=uUzQWVkeKL2C9Lq8NZ7UkkZBAXydxOd0F1jxr0Zi__Q,5514
|
|
140
141
|
angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py,sha256=G1CEWo62dAMrm-3V4DfEDxT6kwXxuks10bcTtW9C_tA,1320
|
|
141
142
|
angr/analyses/decompiler/optimization_passes/code_motion.py,sha256=7o6lf-qahXv5H8jLqEASVXHaz-_PGo3r6l7qH5PbDtU,15343
|
|
@@ -153,7 +154,7 @@ angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=zTpl
|
|
|
153
154
|
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=1Yto_EBmmB5FkwZzaAO7S0MEvbQNEknFbbq-nUU0Eao,38818
|
|
154
155
|
angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=papR480h-t_wEWMEdu6UTmc33lPSy_MOmiMgidPGnxc,3115
|
|
155
156
|
angr/analyses/decompiler/optimization_passes/multi_simplifier.py,sha256=sIp2YISvafpyFzn8sgGMfohJsARiS3JFX_Y3IUXD_vo,10119
|
|
156
|
-
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=
|
|
157
|
+
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=ZCGlsTK_3pF2uKdUkLoI2zkQTVvR3w1zt0ZLhy0_BcA,21530
|
|
157
158
|
angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sha256=tc4FruEl0sFpm1DUu9g8gWlueRm0t9rhfHsdUrVplBo,7932
|
|
158
159
|
angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=GIFiYM_C_ChHrD2D1JGRFlE--PU3FOxTqzOX-lXmJLY,6404
|
|
159
160
|
angr/analyses/decompiler/optimization_passes/ret_deduplicator.py,sha256=STMnRyZWiqdoGPa3c7Q4KCHv-JHUdJ2t4oLEltEMpII,7995
|
|
@@ -161,7 +162,8 @@ angr/analyses/decompiler/optimization_passes/return_duplicator_base.py,sha256=7Q
|
|
|
161
162
|
angr/analyses/decompiler/optimization_passes/return_duplicator_high.py,sha256=ICDYwQJt5E2OVasdqn42jzbjwUXhSj6Plh3Y1iUHpAQ,2178
|
|
162
163
|
angr/analyses/decompiler/optimization_passes/return_duplicator_low.py,sha256=-mBEVfwGz986lDDEGwBG8wvGQTrFZHE7TLV-7rWt-H0,10076
|
|
163
164
|
angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py,sha256=cEbZ5jyYbRiBJSzVJbnqssUY5MzirXXgzvzpxllY_Zk,14343
|
|
164
|
-
angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py,sha256=
|
|
165
|
+
angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py,sha256=nMI9geZiLG5diaI3YciNKvJ0PAZXtUBLgAfknCf48QE,6539
|
|
166
|
+
angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py,sha256=m7ZMkqE2qbl4rl4M_Fi8xS6I1vUaTzUBIzsE6qpbwkM,4020
|
|
165
167
|
angr/analyses/decompiler/optimization_passes/tag_slicer.py,sha256=8_gmoeYgDD1Hb8Rpqcb-01_B4897peDF-J6KA5PjQT8,1176
|
|
166
168
|
angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=cpbsP6_ilZDu2M_jX8TEnwVrsQXljHEjSMw25HyK6PM,12806
|
|
167
169
|
angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py,sha256=6NxaX2oT6BMkevb8xt9vlS3Jl-CmSK59F0FVab68B48,3088
|
|
@@ -219,9 +221,9 @@ angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py,s
|
|
|
219
221
|
angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py,sha256=tnjWYeKWL63rvLVcicVSD1NbVQJfHtLT85E_PNeYt6s,979
|
|
220
222
|
angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=RRzuc2iGzQPvYaZAmpLKim0pJ_yR3-muGnJQxvpcN8w,4786
|
|
221
223
|
angr/analyses/decompiler/presets/__init__.py,sha256=FfnTqgY3oINacW7JFPIxx3r9dwpgI0Pu8yygBCN9d68,375
|
|
222
|
-
angr/analyses/decompiler/presets/basic.py,sha256=
|
|
223
|
-
angr/analyses/decompiler/presets/fast.py,sha256=
|
|
224
|
-
angr/analyses/decompiler/presets/full.py,sha256=
|
|
224
|
+
angr/analyses/decompiler/presets/basic.py,sha256=KDHlMq_XWonN2-JIYYVIhbI6FbfzXttmkgXFrwi5MiA,803
|
|
225
|
+
angr/analyses/decompiler/presets/fast.py,sha256=7C6-7Enha_ZRP-z_1tD3y3tG-FFqFPdp97rCTro0I6o,1535
|
|
226
|
+
angr/analyses/decompiler/presets/full.py,sha256=OJU5vmih0QPzoHWfy4Umwek7RHh6TV7fuUTi5VolDTo,1708
|
|
225
227
|
angr/analyses/decompiler/presets/preset.py,sha256=sTK5fJfx_Cdx0Gjn7y4bOrDp-2eFPeg1e1d5Eyc9uXk,1256
|
|
226
228
|
angr/analyses/decompiler/region_simplifiers/__init__.py,sha256=BSD9osrReTEdapOMmyI1kFiN7AmE1EeJGLBV7i0u-Uc,117
|
|
227
229
|
angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py,sha256=qLs1LxEYHdPrh5c33IdkHJqtjBU7z4Sz6fxOK4Fn0Oc,3816
|
|
@@ -240,20 +242,20 @@ angr/analyses/decompiler/ssailification/rewriting.py,sha256=-3jNGbtTH8-Yznoy0Bgu
|
|
|
240
242
|
angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=IUQOrEJDxvCZ0iKpPfj-0lod8ejnTke629JMw1dGG_Q,27204
|
|
241
243
|
angr/analyses/decompiler/ssailification/rewriting_state.py,sha256=L7apDXQLPiItuLdQFoQdut5RMUE8MRV1zRc3CsnuH6E,1883
|
|
242
244
|
angr/analyses/decompiler/ssailification/ssailification.py,sha256=bTMTwS4auYQCnY9cNwqbgdYksFym0Iro5e7qRIDmlME,8711
|
|
243
|
-
angr/analyses/decompiler/ssailification/traversal.py,sha256=
|
|
244
|
-
angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=
|
|
245
|
+
angr/analyses/decompiler/ssailification/traversal.py,sha256=75QzMIAC5RY_RcxMmqUTNeoEgGJwuTnR2KXIc8hnaMI,2981
|
|
246
|
+
angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=qVkx9fevkqxXy6PO1Yu2esPholvoaUOzqB1zmLKW9Os,5877
|
|
245
247
|
angr/analyses/decompiler/ssailification/traversal_state.py,sha256=_AsCnLiI2HFdM6WrPyAudhc0X4aU_PziznbOgmzpDzQ,1313
|
|
246
248
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=unzkTPhZbpjf5J3GWg1iAFkW17aHFHzuByZCMKE4onQ,633
|
|
247
249
|
angr/analyses/decompiler/structured_codegen/base.py,sha256=9Zfp2d8Oqp6TAgLJyu7v214YDBtdy3Qx8rs801wIsv0,3796
|
|
248
|
-
angr/analyses/decompiler/structured_codegen/c.py,sha256=
|
|
250
|
+
angr/analyses/decompiler/structured_codegen/c.py,sha256=zkS0NwthFXiILkdlRuniPXRKyeKlI6QMHPjaERG8ysQ,138987
|
|
249
251
|
angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
|
|
250
|
-
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=
|
|
252
|
+
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
|
|
251
253
|
angr/analyses/decompiler/structuring/__init__.py,sha256=u2SGBezMdqQF_2ixo8wr66vCMedAMY-cSjQyq2m-nR8,711
|
|
252
254
|
angr/analyses/decompiler/structuring/dream.py,sha256=mPNNsNvNb-LoDcoU_HjUejRytIFY_ZyCAbK4tNq_5lM,48254
|
|
253
|
-
angr/analyses/decompiler/structuring/phoenix.py,sha256
|
|
254
|
-
angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=
|
|
255
|
+
angr/analyses/decompiler/structuring/phoenix.py,sha256=-DkejyxETWXqGGdDw2-HBqlMgNUkVpApyyMpPforhSA,125114
|
|
256
|
+
angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=wxMiixVpmao1Rpuo3wN-gxkPh2YrgTTW4usgtdjdY9E,7150
|
|
255
257
|
angr/analyses/decompiler/structuring/sailr.py,sha256=6lM9cK3iU1kQ_eki7v1Z2VxTiX5OwQzIRF_BbEsw67Q,5721
|
|
256
|
-
angr/analyses/decompiler/structuring/structurer_base.py,sha256=
|
|
258
|
+
angr/analyses/decompiler/structuring/structurer_base.py,sha256=b2fGaDOYy_XdgbOHsKIalJWVTXEt4zDK7w3IO-ZgIjI,43276
|
|
257
259
|
angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=a916imPog4YCCtWtzcnHIQMPLEC73C5t-zSvx9mnvGk,12081
|
|
258
260
|
angr/analyses/deobfuscator/__init__.py,sha256=dkmq-mm3V6kiuchwUZCXr3bDRAEB1-zsPHeEt54tlUE,648
|
|
259
261
|
angr/analyses/deobfuscator/api_obf_finder.py,sha256=WWl55WESeAwcJMrJPX0LqGKN0druzWz--PsG79IliQA,13241
|
|
@@ -326,7 +328,7 @@ angr/analyses/reaching_definitions/subject.py,sha256=LxfEi_uko0KJixwFMWMy79l7QW4
|
|
|
326
328
|
angr/analyses/reaching_definitions/function_handler_library/__init__.py,sha256=7q_JCZ0RkwaWEhOeaAd2hns9O9afso3r3BHYsdollk0,458
|
|
327
329
|
angr/analyses/reaching_definitions/function_handler_library/stdio.py,sha256=To3dKtjqRbtqcJhybbhuQF_uxBXg4JX-A0601SsftRQ,11370
|
|
328
330
|
angr/analyses/reaching_definitions/function_handler_library/stdlib.py,sha256=5PWr7HGaIxcZwkHqZCumXnGPgur5Gf1mE9a1a9izv2U,6426
|
|
329
|
-
angr/analyses/reaching_definitions/function_handler_library/string.py,sha256=
|
|
331
|
+
angr/analyses/reaching_definitions/function_handler_library/string.py,sha256=14gNFX-oH8zVmfnyILklXbHAkxmsWcNT0YkYDSdHMo8,5047
|
|
330
332
|
angr/analyses/reaching_definitions/function_handler_library/unistd.py,sha256=J_wALo_qxPk-KjhiWMoWDhH4O36wKmqKkWyf2zlAqug,1238
|
|
331
333
|
angr/analyses/s_reaching_definitions/__init__.py,sha256=TyfVplxkJj8FAAAw9wegzJlcrbGwlFpIB23PdCcwrLA,254
|
|
332
334
|
angr/analyses/s_reaching_definitions/s_rda_model.py,sha256=XBrKqy6Ky9aHqTiWiaJPMQTM4aZT9aF9OKOtiylybUM,5009
|
|
@@ -355,15 +357,15 @@ angr/analyses/variable_recovery/variable_recovery_base.py,sha256=_WX6Qa6HIFUJkZn
|
|
|
355
357
|
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=7MG8qzgnCJlYyqhZLSQfjpq0022T4825PrWWrCKspnQ,25516
|
|
356
358
|
angr/angrdb/__init__.py,sha256=Jin6JjtVadtqsgm_a6gQGx3Hn7BblkbJvdcl_GwZshg,307
|
|
357
359
|
angr/angrdb/db.py,sha256=ecwcJ9b_LcM9a74GXJUm7JVWTghk3JhXScLhaQ4ZP7o,6260
|
|
358
|
-
angr/angrdb/models.py,sha256=
|
|
360
|
+
angr/angrdb/models.py,sha256=5Akv-fIjk3E2YHymEWu_nrbE8aQ9l75zOAaSIDEzeTQ,4794
|
|
359
361
|
angr/angrdb/serializers/__init__.py,sha256=Gu2B79cp2wwXx4l_S5ITc4QcqyK5YnoG-zEG253JUZY,184
|
|
360
362
|
angr/angrdb/serializers/cfg_model.py,sha256=Uxy1VDKAy_50dMXUykpEsl_zp3ko5ETuKNPRAd3Xsek,1314
|
|
361
363
|
angr/angrdb/serializers/comments.py,sha256=oHlwu9weMpFJrVBo19Ud1OB-XtpUPrdH9MWZy7QnQ40,1578
|
|
362
364
|
angr/angrdb/serializers/funcs.py,sha256=twDiZ5rx88kat8llBwsukKtg2lgklQpmHJ7X9lLI-DY,1727
|
|
363
|
-
angr/angrdb/serializers/kb.py,sha256=
|
|
365
|
+
angr/angrdb/serializers/kb.py,sha256=vDC9Qh27L4NTRd1nplRwRXDUWXyZT2eOTz-8pEBu2js,3889
|
|
364
366
|
angr/angrdb/serializers/labels.py,sha256=wShkd0cnxUc5ZfeRAAZYChTUgstQRElhrEI7_T9tPcg,1472
|
|
365
367
|
angr/angrdb/serializers/loader.py,sha256=xgvlp8t0H4tKgU680SpIW3r5DcrbU-qHtU_L_S_5B7E,5248
|
|
366
|
-
angr/angrdb/serializers/structured_code.py,sha256=
|
|
368
|
+
angr/angrdb/serializers/structured_code.py,sha256=AYaSZneT5py8IxZSoDk-itN-xwjhrH7-M_MhRk5t27A,4309
|
|
367
369
|
angr/angrdb/serializers/variables.py,sha256=LyrBqhn4B4u6y8_WBiE_JF0vwD2j6sAjIOlWPw8VqxA,2392
|
|
368
370
|
angr/angrdb/serializers/xrefs.py,sha256=C28PKZVmTJMFjycPttBckvCrrMsRDAzIcU52LCwWjq0,1205
|
|
369
371
|
angr/concretization_strategies/__init__.py,sha256=g24sC27w9mTCz-gWJOVO_1OPYS7EJgt4AnXh2JsJEuA,4319
|
|
@@ -494,19 +496,18 @@ angr/exploration_techniques/unique.py,sha256=uA-BynLkUw9V1QJGdVGHDMmH020I5LWH8xd
|
|
|
494
496
|
angr/exploration_techniques/veritesting.py,sha256=XmMuNcvV3lxbAyjtuFdgB8pfGiAtvfGxRPbr1MZrDBc,1388
|
|
495
497
|
angr/flirt/__init__.py,sha256=O6Qo4OKaEkpq1kxluphTNauGjBH2WS5AuX91xlToyzA,4403
|
|
496
498
|
angr/flirt/build_sig.py,sha256=3vQl6gZWWcF2HRgTQzFP6G3st8q2vpPHzRa3GfwkBnY,10036
|
|
497
|
-
angr/knowledge_plugins/__init__.py,sha256=
|
|
499
|
+
angr/knowledge_plugins/__init__.py,sha256=pnbU_L6GoP1rzX-VIXh-RArNV94nVCD_ubHxIcWu7Ho,1160
|
|
498
500
|
angr/knowledge_plugins/callsite_prototypes.py,sha256=ZVqTebckIj2VonQSGLFYW6TUgft1J5sOpSwE0K1Nyuk,1587
|
|
499
501
|
angr/knowledge_plugins/comments.py,sha256=s4wUAtbUa75MC0Dc5h44V08kyVtO8VO39zcy_qkU6cg,339
|
|
500
502
|
angr/knowledge_plugins/custom_strings.py,sha256=5qYAvmcm9BkTA247hZngDaHHrO9iIipYKJgGH9vxLLA,1037
|
|
501
503
|
angr/knowledge_plugins/data.py,sha256=u2Is51L6Opp4eeWkpO_ss8WfXgceK5AUa_BlnPcZXmk,874
|
|
502
504
|
angr/knowledge_plugins/debug_variables.py,sha256=pxiY6l0OPX3y2ZEcCGu-vJCGfw60tiPvkjdDFE9Z4uM,8075
|
|
503
|
-
angr/knowledge_plugins/decompilation.py,sha256=izceZ5UEhnF7q5EO0D1Hd7_LLKk1QHXfdv4g4kIbFS4,1346
|
|
504
505
|
angr/knowledge_plugins/indirect_jumps.py,sha256=VlIDWeU3xZyTAp1qSYyZxtusz2idxa1vrlLQmGWlkHA,1034
|
|
505
506
|
angr/knowledge_plugins/labels.py,sha256=H9_as9RFSKmth-Dxwq-iibXo007ayvS7nFGnYtnN8jE,3146
|
|
506
507
|
angr/knowledge_plugins/obfuscations.py,sha256=CM7wGiSdZamD3t9v9kdymDWkSMtcFYsKupL7jVs-jjo,1407
|
|
507
508
|
angr/knowledge_plugins/patches.py,sha256=tPjKI2GloTaWcA96u0yp75956HUkqOfsvusitEeWmGE,4335
|
|
508
509
|
angr/knowledge_plugins/plugin.py,sha256=8tPrsgo1hsZG3ifXs4mWsKkeyB03ubfZdY5YArWw9-Q,766
|
|
509
|
-
angr/knowledge_plugins/structured_code.py,sha256=
|
|
510
|
+
angr/knowledge_plugins/structured_code.py,sha256=9IKRF1Pb7E0eBz0uMK36Pk8HL0fmI7JqVaeihu7uiRQ,2167
|
|
510
511
|
angr/knowledge_plugins/types.py,sha256=EjskCalakpsUi4CKvjrP530VsWFBGkM4xmPbGN2ymRQ,2076
|
|
511
512
|
angr/knowledge_plugins/cfg/__init__.py,sha256=Y6sJ3L81gG8oDqewYYuIY27-cxXN3nvcgUg4FRdXqCY,418
|
|
512
513
|
angr/knowledge_plugins/cfg/cfg_manager.py,sha256=FteAHC7Kk3t46xzabJOn_mu6XoIuj6V6hK2IxhLmV64,2656
|
|
@@ -545,7 +546,7 @@ angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyC
|
|
|
545
546
|
angr/knowledge_plugins/xrefs/xref.py,sha256=ROo_kAEKwB51whVYcGtTV0QRtYmQZV8nEoEtbQWyC9U,4883
|
|
546
547
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=Yb88z3L8Y26TfGeRHdsGWQlT9f6oWntjEg6s-kcVtUQ,4040
|
|
547
548
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
|
|
548
|
-
angr/lib/angr_native.dylib,sha256=
|
|
549
|
+
angr/lib/angr_native.dylib,sha256=29SpRwaekp-zwhLAzDULyuBvVWpV4Ce_1U4ppiK-qTs,16187984
|
|
549
550
|
angr/misc/__init__.py,sha256=ZPHXbrIdsfe_qdmq8CnXuS_bBWOy4MDT2NjwUnPgHZc,355
|
|
550
551
|
angr/misc/ansi.py,sha256=nPJHC0SKfqasMQZ0LxdmmIYojjmk4nr5jI6FrzoTwS0,811
|
|
551
552
|
angr/misc/autoimport.py,sha256=iZagpuPwZWczUTYIqs-JkDMQjftMqc_cchcm7OBFiEg,3450
|
|
@@ -1349,12 +1350,12 @@ angr/utils/orderedset.py,sha256=K5PKeDqy4xUeq47k7SdZ7E3K9M1AMXJ9-veTOo5DQIE,1978
|
|
|
1349
1350
|
angr/utils/segment_list.py,sha256=ayUMIeaFp61AhTuxsf_go4XoXRqGi8cxTeP0OyuhEk4,20369
|
|
1350
1351
|
angr/utils/tagged_interval_map.py,sha256=rXKBuT14N23AAntpOKhZhmA-qqymnsvjpheFXoTRVRA,4417
|
|
1351
1352
|
angr/utils/timing.py,sha256=ELuRPzdRSHzOATgtAzTFByMlVr021ypMrsvtpopreLg,1481
|
|
1352
|
-
angr/utils/ssa/__init__.py,sha256=
|
|
1353
|
+
angr/utils/ssa/__init__.py,sha256=Sz9zQVnvtmCbJJYeTG_k2JxcZtgxvIxap-KqzvRnIFQ,8015
|
|
1353
1354
|
angr/utils/ssa/tmp_uses_collector.py,sha256=rSpvMxBHzg-tmvhsfjn3iLyPEKzaZN-xpQrdslMq3J4,793
|
|
1354
1355
|
angr/utils/ssa/vvar_uses_collector.py,sha256=8gfAWdRMz73Deh-ZshDM3GPAot9Lf-rHzCiaCil0hlE,1342
|
|
1355
|
-
angr-9.2.
|
|
1356
|
-
angr-9.2.
|
|
1357
|
-
angr-9.2.
|
|
1358
|
-
angr-9.2.
|
|
1359
|
-
angr-9.2.
|
|
1360
|
-
angr-9.2.
|
|
1356
|
+
angr-9.2.128.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
|
|
1357
|
+
angr-9.2.128.dist-info/METADATA,sha256=qLTnp41VD0korlbNqTSgjVkP62Lb2u4d8BdQ5DZUIyI,4762
|
|
1358
|
+
angr-9.2.128.dist-info/WHEEL,sha256=aMl2wjhFmRLb0PzGtbsQDiQ_ix2CCwfH6UOgIzAXfKk,105
|
|
1359
|
+
angr-9.2.128.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
1360
|
+
angr-9.2.128.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
1361
|
+
angr-9.2.128.dist-info/RECORD,,
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# pylint:disable=import-outside-toplevel
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from typing import Any, TYPE_CHECKING
|
|
5
|
-
|
|
6
|
-
from .plugin import KnowledgeBasePlugin
|
|
7
|
-
|
|
8
|
-
if TYPE_CHECKING:
|
|
9
|
-
from angr.analyses.decompiler.decompilation_cache import DecompilationCache
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class DecompilationManager(KnowledgeBasePlugin):
|
|
13
|
-
"""A knowledge base plugin to store decompilation results."""
|
|
14
|
-
|
|
15
|
-
def __init__(self, kb):
|
|
16
|
-
super().__init__(kb=kb)
|
|
17
|
-
self.cached: dict[Any, DecompilationCache] = {}
|
|
18
|
-
|
|
19
|
-
def _normalize_key(self, item: int | str):
|
|
20
|
-
if type(item) is str:
|
|
21
|
-
item = (self._kb.labels.lookup(item[0]), *item[1:])
|
|
22
|
-
return item
|
|
23
|
-
|
|
24
|
-
def __getitem__(self, item) -> DecompilationCache:
|
|
25
|
-
return self.cached[self._normalize_key(item)]
|
|
26
|
-
|
|
27
|
-
def __setitem__(self, key, value: DecompilationCache):
|
|
28
|
-
self.cached[self._normalize_key(key)] = value
|
|
29
|
-
|
|
30
|
-
def __contains__(self, key):
|
|
31
|
-
return self._normalize_key(key) in self.cached
|
|
32
|
-
|
|
33
|
-
def __delitem__(self, key):
|
|
34
|
-
del self.cached[self._normalize_key(key)]
|
|
35
|
-
|
|
36
|
-
def discard(self, key):
|
|
37
|
-
normalized_key = self._normalize_key(key)
|
|
38
|
-
if normalized_key in self.cached:
|
|
39
|
-
del self.cached[normalized_key]
|
|
40
|
-
|
|
41
|
-
def copy(self):
|
|
42
|
-
raise NotImplementedError
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
KnowledgeBasePlugin.register_default("decompilations", DecompilationManager)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|