angr 9.2.86__py3-none-win_amd64.whl → 9.2.87__py3-none-win_amd64.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/calling_convention.py +8 -6
- angr/analyses/data_dep/data_dependency_analysis.py +1 -0
- angr/analyses/decompiler/condition_processor.py +15 -9
- angr/analyses/decompiler/empty_node_remover.py +5 -3
- angr/analyses/decompiler/optimization_passes/optimization_pass.py +3 -3
- angr/analyses/decompiler/structured_codegen/c.py +17 -11
- angr/analyses/decompiler/structuring/phoenix.py +15 -9
- angr/analyses/disassembly.py +14 -12
- angr/analyses/reaching_definitions/dep_graph.py +10 -20
- angr/analyses/reaching_definitions/rd_state.py +4 -8
- angr/analyses/vfg.py +6 -6
- angr/calling_conventions.py +15 -7
- angr/engines/soot/expressions/condition.py +1 -1
- angr/engines/vex/claripy/irop.py +1 -0
- angr/engines/vex/heavy/heavy.py +3 -0
- angr/factory.py +2 -4
- angr/knowledge_plugins/key_definitions/live_definitions.py +4 -8
- angr/knowledge_plugins/key_definitions/rd_model.py +4 -4
- angr/knowledge_plugins/variables/variable_manager.py +3 -3
- angr/lib/angr_native.dll +0 -0
- angr/sim_procedure.py +3 -3
- angr/sim_type.py +9 -5
- angr/state_plugins/solver.py +36 -72
- angr/state_plugins/unicorn_engine.py +3 -3
- angr/storage/file.py +13 -9
- angr/storage/memory_mixins/paged_memory/pages/cooperation.py +10 -6
- angr/storage/memory_mixins/paged_memory/pages/multi_values.py +2 -10
- angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +12 -12
- angr/utils/graph.py +2 -1
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/METADATA +6 -6
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/RECORD +38 -36
- tests/utils/__init__.py +0 -0
- tests/utils/test_graph.py +41 -0
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/LICENSE +0 -0
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/WHEEL +0 -0
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/entry_points.txt +0 -0
- {angr-9.2.86.dist-info → angr-9.2.87.dist-info}/top_level.txt +0 -0
angr/state_plugins/solver.py
CHANGED
|
@@ -813,28 +813,22 @@ class SimSolver(SimStatePlugin):
|
|
|
813
813
|
return solution
|
|
814
814
|
|
|
815
815
|
@overload
|
|
816
|
-
def eval_upto(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]:
|
|
817
|
-
...
|
|
816
|
+
def eval_upto(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]: ...
|
|
818
817
|
|
|
819
818
|
@overload
|
|
820
|
-
def eval_upto(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
821
|
-
...
|
|
819
|
+
def eval_upto(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
822
820
|
|
|
823
821
|
@overload
|
|
824
|
-
def eval_upto(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]:
|
|
825
|
-
...
|
|
822
|
+
def eval_upto(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]: ...
|
|
826
823
|
|
|
827
824
|
@overload
|
|
828
|
-
def eval_upto(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
829
|
-
...
|
|
825
|
+
def eval_upto(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
830
826
|
|
|
831
827
|
@overload
|
|
832
|
-
def eval_upto(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]:
|
|
833
|
-
...
|
|
828
|
+
def eval_upto(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]: ...
|
|
834
829
|
|
|
835
830
|
@overload
|
|
836
|
-
def eval_upto(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
837
|
-
...
|
|
831
|
+
def eval_upto(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
838
832
|
|
|
839
833
|
def eval_upto(self, e, n, cast_to=None, **kwargs):
|
|
840
834
|
"""
|
|
@@ -859,28 +853,22 @@ class SimSolver(SimStatePlugin):
|
|
|
859
853
|
return cast_vals
|
|
860
854
|
|
|
861
855
|
@overload
|
|
862
|
-
def eval(self, e: claripy.ast.BV, cast_to: None = ..., **kwargs) -> int:
|
|
863
|
-
...
|
|
856
|
+
def eval(self, e: claripy.ast.BV, cast_to: None = ..., **kwargs) -> int: ...
|
|
864
857
|
|
|
865
858
|
@overload
|
|
866
|
-
def eval(self, e: claripy.ast.BV, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
867
|
-
...
|
|
859
|
+
def eval(self, e: claripy.ast.BV, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
868
860
|
|
|
869
861
|
@overload
|
|
870
|
-
def eval(self, e: claripy.ast.Bool, cast_to: None = ..., **kwargs) -> bool:
|
|
871
|
-
...
|
|
862
|
+
def eval(self, e: claripy.ast.Bool, cast_to: None = ..., **kwargs) -> bool: ...
|
|
872
863
|
|
|
873
864
|
@overload
|
|
874
|
-
def eval(self, e: claripy.ast.Bool, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
875
|
-
...
|
|
865
|
+
def eval(self, e: claripy.ast.Bool, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
876
866
|
|
|
877
867
|
@overload
|
|
878
|
-
def eval(self, e: claripy.ast.FP, cast_to: None = ..., **kwargs) -> float:
|
|
879
|
-
...
|
|
868
|
+
def eval(self, e: claripy.ast.FP, cast_to: None = ..., **kwargs) -> float: ...
|
|
880
869
|
|
|
881
870
|
@overload
|
|
882
|
-
def eval(self, e: claripy.ast.FP, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
883
|
-
...
|
|
871
|
+
def eval(self, e: claripy.ast.FP, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
884
872
|
|
|
885
873
|
def eval(self, e, cast_to=None, **kwargs):
|
|
886
874
|
"""
|
|
@@ -902,28 +890,22 @@ class SimSolver(SimStatePlugin):
|
|
|
902
890
|
return self.eval_upto(e, 1, cast_to, **kwargs)[0]
|
|
903
891
|
|
|
904
892
|
@overload
|
|
905
|
-
def eval_one(self, e: claripy.ast.BV, cast_to: None = ..., **kwargs) -> int:
|
|
906
|
-
...
|
|
893
|
+
def eval_one(self, e: claripy.ast.BV, cast_to: None = ..., **kwargs) -> int: ...
|
|
907
894
|
|
|
908
895
|
@overload
|
|
909
|
-
def eval_one(self, e: claripy.ast.BV, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
910
|
-
...
|
|
896
|
+
def eval_one(self, e: claripy.ast.BV, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
911
897
|
|
|
912
898
|
@overload
|
|
913
|
-
def eval_one(self, e: claripy.ast.Bool, cast_to: None = ..., **kwargs) -> bool:
|
|
914
|
-
...
|
|
899
|
+
def eval_one(self, e: claripy.ast.Bool, cast_to: None = ..., **kwargs) -> bool: ...
|
|
915
900
|
|
|
916
901
|
@overload
|
|
917
|
-
def eval_one(self, e: claripy.ast.Bool, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
918
|
-
...
|
|
902
|
+
def eval_one(self, e: claripy.ast.Bool, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
919
903
|
|
|
920
904
|
@overload
|
|
921
|
-
def eval_one(self, e: claripy.ast.FP, cast_to: None = ..., **kwargs) -> float:
|
|
922
|
-
...
|
|
905
|
+
def eval_one(self, e: claripy.ast.FP, cast_to: None = ..., **kwargs) -> float: ...
|
|
923
906
|
|
|
924
907
|
@overload
|
|
925
|
-
def eval_one(self, e: claripy.ast.FP, cast_to: Type[CastType], **kwargs) -> CastType:
|
|
926
|
-
...
|
|
908
|
+
def eval_one(self, e: claripy.ast.FP, cast_to: Type[CastType], **kwargs) -> CastType: ...
|
|
927
909
|
|
|
928
910
|
def eval_one(self, e, cast_to=None, **kwargs):
|
|
929
911
|
"""
|
|
@@ -946,28 +928,22 @@ class SimSolver(SimStatePlugin):
|
|
|
946
928
|
raise
|
|
947
929
|
|
|
948
930
|
@overload
|
|
949
|
-
def eval_atmost(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]:
|
|
950
|
-
...
|
|
931
|
+
def eval_atmost(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]: ...
|
|
951
932
|
|
|
952
933
|
@overload
|
|
953
|
-
def eval_atmost(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
954
|
-
...
|
|
934
|
+
def eval_atmost(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
955
935
|
|
|
956
936
|
@overload
|
|
957
|
-
def eval_atmost(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]:
|
|
958
|
-
...
|
|
937
|
+
def eval_atmost(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]: ...
|
|
959
938
|
|
|
960
939
|
@overload
|
|
961
|
-
def eval_atmost(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
962
|
-
...
|
|
940
|
+
def eval_atmost(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
963
941
|
|
|
964
942
|
@overload
|
|
965
|
-
def eval_atmost(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]:
|
|
966
|
-
...
|
|
943
|
+
def eval_atmost(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]: ...
|
|
967
944
|
|
|
968
945
|
@overload
|
|
969
|
-
def eval_atmost(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
970
|
-
...
|
|
946
|
+
def eval_atmost(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
971
947
|
|
|
972
948
|
def eval_atmost(self, e, n, cast_to=None, **kwargs):
|
|
973
949
|
"""
|
|
@@ -988,28 +964,22 @@ class SimSolver(SimStatePlugin):
|
|
|
988
964
|
return r
|
|
989
965
|
|
|
990
966
|
@overload
|
|
991
|
-
def eval_atleast(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]:
|
|
992
|
-
...
|
|
967
|
+
def eval_atleast(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]: ...
|
|
993
968
|
|
|
994
969
|
@overload
|
|
995
|
-
def eval_atleast(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
996
|
-
...
|
|
970
|
+
def eval_atleast(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
997
971
|
|
|
998
972
|
@overload
|
|
999
|
-
def eval_atleast(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]:
|
|
1000
|
-
...
|
|
973
|
+
def eval_atleast(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]: ...
|
|
1001
974
|
|
|
1002
975
|
@overload
|
|
1003
|
-
def eval_atleast(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
1004
|
-
...
|
|
976
|
+
def eval_atleast(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
1005
977
|
|
|
1006
978
|
@overload
|
|
1007
|
-
def eval_atleast(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]:
|
|
1008
|
-
...
|
|
979
|
+
def eval_atleast(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]: ...
|
|
1009
980
|
|
|
1010
981
|
@overload
|
|
1011
|
-
def eval_atleast(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
1012
|
-
...
|
|
982
|
+
def eval_atleast(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
1013
983
|
|
|
1014
984
|
def eval_atleast(self, e, n, cast_to=None, **kwargs):
|
|
1015
985
|
"""
|
|
@@ -1029,28 +999,22 @@ class SimSolver(SimStatePlugin):
|
|
|
1029
999
|
return r
|
|
1030
1000
|
|
|
1031
1001
|
@overload
|
|
1032
|
-
def eval_exact(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]:
|
|
1033
|
-
...
|
|
1002
|
+
def eval_exact(self, e: claripy.ast.BV, n: int, cast_to: None = ..., **kwargs) -> List[int]: ...
|
|
1034
1003
|
|
|
1035
1004
|
@overload
|
|
1036
|
-
def eval_exact(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
1037
|
-
...
|
|
1005
|
+
def eval_exact(self, e: claripy.ast.BV, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
1038
1006
|
|
|
1039
1007
|
@overload
|
|
1040
|
-
def eval_exact(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]:
|
|
1041
|
-
...
|
|
1008
|
+
def eval_exact(self, e: claripy.ast.Bool, n: int, cast_to: None = ..., **kwargs) -> List[bool]: ...
|
|
1042
1009
|
|
|
1043
1010
|
@overload
|
|
1044
|
-
def eval_exact(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
1045
|
-
...
|
|
1011
|
+
def eval_exact(self, e: claripy.ast.Bool, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
1046
1012
|
|
|
1047
1013
|
@overload
|
|
1048
|
-
def eval_exact(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]:
|
|
1049
|
-
...
|
|
1014
|
+
def eval_exact(self, e: claripy.ast.FP, n: int, cast_to: None = ..., **kwargs) -> List[float]: ...
|
|
1050
1015
|
|
|
1051
1016
|
@overload
|
|
1052
|
-
def eval_exact(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]:
|
|
1053
|
-
...
|
|
1017
|
+
def eval_exact(self, e: claripy.ast.FP, n: int, cast_to: Type[CastType], **kwargs) -> List[CastType]: ...
|
|
1054
1018
|
|
|
1055
1019
|
def eval_exact(self, e, n, cast_to=None, **kwargs):
|
|
1056
1020
|
"""
|
|
@@ -170,9 +170,9 @@ class STOP:
|
|
|
170
170
|
stop_message[STOP_VEX_LIFT_FAILED] = "Failed to lift block to VEX"
|
|
171
171
|
stop_message[STOP_SYMBOLIC_PC] = "Instruction pointer became symbolic"
|
|
172
172
|
stop_message[STOP_SYMBOLIC_READ_ADDR] = "Attempted to read from symbolic address"
|
|
173
|
-
stop_message[
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
stop_message[STOP_SYMBOLIC_READ_SYMBOLIC_TRACKING_DISABLED] = (
|
|
174
|
+
"Attempted to read symbolic data from memory but symbolic tracking is disabled"
|
|
175
|
+
)
|
|
176
176
|
stop_message[STOP_SYMBOLIC_WRITE_ADDR] = "Attempted to write to symbolic address"
|
|
177
177
|
stop_message[STOP_SYMBOLIC_BLOCK_EXIT_CONDITION] = "Guard condition of block's exit statement is symbolic"
|
|
178
178
|
stop_message[STOP_SYMBOLIC_BLOCK_EXIT_TARGET] = "Target of default exit of block is symbolic"
|
angr/storage/file.py
CHANGED
|
@@ -438,15 +438,19 @@ class SimPackets(SimFileBase):
|
|
|
438
438
|
self.content = []
|
|
439
439
|
else:
|
|
440
440
|
self.content = [
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
441
|
+
(
|
|
442
|
+
x
|
|
443
|
+
if type(x) is tuple
|
|
444
|
+
else (
|
|
445
|
+
(x, len(x) // 8)
|
|
446
|
+
if isinstance(x, claripy.Bits)
|
|
447
|
+
else (
|
|
448
|
+
(x.ast, len(x) // 8)
|
|
449
|
+
if isinstance(x, SimActionObject)
|
|
450
|
+
else (claripy.BVV(x), len(x)) if type(x) is bytes else None
|
|
451
|
+
)
|
|
452
|
+
)
|
|
453
|
+
)
|
|
450
454
|
for x in self.content
|
|
451
455
|
]
|
|
452
456
|
if any(x is None for x in self.content):
|
|
@@ -77,9 +77,11 @@ class MemoryObjectMixin(CooperationBase):
|
|
|
77
77
|
elements = [
|
|
78
78
|
o.bytes_at(
|
|
79
79
|
a,
|
|
80
|
-
(
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
(
|
|
81
|
+
((c_objects[i + 1][0] - a) & mask)
|
|
82
|
+
if i != len(c_objects) - 1
|
|
83
|
+
else ((c_objects[0][0] + size - a) & mask)
|
|
84
|
+
),
|
|
83
85
|
endness=endness,
|
|
84
86
|
)
|
|
85
87
|
for i, (a, o) in enumerate(c_objects)
|
|
@@ -184,9 +186,11 @@ class MemoryObjectSetMixin(CooperationBase):
|
|
|
184
186
|
if o.includes(a):
|
|
185
187
|
chopped = o.bytes_at(
|
|
186
188
|
a,
|
|
187
|
-
(
|
|
188
|
-
|
|
189
|
-
|
|
189
|
+
(
|
|
190
|
+
((c_objects[i + 1][0] - a) & mask)
|
|
191
|
+
if i != len(c_objects) - 1
|
|
192
|
+
else ((c_objects[0][0] + size - a) & mask)
|
|
193
|
+
),
|
|
190
194
|
endness=endness,
|
|
191
195
|
)
|
|
192
196
|
chopped_set.add(chopped)
|
|
@@ -33,20 +33,12 @@ class MultiValues:
|
|
|
33
33
|
self._single_value = (
|
|
34
34
|
None
|
|
35
35
|
if v is None
|
|
36
|
-
else v
|
|
37
|
-
if isinstance(v, claripy.ast.Bits)
|
|
38
|
-
else v._single_value
|
|
39
|
-
if isinstance(v, MultiValues)
|
|
40
|
-
else None
|
|
36
|
+
else v if isinstance(v, claripy.ast.Bits) else v._single_value if isinstance(v, MultiValues) else None
|
|
41
37
|
)
|
|
42
38
|
self._values = (
|
|
43
39
|
offset_to_values
|
|
44
40
|
if offset_to_values is not None
|
|
45
|
-
else v
|
|
46
|
-
if isinstance(v, dict)
|
|
47
|
-
else v._values
|
|
48
|
-
if isinstance(v, MultiValues)
|
|
49
|
-
else None
|
|
41
|
+
else v if isinstance(v, dict) else v._values if isinstance(v, MultiValues) else None
|
|
50
42
|
)
|
|
51
43
|
|
|
52
44
|
if self._single_value is None and self._values is None:
|
|
@@ -307,12 +307,12 @@ class RegionedMemoryMixin(MemoryMixin):
|
|
|
307
307
|
self.state,
|
|
308
308
|
related_function_addr,
|
|
309
309
|
self.endness,
|
|
310
|
-
cle_memory_backer=
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
dict_memory_backer=
|
|
314
|
-
|
|
315
|
-
|
|
310
|
+
cle_memory_backer=(
|
|
311
|
+
self._cle_memory_backer.get(key, None) if self._cle_memory_backer is not None else None
|
|
312
|
+
),
|
|
313
|
+
dict_memory_backer=(
|
|
314
|
+
self._dict_memory_backer.get(key, None) if self._dict_memory_backer is not None else None
|
|
315
|
+
),
|
|
316
316
|
)
|
|
317
317
|
|
|
318
318
|
return self._regions[key].load(addr, size, bbl_addr, stmt_id, ins_addr, **kwargs)
|
|
@@ -324,12 +324,12 @@ class RegionedMemoryMixin(MemoryMixin):
|
|
|
324
324
|
self.state,
|
|
325
325
|
related_function_addr,
|
|
326
326
|
self.endness,
|
|
327
|
-
cle_memory_backer=
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
dict_memory_backer=
|
|
331
|
-
|
|
332
|
-
|
|
327
|
+
cle_memory_backer=(
|
|
328
|
+
self._cle_memory_backer.get(key, None) if self._cle_memory_backer is not None else None
|
|
329
|
+
),
|
|
330
|
+
dict_memory_backer=(
|
|
331
|
+
self._dict_memory_backer.get(key, None) if self._dict_memory_backer is not None else None
|
|
332
|
+
),
|
|
333
333
|
)
|
|
334
334
|
|
|
335
335
|
self._regions[key].store(
|
angr/utils/graph.py
CHANGED
|
@@ -473,6 +473,8 @@ class Dominators:
|
|
|
473
473
|
stack = [start_node]
|
|
474
474
|
while len(stack) > 0:
|
|
475
475
|
node = stack.pop()
|
|
476
|
+
if node in scanned_nodes:
|
|
477
|
+
continue
|
|
476
478
|
counter += 1
|
|
477
479
|
|
|
478
480
|
# Mark it as scanned
|
|
@@ -491,7 +493,6 @@ class Dominators:
|
|
|
491
493
|
if s not in scanned_nodes:
|
|
492
494
|
stack.append(s)
|
|
493
495
|
parent[s] = node
|
|
494
|
-
scanned_nodes.add(s)
|
|
495
496
|
|
|
496
497
|
if counter >= all_nodes_count:
|
|
497
498
|
break
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.87
|
|
4
4
|
Summary: A multi-architecture binary analysis toolkit, with the ability to perform dynamic symbolic execution and various static analyses on binaries
|
|
5
5
|
Home-page: https://github.com/angr/angr
|
|
6
6
|
License: BSD-2-Clause
|
|
@@ -17,13 +17,13 @@ Description-Content-Type: text/markdown
|
|
|
17
17
|
License-File: LICENSE
|
|
18
18
|
Requires-Dist: CppHeaderParser
|
|
19
19
|
Requires-Dist: GitPython
|
|
20
|
-
Requires-Dist: ailment ==9.2.
|
|
21
|
-
Requires-Dist: archinfo ==9.2.
|
|
20
|
+
Requires-Dist: ailment ==9.2.87
|
|
21
|
+
Requires-Dist: archinfo ==9.2.87
|
|
22
22
|
Requires-Dist: cachetools
|
|
23
23
|
Requires-Dist: capstone ==5.0.0.post1
|
|
24
24
|
Requires-Dist: cffi >=1.14.0
|
|
25
|
-
Requires-Dist: claripy ==9.2.
|
|
26
|
-
Requires-Dist: cle ==9.2.
|
|
25
|
+
Requires-Dist: claripy ==9.2.87
|
|
26
|
+
Requires-Dist: cle ==9.2.87
|
|
27
27
|
Requires-Dist: dpkt
|
|
28
28
|
Requires-Dist: itanium-demangler
|
|
29
29
|
Requires-Dist: mulpyplexer
|
|
@@ -32,7 +32,7 @@ Requires-Dist: networkx !=2.8.1,>=2.0
|
|
|
32
32
|
Requires-Dist: protobuf >=3.19.0
|
|
33
33
|
Requires-Dist: psutil
|
|
34
34
|
Requires-Dist: pycparser >=2.18
|
|
35
|
-
Requires-Dist: pyvex ==9.2.
|
|
35
|
+
Requires-Dist: pyvex ==9.2.87
|
|
36
36
|
Requires-Dist: rich >=13.1.0
|
|
37
37
|
Requires-Dist: rpyc
|
|
38
38
|
Requires-Dist: sortedcontainers
|