angr 9.2.126__py3-none-manylinux2014_x86_64.whl → 9.2.128__py3-none-manylinux2014_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.

Files changed (43) hide show
  1. angr/__init__.py +1 -1
  2. angr/analyses/analysis.py +8 -2
  3. angr/analyses/cfg/cfg_fast.py +12 -1
  4. angr/analyses/decompiler/clinic.py +23 -2
  5. angr/analyses/decompiler/condition_processor.py +5 -7
  6. angr/analyses/decompiler/decompilation_cache.py +4 -0
  7. angr/analyses/decompiler/decompiler.py +36 -7
  8. angr/analyses/decompiler/dephication/graph_vvar_mapping.py +1 -2
  9. angr/analyses/decompiler/graph_region.py +3 -6
  10. angr/analyses/decompiler/label_collector.py +32 -0
  11. angr/analyses/decompiler/optimization_passes/__init__.py +3 -0
  12. angr/analyses/decompiler/optimization_passes/optimization_pass.py +6 -3
  13. angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +41 -3
  14. angr/analyses/decompiler/optimization_passes/switch_reused_entry_rewriter.py +102 -0
  15. angr/analyses/decompiler/presets/basic.py +2 -0
  16. angr/analyses/decompiler/presets/fast.py +2 -0
  17. angr/analyses/decompiler/presets/full.py +2 -0
  18. angr/analyses/decompiler/region_identifier.py +8 -8
  19. angr/analyses/decompiler/ssailification/traversal.py +1 -0
  20. angr/analyses/decompiler/ssailification/traversal_engine.py +15 -0
  21. angr/analyses/decompiler/structured_codegen/c.py +0 -3
  22. angr/analyses/decompiler/structured_codegen/dwarf_import.py +4 -1
  23. angr/analyses/decompiler/structuring/phoenix.py +131 -31
  24. angr/analyses/decompiler/structuring/recursive_structurer.py +3 -1
  25. angr/analyses/decompiler/structuring/structurer_base.py +33 -1
  26. angr/analyses/reaching_definitions/function_handler_library/string.py +2 -2
  27. angr/analyses/s_liveness.py +3 -3
  28. angr/analyses/s_propagator.py +74 -3
  29. angr/angrdb/models.py +2 -1
  30. angr/angrdb/serializers/kb.py +3 -3
  31. angr/angrdb/serializers/structured_code.py +5 -3
  32. angr/calling_conventions.py +1 -1
  33. angr/knowledge_base.py +1 -1
  34. angr/knowledge_plugins/__init__.py +0 -2
  35. angr/knowledge_plugins/structured_code.py +1 -1
  36. angr/utils/ssa/__init__.py +8 -3
  37. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/METADATA +6 -6
  38. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/RECORD +42 -41
  39. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/WHEEL +1 -1
  40. angr/knowledge_plugins/decompilation.py +0 -45
  41. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/LICENSE +0 -0
  42. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/entry_points.txt +0 -0
  43. {angr-9.2.126.dist-info → angr-9.2.128.dist-info}/top_level.txt +0 -0
@@ -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 is_phi_assignment, VVarUsesCollector
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
- r, phi_expr = is_phi_assignment(stmt)
89
- if r:
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()
@@ -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
- r, v = is_phi_assignment(stmt)
133
- if r:
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):
@@ -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.structured_code)
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.structured_code = structured_code
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
@@ -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
  )
@@ -60,4 +60,4 @@ class StructuredCodeManager(KnowledgeBasePlugin):
60
60
  raise NotImplementedError
61
61
 
62
62
 
63
- KnowledgeBasePlugin.register_default("structured_code", StructuredCodeManager)
63
+ KnowledgeBasePlugin.register_default("decompilations", StructuredCodeManager)
@@ -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) -> tuple[bool, Phi | None]:
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 True, stmt.src
184
- return False, None
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.126
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.126
20
- Requires-Dist: archinfo==9.2.126
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.126
25
- Requires-Dist: cle==9.2.126
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.126
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=9wJycKm7XIhAgcU_NaR1jipFfExGOE4p3d01V5DIbAE,9153
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=2Fet0k_lIPMYwyOqHpYWz6SlPontXID8BBsSVrMwKWs,92950
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=rpQTkiIKpbjkJTaIaPf-L7ylwiGeM95VTGnUsTg9pOs,4538
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=ggR1xFe0HSpLhkqiJtmzm8qmS5H-7xZDwhYf4IyBNf8,14551
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=YI-N62--Wo8B4yB5lvUi4mFBNqxwRxYq-p3zXR4qFNs,5213
58
- angr/analyses/s_propagator.py,sha256=vmOnkwrBQTvh3WJbAXY7R4imAW_AKzYoeRM311oXVsA,11311
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=eLStNKXQXT4XWrOZiHcw8lEmIFFh9d-PKUroCNVCB6w,221775
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=fl5waZwLlU279EJqoTdK4-9feJwSWGwZOfrB1iUyiO8,105986
106
- angr/analyses/decompiler/condition_processor.py,sha256=yfQZzPr5gYxnxMCWM6uue9DZdHF8rAzRKfIT0yNgSD8,52897
107
- angr/analyses/decompiler/decompilation_cache.py,sha256=dnlY0w4-ViAFz_M1qCjXbGNOLiMlDG8hJW6z2x-VKEs,1230
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=A3diyVLzYDrB_1WQqplyboTnFBvE8Bvn7RiYNT_ijvk,26868
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=PqXOqxOtk8haGNB7zlPzvXgkE0JdeGCIpLIUSeKswo8,16661
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=FUynH4k09y5NiTdor8PLiPFviDcdWpzwz0xa9fRocJs,47293
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=KeZ6VIQAB-Jy4bGUychFCKyinK3rKwy8E9_25ImlKhQ,13724
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=pCYamez51inHric94E2tD_Hy9gHl8sGHJbfG2dcpGBQ,4833
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=Ot9iYGqHK_5TZM8cU8IUaUazDH8LJjf1EcG4Av0Udv8,21382
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=pxb0jyDQ5BXkjzzo4JiHEA1NZeKVmp0G5Pd-T5_UIa8,4758
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=xL7UjuuRnZFoG2j8C-qB1F8xwC3tA189PmVdQO_1tCU,737
223
- angr/analyses/decompiler/presets/fast.py,sha256=vaHnlv39xQwilXVtdkAEFUKKDQIwQQOTw6Synvse6rI,1469
224
- angr/analyses/decompiler/presets/full.py,sha256=sFFP4ZUqPlrEnSfwDJ5Owh-wlqnuW459qY2AAXoof2s,1642
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=Er6XFmgwmpTf6W8vg9vZupO5MDvsE2y4wONYIYYXzAQ,2949
244
- angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=YBsWyuXyt_3q1yTnxqVaU6vL2nM3okUb9vkSGdHvJj8,5307
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=z3Xejr4nRA-VAfw-T-52Wtr7HP2YxHhpUR7a5M7Azz8,139083
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=Lf4DKgDs17ohKH8UmCrnJI1BVmPrx2oIb3zXvJ7qc4U,6819
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=uJ6V7DMoc7DOH2b_NfnuRPvyKvB31eUIUOmuWmC7Sz4,120632
254
- angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=HRUpZiD8xlpJjHWL8WHORakuBw_ip7h8K9ichyLX1j8,7075
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=ql8HoTn9SG6snNmgEx1xQVeIHAlvdkASQpDwNR04YKw,41547
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=qUV3JRRkhxxAX92IeQgLkrlotjTy5SHtPXlFj_YHIhs,5047
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=_DTDAV6S7bEuNER8qiHrlo27fRgBRcv_HCfH7to1ZxE,4747
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=4wEiS-q1MES5GuDfnu9iwYDu9tXZrsc6btCiXBiVCio,3876
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=rnhMYipIzObumQ7N4K5cYGrCwGceP46uip9KrADh7G4,4109
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=spYypq3Rzbic2fD5eWF6D1KpSu8W6BwsPtoZPyJ5NAM,1236
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=Ri7e9ccjZw1v8I5WTXQ6ccj2NHPuqAkTS3BTEFxb3Rg,2168
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
@@ -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=Z7yXY0xe4X-T4bfdK0YtL9ZFnYF-JhQuJ16ZW-wpSZI,7886
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.126.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
1356
- angr-9.2.126.dist-info/METADATA,sha256=19rrTfgPBg4OHgBK6THWNcmcfQICUl2FPLVMhwngrpc,4762
1357
- angr-9.2.126.dist-info/WHEEL,sha256=GJfQ78p3ltJ-D-4Cd-lGu-EZQUnHSYMxw_NmwTjG9G8,108
1358
- angr-9.2.126.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
1359
- angr-9.2.126.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
1360
- angr-9.2.126.dist-info/RECORD,,
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=L_zGGHECouaTzi1DQiLm3Q4SaYnxpIo58ROhs3b4s8E,108
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.4.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-manylinux2014_x86_64
5
5
 
@@ -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)