angr 9.2.135__py3-none-manylinux2014_x86_64.whl → 9.2.136__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.
- angr/__init__.py +1 -1
- angr/analyses/__init__.py +3 -7
- angr/analyses/analysis.py +4 -0
- angr/analyses/backward_slice.py +1 -2
- angr/analyses/binary_optimizer.py +3 -4
- angr/analyses/bindiff.py +4 -6
- angr/analyses/boyscout.py +1 -3
- angr/analyses/callee_cleanup_finder.py +4 -4
- angr/analyses/calling_convention/calling_convention.py +4 -3
- angr/analyses/calling_convention/fact_collector.py +0 -1
- angr/analyses/cdg.py +1 -2
- angr/analyses/cfg/cfb.py +1 -3
- angr/analyses/cfg/cfg.py +2 -2
- angr/analyses/cfg/cfg_base.py +37 -35
- angr/analyses/cfg/cfg_emulated.py +1 -1
- angr/analyses/cfg/cfg_fast.py +62 -15
- angr/analyses/cfg/cfg_fast_soot.py +1 -1
- angr/analyses/cfg/indirect_jump_resolvers/__init__.py +2 -0
- angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +46 -10
- angr/analyses/cfg/indirect_jump_resolvers/default_resolvers.py +5 -1
- angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +50 -14
- angr/analyses/cfg/indirect_jump_resolvers/memload_resolver.py +81 -0
- angr/analyses/cfg/indirect_jump_resolvers/propagator_utils.py +24 -5
- angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +2 -5
- angr/analyses/congruency_check.py +2 -3
- angr/analyses/data_dep/data_dependency_analysis.py +2 -2
- angr/analyses/ddg.py +1 -4
- angr/analyses/decompiler/ail_simplifier.py +3 -4
- angr/analyses/decompiler/clinic.py +42 -7
- angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +2 -2
- angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +2 -2
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py +1 -1
- angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +1 -1
- angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py +1 -1
- angr/analyses/decompiler/structuring/phoenix.py +1 -1
- angr/analyses/disassembly.py +5 -5
- angr/analyses/fcp/__init__.py +4 -0
- angr/analyses/fcp/fcp.py +429 -0
- angr/analyses/identifier/identify.py +1 -3
- angr/analyses/loopfinder.py +4 -3
- angr/analyses/patchfinder.py +1 -1
- angr/analyses/propagator/engine_base.py +4 -3
- angr/analyses/propagator/propagator.py +14 -53
- angr/analyses/reassembler.py +1 -2
- angr/analyses/s_propagator.py +1 -3
- angr/analyses/soot_class_hierarchy.py +1 -2
- angr/analyses/stack_pointer_tracker.py +18 -2
- angr/analyses/static_hooker.py +1 -2
- angr/analyses/typehoon/simple_solver.py +2 -2
- angr/analyses/variable_recovery/variable_recovery_fast.py +1 -2
- angr/analyses/veritesting.py +4 -7
- angr/analyses/vfg.py +1 -1
- angr/analyses/vsa_ddg.py +1 -2
- angr/block.py +3 -2
- angr/callable.py +1 -3
- angr/calling_conventions.py +3 -3
- angr/codenode.py +5 -1
- angr/concretization_strategies/__init__.py +1 -83
- angr/concretization_strategies/any.py +2 -1
- angr/concretization_strategies/any_named.py +1 -1
- angr/concretization_strategies/base.py +81 -0
- angr/concretization_strategies/controlled_data.py +2 -1
- angr/concretization_strategies/eval.py +2 -1
- angr/concretization_strategies/logging.py +3 -1
- angr/concretization_strategies/max.py +2 -1
- angr/concretization_strategies/nonzero.py +2 -1
- angr/concretization_strategies/nonzero_range.py +2 -1
- angr/concretization_strategies/norepeats.py +2 -1
- angr/concretization_strategies/norepeats_range.py +2 -1
- angr/concretization_strategies/range.py +2 -1
- angr/concretization_strategies/signed_add.py +2 -1
- angr/concretization_strategies/single.py +2 -1
- angr/concretization_strategies/solutions.py +2 -1
- angr/concretization_strategies/unlimited_range.py +2 -1
- angr/engines/__init__.py +8 -5
- angr/engines/engine.py +3 -5
- angr/engines/failure.py +4 -5
- angr/engines/procedure.py +5 -7
- angr/engines/soot/expressions/__init__.py +22 -23
- angr/engines/soot/expressions/base.py +4 -4
- angr/engines/soot/expressions/invoke.py +1 -2
- angr/engines/soot/statements/__init__.py +9 -10
- angr/engines/soot/values/__init__.py +9 -10
- angr/engines/soot/values/arrayref.py +3 -3
- angr/engines/soot/values/instancefieldref.py +3 -2
- angr/engines/successors.py +7 -6
- angr/engines/syscall.py +4 -6
- angr/engines/unicorn.py +3 -2
- angr/engines/vex/claripy/ccall.py +8 -10
- angr/engines/vex/claripy/datalayer.py +4 -5
- angr/exploration_techniques/__init__.py +0 -2
- angr/exploration_techniques/spiller.py +1 -3
- angr/exploration_techniques/stochastic.py +2 -3
- angr/factory.py +3 -9
- angr/knowledge_plugins/cfg/cfg_model.py +20 -17
- angr/knowledge_plugins/functions/function.py +70 -73
- angr/knowledge_plugins/functions/function_manager.py +8 -7
- angr/knowledge_plugins/functions/function_parser.py +1 -1
- angr/knowledge_plugins/functions/soot_function.py +16 -16
- angr/knowledge_plugins/propagations/propagation_model.py +4 -5
- angr/knowledge_plugins/propagations/states.py +0 -511
- angr/procedures/libc/memcpy.py +4 -4
- angr/procedures/procedure_dict.py +3 -2
- angr/protos/__init__.py +2 -5
- angr/protos/cfg_pb2.py +21 -18
- angr/protos/function_pb2.py +17 -14
- angr/protos/primitives_pb2.py +44 -39
- angr/protos/variables_pb2.py +36 -31
- angr/protos/xrefs_pb2.py +15 -12
- angr/sim_procedure.py +15 -16
- angr/sim_variable.py +13 -1
- angr/simos/__init__.py +2 -0
- angr/simos/javavm.py +4 -6
- angr/simos/xbox.py +32 -0
- angr/state_plugins/__init__.py +0 -2
- angr/state_plugins/callstack.py +4 -4
- angr/state_plugins/cgc.py +3 -2
- angr/state_plugins/gdb.py +6 -5
- angr/state_plugins/globals.py +1 -2
- angr/state_plugins/heap/heap_brk.py +1 -2
- angr/state_plugins/history.py +10 -12
- angr/state_plugins/inspect.py +3 -5
- angr/state_plugins/libc.py +2 -2
- angr/state_plugins/log.py +8 -10
- angr/state_plugins/loop_data.py +1 -2
- angr/state_plugins/posix.py +7 -7
- angr/state_plugins/preconstrainer.py +2 -3
- angr/state_plugins/scratch.py +5 -8
- angr/state_plugins/sim_action.py +3 -3
- angr/state_plugins/solver.py +8 -3
- angr/state_plugins/symbolizer.py +5 -4
- angr/state_plugins/uc_manager.py +3 -3
- angr/state_plugins/unicorn_engine.py +5 -1
- angr/state_plugins/view.py +3 -5
- angr/storage/file.py +3 -5
- angr/storage/memory_mixins/address_concretization_mixin.py +2 -2
- angr/storage/memory_mixins/bvv_conversion_mixin.py +3 -3
- angr/storage/memory_mixins/clouseau_mixin.py +1 -3
- angr/storage/memory_mixins/name_resolution_mixin.py +1 -3
- angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +13 -15
- angr/storage/memory_mixins/paged_memory/pages/__init__.py +1 -22
- angr/storage/memory_mixins/paged_memory/pages/base.py +31 -0
- angr/storage/memory_mixins/paged_memory/pages/list_page.py +1 -1
- angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +1 -1
- angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +2 -4
- angr/storage/memory_mixins/paged_memory/privileged_mixin.py +3 -4
- angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +4 -2
- angr/storage/memory_mixins/smart_find_mixin.py +1 -1
- angr/storage/memory_mixins/underconstrained_mixin.py +1 -1
- angr/storage/memory_mixins/unwrapper_mixin.py +1 -3
- angr/utils/enums_conv.py +28 -12
- angr/utils/segment_list.py +25 -22
- angr/utils/timing.py +18 -1
- angr/vaults.py +5 -6
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/METADATA +6 -6
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/RECORD +160 -159
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/WHEEL +1 -1
- angr/analyses/propagator/outdated_definition_walker.py +0 -159
- angr/analyses/propagator/tmpvar_finder.py +0 -18
- angr/engines/concrete.py +0 -180
- angr/exploration_techniques/symbion.py +0 -80
- angr/state_plugins/concrete.py +0 -295
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/LICENSE +0 -0
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/entry_points.txt +0 -0
- {angr-9.2.135.dist-info → angr-9.2.136.dist-info}/top_level.txt +0 -0
|
@@ -134,7 +134,7 @@ class SmartFindMixin(MemoryMixin):
|
|
|
134
134
|
def _find_are_bytes_symbolic(self, b):
|
|
135
135
|
if not b.symbolic:
|
|
136
136
|
return False
|
|
137
|
-
if b.
|
|
137
|
+
if b.has_annotation_type(claripy.annotation.UninitializedAnnotation):
|
|
138
138
|
return True
|
|
139
139
|
return len(self.state.solver.eval_upto(b, 2)) > 1
|
|
140
140
|
|
|
@@ -52,7 +52,7 @@ class UnderconstrainedMixin(MemoryMixin):
|
|
|
52
52
|
if (
|
|
53
53
|
o.UNDER_CONSTRAINED_SYMEXEC in self.state.options
|
|
54
54
|
and isinstance(addr, claripy.ast.Base)
|
|
55
|
-
and addr.
|
|
55
|
+
and addr.has_annotation_type(claripy.annotation.UninitializedAnnotation)
|
|
56
56
|
and self.state.uc_manager.get_alloc_depth(addr) is not None
|
|
57
57
|
) and (
|
|
58
58
|
not self.state.uc_manager.is_bounded(addr)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from angr.state_plugins.sim_action_object import _raw_ast
|
|
3
4
|
from angr.storage.memory_mixins.memory_mixin import MemoryMixin
|
|
4
5
|
|
|
5
6
|
|
|
@@ -23,6 +24,3 @@ class UnwrapperMixin(MemoryMixin):
|
|
|
23
24
|
|
|
24
25
|
def copy_contents(self, dst, src, size, condition=None, **kwargs):
|
|
25
26
|
return super().copy_contents(_raw_ast(dst), _raw_ast(src), _raw_ast(size), _raw_ast(condition), **kwargs)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
from angr.state_plugins.sim_action_object import _raw_ast
|
angr/utils/enums_conv.py
CHANGED
|
@@ -2,29 +2,45 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
import logging
|
|
4
4
|
|
|
5
|
-
l = logging.getLogger(name=__name__)
|
|
6
|
-
|
|
7
5
|
from angr.protos.primitives_pb2 import Edge
|
|
8
6
|
|
|
7
|
+
l = logging.getLogger(name=__name__)
|
|
9
8
|
|
|
10
9
|
_CFG_JUMPKINDS = {
|
|
11
10
|
None: Edge.UnknownJumpkind,
|
|
11
|
+
"Ijk_8jzf8": Edge._8jzf8,
|
|
12
12
|
"Ijk_Boring": Edge.Boring,
|
|
13
13
|
"Ijk_Call": Edge.Call,
|
|
14
|
-
"
|
|
14
|
+
"Ijk_ClientReq": Edge.ClientReq,
|
|
15
|
+
"Ijk_EmFail": Edge.EmFail,
|
|
16
|
+
"Ijk_EmWarn": Edge.EmWarn,
|
|
17
|
+
"Ijk_Exception": Edge.Exception,
|
|
15
18
|
"Ijk_FakeRet": Edge.FakeReturn,
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
+
"Ijk_FlushDCache": Edge.FlushDCache,
|
|
20
|
+
"Ijk_InvalICache": Edge.InvalICache,
|
|
21
|
+
"Ijk_MapFail": Edge.MapFail,
|
|
19
22
|
"Ijk_NoDecode": Edge.NoDecode,
|
|
20
|
-
"
|
|
23
|
+
"Ijk_NoRedir": Edge.NoRedir,
|
|
24
|
+
"Ijk_Privileged": Edge.Privileged,
|
|
25
|
+
"Ijk_Ret": Edge.Return,
|
|
26
|
+
"Ijk_SigBUS": Edge.SigBUS,
|
|
27
|
+
"Ijk_SigFPE": Edge.SigFPE,
|
|
21
28
|
"Ijk_SigFPE_IntDiv": Edge.SigFPE_IntDiv,
|
|
22
|
-
"
|
|
29
|
+
"Ijk_SigFPE_IntOvf": Edge.SigFPE_IntOvf,
|
|
30
|
+
"Ijk_SigILL": Edge.SigILL,
|
|
23
31
|
"Ijk_SigSEGV": Edge.SigSEGV,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
32
|
+
"Ijk_SigTRAP": Edge.SigTRAP,
|
|
33
|
+
"Ijk_Syscall": Edge.Syscall,
|
|
34
|
+
"Ijk_Sys_int": Edge.Sys_int,
|
|
35
|
+
"Ijk_Sys_int128": Edge.Sys_int128,
|
|
36
|
+
"Ijk_Sys_int129": Edge.Sys_int129,
|
|
37
|
+
"Ijk_Sys_int130": Edge.Sys_int130,
|
|
38
|
+
"Ijk_Sys_int145": Edge.Sys_int145,
|
|
39
|
+
"Ijk_Sys_int210": Edge.Sys_int210,
|
|
40
|
+
"Ijk_Sys_int32": Edge.Sys_int32,
|
|
41
|
+
"Ijk_Sys_syscall": Edge.Sys_syscall,
|
|
42
|
+
"Ijk_Sys_sysenter": Edge.Sys_sysenter,
|
|
43
|
+
"Ijk_Yield": Edge.Yield,
|
|
28
44
|
}
|
|
29
45
|
|
|
30
46
|
|
angr/utils/segment_list.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# pylint:disable=no-else-break
|
|
2
2
|
from __future__ import annotations
|
|
3
|
+
from bisect import bisect_left
|
|
3
4
|
import logging
|
|
4
5
|
|
|
5
6
|
from angr.errors import AngrCFGError, AngrRuntimeError
|
|
@@ -221,7 +222,19 @@ class SegmentList:
|
|
|
221
222
|
new_size = sum(seg.size for seg in new_segments)
|
|
222
223
|
bytes_changed = new_size - old_size
|
|
223
224
|
|
|
224
|
-
|
|
225
|
+
if len(new_segments) == 2:
|
|
226
|
+
self._list[previous_segment_pos] = new_segments[0]
|
|
227
|
+
self._list[segment_pos] = new_segments[1]
|
|
228
|
+
elif len(new_segments) == 1:
|
|
229
|
+
self._list.pop(segment_pos)
|
|
230
|
+
self._list[previous_segment_pos] = new_segments[0]
|
|
231
|
+
elif len(new_segments) == 3:
|
|
232
|
+
self._list[previous_segment_pos] = new_segments[0]
|
|
233
|
+
self._list[segment_pos] = new_segments[1]
|
|
234
|
+
self._list.insert(segment_pos + 1, new_segments[2])
|
|
235
|
+
else:
|
|
236
|
+
# this does not happen for now, but may happen when the above logic changes
|
|
237
|
+
self._list = self._list[:previous_segment_pos] + new_segments + self._list[segment_pos + 1 :]
|
|
225
238
|
|
|
226
239
|
merged = True
|
|
227
240
|
|
|
@@ -245,6 +258,9 @@ class SegmentList:
|
|
|
245
258
|
# |---address + size---|
|
|
246
259
|
# shrink segment
|
|
247
260
|
segment.end = address
|
|
261
|
+
if segment.size == 0:
|
|
262
|
+
# remove the segment
|
|
263
|
+
self._list.pop(idx)
|
|
248
264
|
# adjust address
|
|
249
265
|
new_address = segment.start + segment.size
|
|
250
266
|
# adjust size
|
|
@@ -259,7 +275,7 @@ class SegmentList:
|
|
|
259
275
|
seg0 = Segment(segment.start, address, segment.sort)
|
|
260
276
|
seg1 = Segment(address + size, segment.start + segment.size, segment.sort)
|
|
261
277
|
# remove the current segment
|
|
262
|
-
self._list.
|
|
278
|
+
self._list.pop(idx)
|
|
263
279
|
if seg1.size > 0:
|
|
264
280
|
self._list.insert(idx, seg1)
|
|
265
281
|
if seg0.size > 0:
|
|
@@ -282,12 +298,12 @@ class SegmentList:
|
|
|
282
298
|
segment.start = address + size
|
|
283
299
|
if segment.size == 0:
|
|
284
300
|
# remove the segment
|
|
285
|
-
self._list.
|
|
301
|
+
self._list.pop(idx)
|
|
286
302
|
break
|
|
287
303
|
if address + size > segment.start + segment.size:
|
|
288
304
|
# |---- segment ----|
|
|
289
305
|
# |--------- address + size ----------|
|
|
290
|
-
self._list.remove
|
|
306
|
+
self._list.pop(idx) # remove the segment
|
|
291
307
|
new_address = segment.end
|
|
292
308
|
size = address + size - new_address
|
|
293
309
|
address = new_address
|
|
@@ -339,23 +355,10 @@ class SegmentList:
|
|
|
339
355
|
:return: The offset of the segment.
|
|
340
356
|
"""
|
|
341
357
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
mid = (start + end) // 2
|
|
347
|
-
|
|
348
|
-
segment = self._list[mid]
|
|
349
|
-
if addr < segment.start:
|
|
350
|
-
end = mid
|
|
351
|
-
elif addr >= segment.end:
|
|
352
|
-
start = mid + 1
|
|
353
|
-
else:
|
|
354
|
-
# Overlapped :(
|
|
355
|
-
start = mid
|
|
356
|
-
break
|
|
357
|
-
|
|
358
|
-
return start
|
|
358
|
+
off = bisect_left(self._list, addr, key=lambda x: x.start)
|
|
359
|
+
if 0 < off <= len(self._list) and self._list[off - 1].end > addr:
|
|
360
|
+
off -= 1
|
|
361
|
+
return off
|
|
359
362
|
|
|
360
363
|
def next_free_pos(self, address):
|
|
361
364
|
"""
|
|
@@ -487,7 +490,7 @@ class SegmentList:
|
|
|
487
490
|
# Cannot occupy a non-existent block
|
|
488
491
|
return
|
|
489
492
|
|
|
490
|
-
# l.debug("
|
|
493
|
+
# l.debug("Occupying 0x%08x-0x%08x", address, address + size)
|
|
491
494
|
if not self._list:
|
|
492
495
|
self._list.append(Segment(address, address + size, sort))
|
|
493
496
|
self._bytes_occupied += size
|
angr/utils/timing.py
CHANGED
|
@@ -7,13 +7,30 @@ from collections import defaultdict
|
|
|
7
7
|
|
|
8
8
|
TIMING = os.environ.get("TIMING", "").lower() not in {"", "no", "0", "false"}
|
|
9
9
|
PRINT = os.environ.get("PRINT", "").lower() not in {"", "no", "0", "false"}
|
|
10
|
-
TIME_DISTRIBUTION =
|
|
10
|
+
TIME_DISTRIBUTION = os.environ.get("TIMING_DIST", "").lower() not in {"", "no", "0", "false"}
|
|
11
11
|
|
|
12
12
|
total_time = defaultdict(float)
|
|
13
13
|
time_distribution = defaultdict(list)
|
|
14
14
|
depth = 0
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def print_timing_total():
|
|
18
|
+
sorted_keys = sorted(time_distribution.keys(), key=lambda x: sum(time_distribution[x]), reverse=True)
|
|
19
|
+
for func in sorted_keys:
|
|
20
|
+
millisec = sum(time_distribution[func])
|
|
21
|
+
sec = millisec / 1000
|
|
22
|
+
if sec > 1.0:
|
|
23
|
+
print(f"[timing] {func.__name__}: {sec} seconds.")
|
|
24
|
+
else:
|
|
25
|
+
print(f"[timing] {func.__name__}: {millisec} milliseconds.")
|
|
26
|
+
|
|
27
|
+
# list top-ten slowest calls
|
|
28
|
+
sorted_calls = sorted(time_distribution[func], reverse=True)
|
|
29
|
+
print("[timing] Slowest top 10:")
|
|
30
|
+
for idx, call in enumerate(sorted_calls[:10]):
|
|
31
|
+
print(f"[timing] {idx + 1}: {call} ms")
|
|
32
|
+
|
|
33
|
+
|
|
17
34
|
def _t():
|
|
18
35
|
return time.perf_counter_ns() / 1000000
|
|
19
36
|
|
angr/vaults.py
CHANGED
|
@@ -13,6 +13,11 @@ import io
|
|
|
13
13
|
|
|
14
14
|
import claripy
|
|
15
15
|
|
|
16
|
+
from .errors import AngrVaultError
|
|
17
|
+
from .project import Project
|
|
18
|
+
from .sim_state import SimState
|
|
19
|
+
from .sim_type import SimType
|
|
20
|
+
|
|
16
21
|
l = logging.getLogger("angr.vault")
|
|
17
22
|
|
|
18
23
|
|
|
@@ -360,9 +365,3 @@ class VaultDirShelf(VaultDict):
|
|
|
360
365
|
else:
|
|
361
366
|
s.add(n[: n.rfind(".")]) # remove the suffix
|
|
362
367
|
return s
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
from .errors import AngrVaultError
|
|
366
|
-
from .project import Project
|
|
367
|
-
from .sim_type import SimType
|
|
368
|
-
from .sim_state import SimState
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.136
|
|
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.136
|
|
20
|
+
Requires-Dist: archinfo==9.2.136
|
|
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.136
|
|
25
|
+
Requires-Dist: cle==9.2.136
|
|
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.136
|
|
35
35
|
Requires-Dist: rich>=13.1.0
|
|
36
36
|
Requires-Dist: sortedcontainers
|
|
37
37
|
Requires-Dist: sympy
|