angr 9.2.64__py3-none-manylinux2014_x86_64.whl → 9.2.66__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 +55 -2
- angr/analyses/calling_convention.py +4 -3
- angr/analyses/cfg/cfg_base.py +2 -2
- angr/analyses/cfg/cfg_fast.py +128 -60
- angr/analyses/decompiler/ail_simplifier.py +1 -2
- angr/analyses/decompiler/block_simplifier.py +4 -3
- angr/analyses/decompiler/callsite_maker.py +1 -1
- angr/analyses/decompiler/condition_processor.py +5 -3
- angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +51 -8
- angr/analyses/decompiler/peephole_optimizations/__init__.py +1 -1
- angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py +92 -0
- angr/analyses/decompiler/structured_codegen/c.py +59 -6
- angr/analyses/decompiler/utils.py +1 -1
- angr/analyses/find_objects_static.py +4 -4
- angr/analyses/propagator/engine_ail.py +2 -1
- angr/analyses/reaching_definitions/__init__.py +1 -3
- angr/analyses/reaching_definitions/dep_graph.py +33 -4
- angr/analyses/reaching_definitions/engine_ail.py +5 -6
- angr/analyses/reaching_definitions/engine_vex.py +6 -7
- angr/analyses/reaching_definitions/external_codeloc.py +0 -27
- angr/analyses/reaching_definitions/function_handler.py +145 -23
- angr/analyses/reaching_definitions/rd_initializer.py +221 -0
- angr/analyses/reaching_definitions/rd_state.py +95 -153
- angr/analyses/reaching_definitions/reaching_definitions.py +15 -3
- angr/calling_conventions.py +2 -2
- angr/code_location.py +24 -0
- angr/exploration_techniques/__init__.py +28 -0
- angr/knowledge_plugins/cfg/cfg_model.py +1 -1
- angr/knowledge_plugins/key_definitions/__init__.py +12 -1
- angr/knowledge_plugins/key_definitions/atoms.py +9 -0
- angr/knowledge_plugins/key_definitions/definition.py +13 -18
- angr/knowledge_plugins/key_definitions/live_definitions.py +350 -106
- angr/project.py +1 -1
- angr/sim_manager.py +15 -0
- angr/sim_state.py +3 -3
- angr/storage/memory_mixins/paged_memory/pages/multi_values.py +56 -8
- angr/storage/memory_object.py +3 -1
- angr/utils/typing.py +16 -0
- {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/METADATA +8 -8
- {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/RECORD +43 -41
- {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/WHEEL +1 -1
- angr/analyses/decompiler/peephole_optimizations/conv_const_mull_a_shift.py +0 -75
- {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/LICENSE +0 -0
- {angr-9.2.64.dist-info → angr-9.2.66.dist-info}/top_level.txt +0 -0
angr/project.py
CHANGED
|
@@ -180,7 +180,7 @@ class Project:
|
|
|
180
180
|
)
|
|
181
181
|
raise Exception("Incompatible options for the project")
|
|
182
182
|
|
|
183
|
-
if self.concrete_target and self.arch.name not in ["X86", "AMD64", "ARMHF", "MIPS32"]:
|
|
183
|
+
if self.concrete_target and self.arch.name not in ["X86", "AMD64", "ARMHF", "ARMEL", "MIPS32"]:
|
|
184
184
|
l.critical("Concrete execution does not support yet the selected architecture. Aborting.")
|
|
185
185
|
raise Exception("Incompatible options for the project")
|
|
186
186
|
|
angr/sim_manager.py
CHANGED
|
@@ -164,6 +164,21 @@ class SimulationManager:
|
|
|
164
164
|
except AttributeError:
|
|
165
165
|
return SimulationManager._fetch_states(self, stash=item)
|
|
166
166
|
|
|
167
|
+
active: List[SimState]
|
|
168
|
+
stashed: List[SimState]
|
|
169
|
+
pruned: List[SimState]
|
|
170
|
+
unsat: List[SimState]
|
|
171
|
+
deadended: List[SimState]
|
|
172
|
+
unconstrained: List[SimState]
|
|
173
|
+
found: List[SimState]
|
|
174
|
+
one_active: SimState
|
|
175
|
+
one_stashed: SimState
|
|
176
|
+
one_pruned: SimState
|
|
177
|
+
one_unsat: SimState
|
|
178
|
+
one_deadended: SimState
|
|
179
|
+
one_unconstrained: SimState
|
|
180
|
+
one_found: SimState
|
|
181
|
+
|
|
167
182
|
def __dir__(self):
|
|
168
183
|
return (
|
|
169
184
|
list(self.__dict__)
|
angr/sim_state.py
CHANGED
|
@@ -65,9 +65,9 @@ class SimState(PluginHub):
|
|
|
65
65
|
# Type Annotations for default plugins to allow type inference
|
|
66
66
|
solver: "SimSolver"
|
|
67
67
|
posix: "SimSystemPosix"
|
|
68
|
-
registers: "
|
|
68
|
+
registers: "DefaultMemory"
|
|
69
69
|
regs: "SimRegNameView"
|
|
70
|
-
memory: "
|
|
70
|
+
memory: "DefaultMemory"
|
|
71
71
|
callstack: "CallStack"
|
|
72
72
|
mem: "SimMemView"
|
|
73
73
|
callstack: "CallStack"
|
|
@@ -995,7 +995,7 @@ from .errors import SimMergeError, SimValueError, SimStateError, SimSolverModeEr
|
|
|
995
995
|
|
|
996
996
|
# Type imports for annotations
|
|
997
997
|
if TYPE_CHECKING:
|
|
998
|
-
from .storage import
|
|
998
|
+
from .storage import DefaultMemory
|
|
999
999
|
from .state_plugins.solver import SimSolver
|
|
1000
1000
|
from .state_plugins.posix import SimSystemPosix
|
|
1001
1001
|
from .state_plugins.view import SimRegNameView, SimMemView
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
from typing import Dict, Optional, Set, Tuple, Iterator
|
|
1
|
+
from typing import Dict, Optional, Set, Tuple, Iterator, Union
|
|
2
|
+
import archinfo
|
|
2
3
|
|
|
3
4
|
import claripy
|
|
4
5
|
|
|
6
|
+
from angr.storage.memory_object import bv_slice
|
|
7
|
+
|
|
5
8
|
|
|
6
9
|
class MultiValues:
|
|
7
10
|
"""
|
|
@@ -17,15 +20,26 @@ class MultiValues:
|
|
|
17
20
|
)
|
|
18
21
|
|
|
19
22
|
_single_value: Optional[claripy.ast.BV]
|
|
23
|
+
_values: Optional[Dict[int, Set[claripy.ast.BV]]]
|
|
20
24
|
|
|
21
|
-
def __init__(
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
v: Union[claripy.ast.BV, "MultiValues", None, Dict[int, Set[claripy.ast.BV]]] = None,
|
|
28
|
+
offset_to_values=None,
|
|
29
|
+
):
|
|
22
30
|
if v is not None and offset_to_values is not None:
|
|
23
31
|
raise TypeError("You cannot specify v and offset_to_values at the same time!")
|
|
24
32
|
|
|
25
|
-
self._single_value =
|
|
26
|
-
|
|
27
|
-
|
|
33
|
+
self._single_value = (
|
|
34
|
+
None
|
|
35
|
+
if v is None
|
|
36
|
+
else v
|
|
37
|
+
if isinstance(v, claripy.ast.BV)
|
|
38
|
+
else v._single_value
|
|
39
|
+
if isinstance(v, MultiValues)
|
|
40
|
+
else None
|
|
28
41
|
)
|
|
42
|
+
self._values = offset_to_values if offset_to_values is not None else v if isinstance(v, dict) else None
|
|
29
43
|
|
|
30
44
|
# if only one value is passed in, assign it to self._single_value
|
|
31
45
|
if self._values:
|
|
@@ -40,7 +54,16 @@ class MultiValues:
|
|
|
40
54
|
raise TypeError("Each value in offset_to_values must be a set!")
|
|
41
55
|
|
|
42
56
|
def add_value(self, offset: int, value: claripy.ast.BV) -> None:
|
|
57
|
+
if len(value) == 0:
|
|
58
|
+
return
|
|
43
59
|
if self._single_value is not None:
|
|
60
|
+
if len(self._single_value) == 0:
|
|
61
|
+
if offset == 0:
|
|
62
|
+
self._single_value = value
|
|
63
|
+
else:
|
|
64
|
+
self._single_value = None
|
|
65
|
+
self._values = {offset: {value}}
|
|
66
|
+
return
|
|
44
67
|
self._values = {0: {self._single_value}}
|
|
45
68
|
self._single_value = None
|
|
46
69
|
|
|
@@ -100,7 +123,7 @@ class MultiValues:
|
|
|
100
123
|
for v in remaining_values:
|
|
101
124
|
self.add_value(offset, v)
|
|
102
125
|
|
|
103
|
-
def one_value(self) -> Optional[claripy.ast.BV]:
|
|
126
|
+
def one_value(self) -> Optional[claripy.ast.bv.BV]:
|
|
104
127
|
if self._single_value is not None:
|
|
105
128
|
return self._single_value
|
|
106
129
|
|
|
@@ -171,7 +194,7 @@ class MultiValues:
|
|
|
171
194
|
return {0}
|
|
172
195
|
return set() if not self._values else set(self._values.keys())
|
|
173
196
|
|
|
174
|
-
def values(self) -> Iterator[Set[claripy.ast.BV]]:
|
|
197
|
+
def values(self) -> Iterator[Set[claripy.ast.bv.BV]]:
|
|
175
198
|
if self._single_value is not None:
|
|
176
199
|
yield {self._single_value}
|
|
177
200
|
else:
|
|
@@ -179,7 +202,7 @@ class MultiValues:
|
|
|
179
202
|
return
|
|
180
203
|
yield from self._values.values()
|
|
181
204
|
|
|
182
|
-
def items(self) -> Iterator[Tuple[int, Set[claripy.ast.BV]]]:
|
|
205
|
+
def items(self) -> Iterator[Tuple[int, Set[claripy.ast.bv.BV]]]:
|
|
183
206
|
if self._single_value is not None:
|
|
184
207
|
yield 0, {self._single_value}
|
|
185
208
|
else:
|
|
@@ -195,6 +218,31 @@ class MultiValues:
|
|
|
195
218
|
return 0
|
|
196
219
|
return len(self._values)
|
|
197
220
|
|
|
221
|
+
def extract(self, offset: int, length: int, endness: archinfo.Endness) -> "MultiValues":
|
|
222
|
+
end = offset + length
|
|
223
|
+
result = MultiValues(claripy.BVV(b""))
|
|
224
|
+
for obj_offset, values in self.items():
|
|
225
|
+
for value in values:
|
|
226
|
+
obj_length = len(value) // 8
|
|
227
|
+
slice_start = max(0, offset - obj_offset)
|
|
228
|
+
slice_end = min(obj_length, end - obj_offset)
|
|
229
|
+
sliced = bv_slice(value, slice_start, slice_end - slice_start, endness == archinfo.Endness.LE, 8)
|
|
230
|
+
if len(sliced):
|
|
231
|
+
result.add_value(max(0, obj_offset - offset), sliced)
|
|
232
|
+
|
|
233
|
+
return result
|
|
234
|
+
|
|
235
|
+
def concat(self, other: Union["MultiValues", claripy.ast.BV, bytes]) -> "MultiValues":
|
|
236
|
+
if isinstance(other, bytes):
|
|
237
|
+
other = claripy.BVV(other)
|
|
238
|
+
if isinstance(other, claripy.ast.BV):
|
|
239
|
+
other = MultiValues(other)
|
|
240
|
+
result = MultiValues(self)
|
|
241
|
+
for k, v in other.items():
|
|
242
|
+
for v2 in v:
|
|
243
|
+
result.add_value(k, v2)
|
|
244
|
+
return result
|
|
245
|
+
|
|
198
246
|
#
|
|
199
247
|
# Private methods
|
|
200
248
|
#
|
angr/storage/memory_object.py
CHANGED
|
@@ -148,7 +148,7 @@ class SimLabeledMemoryObject(SimMemoryObject):
|
|
|
148
148
|
self.label = label
|
|
149
149
|
|
|
150
150
|
|
|
151
|
-
def bv_slice(value, offset, size, rev, bw):
|
|
151
|
+
def bv_slice(value: claripy.ast.BV, offset: int, size: int, rev: bool, bw: int) -> claripy.ast.BV:
|
|
152
152
|
"""
|
|
153
153
|
Extremely cute utility to pretend you've serialized a value to stored bytes, sliced it a la python slicing, and then
|
|
154
154
|
deserialized those bytes to an integer again.
|
|
@@ -176,4 +176,6 @@ def bv_slice(value, offset, size, rev, bw):
|
|
|
176
176
|
return value
|
|
177
177
|
|
|
178
178
|
bitstart = len(value) - offset * bw
|
|
179
|
+
if size == 0:
|
|
180
|
+
return claripy.BVV(b"")
|
|
179
181
|
return value[bitstart - 1 : bitstart - size * bw]
|
angr/utils/typing.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import TypeVar, Optional, Iterable
|
|
2
|
+
|
|
3
|
+
_T = TypeVar("_T")
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def unwrap(thing: Optional[_T]) -> _T:
|
|
7
|
+
assert thing is not None, "Tried to unwrap a `None` value"
|
|
8
|
+
return thing
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def one(thing: Iterable[_T]) -> _T:
|
|
12
|
+
try:
|
|
13
|
+
(result,) = thing
|
|
14
|
+
except ValueError as e:
|
|
15
|
+
raise AssertionError("Tried to get only value of an iterable with some other number of items") from e
|
|
16
|
+
return result
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.66
|
|
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.66
|
|
20
|
+
Requires-Dist: archinfo ==9.2.66
|
|
21
21
|
Requires-Dist: cachetools
|
|
22
|
-
Requires-Dist: capstone
|
|
22
|
+
Requires-Dist: capstone ==5.0.0.post1
|
|
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.66
|
|
25
|
+
Requires-Dist: cle ==9.2.66
|
|
26
26
|
Requires-Dist: dpkt
|
|
27
27
|
Requires-Dist: itanium-demangler
|
|
28
28
|
Requires-Dist: mulpyplexer
|
|
@@ -31,7 +31,7 @@ Requires-Dist: networkx !=2.8.1,>=2.0
|
|
|
31
31
|
Requires-Dist: protobuf >=3.19.0
|
|
32
32
|
Requires-Dist: psutil
|
|
33
33
|
Requires-Dist: pycparser >=2.18
|
|
34
|
-
Requires-Dist: pyvex ==9.2.
|
|
34
|
+
Requires-Dist: pyvex ==9.2.66
|
|
35
35
|
Requires-Dist: rich >=13.1.0
|
|
36
36
|
Requires-Dist: rpyc
|
|
37
37
|
Requires-Dist: sortedcontainers
|
|
@@ -111,7 +111,7 @@ project.execute()
|
|
|
111
111
|
# Quick Start
|
|
112
112
|
|
|
113
113
|
- [Install Instructions](https://docs.angr.io/introductory-errata/install)
|
|
114
|
-
- Documentation as [HTML](https://docs.angr.io/) and
|
|
114
|
+
- Documentation as [HTML](https://docs.angr.io/) and sources in the angr [Github repository](https://github.com/angr/angr/tree/master/docs)
|
|
115
115
|
- Dive right in: [top-level-accessible methods](https://docs.angr.io/core-concepts/toplevel)
|
|
116
116
|
- [Examples using angr to solve CTF challenges](https://docs.angr.io/examples).
|
|
117
117
|
- [API Reference](https://angr.io/api-doc/)
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=jZ7J_w9rxQK9DXdqVtnRFMKOIBAJpYuccC5KpQIjItk,3821
|
|
2
2
|
angr/annocfg.py,sha256=dK5JAdN4Ig_jgxTBZeZXwk3kAS4-IQUvE6T02GBZTDQ,10818
|
|
3
3
|
angr/blade.py,sha256=1f5cqw1w6mKtYszN2-5QMxaoP_bbqpIaVlE7Vpf8yjc,15161
|
|
4
4
|
angr/block.py,sha256=RXro1XdUTztfPL2r62m2YA1XTNe7bP0lkBUDYzz_FyE,14371
|
|
5
5
|
angr/callable.py,sha256=p98KlOijfkcGnUx1C-lNt-R5ncYF4md6oxC7aBKc8Ws,5513
|
|
6
|
-
angr/calling_conventions.py,sha256=
|
|
7
|
-
angr/code_location.py,sha256=
|
|
6
|
+
angr/calling_conventions.py,sha256=VGW33W7cbnrV0rPxRLVPjfwXPmhPvvQcqSsBw86HDeE,88751
|
|
7
|
+
angr/code_location.py,sha256=ow0Z8OF8FNBPZs4PUmRej_5aHaKTmUIanYPro3iHAMs,5476
|
|
8
8
|
angr/codenode.py,sha256=uF9iObkowp87iBZimrpNl-JSr7vQanhL94dWESnw1Ks,3759
|
|
9
9
|
angr/errors.py,sha256=uYZEr2kYrKeylLIkrfNOtLy68sA0R3OJ9CD77Ucg4NQ,8191
|
|
10
10
|
angr/factory.py,sha256=rHwRkt47EeJW2tsL9aIq_NjantEJwCsqdd34mg2HmVk,17141
|
|
11
11
|
angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
12
|
angr/keyed_region.py,sha256=vgaJ7sUkUeGfXY-dRcRl40qNtB-JDbIWaL7xRdcDGdQ,17363
|
|
13
|
-
angr/project.py,sha256=
|
|
13
|
+
angr/project.py,sha256=JkachB9bfKg3uLnleqb2E2Yjbu35Dts4auM0doTPKHw,37032
|
|
14
14
|
angr/py.typed,sha256=SQuN8RfR7Scqb98Wf7vJndZle4ROvVL1kp6l5M7EpmY,7
|
|
15
15
|
angr/serializable.py,sha256=6cljvzAqFwsLqFu9ouCno7hMpgstha5-8C7RyWNCRXc,1502
|
|
16
16
|
angr/service.py,sha256=9R50bFaCf6zjxybiEIVIkODSVCsE2VcTul_KjjsjaGU,1102
|
|
17
|
-
angr/sim_manager.py,sha256=
|
|
17
|
+
angr/sim_manager.py,sha256=b7saPxVQmXInT4PmEUVHIV-Fuj1X1c8rxiCy9AIBiaY,39300
|
|
18
18
|
angr/sim_options.py,sha256=OuT01xS_F3ifBD9MAfZmNCnfjtTg0HulZlrKcs1LNSY,18057
|
|
19
19
|
angr/sim_procedure.py,sha256=uM4poyQYkVy_zlJqgyM_CbtVcDRbSsyZ1Z50i4yFwNw,25822
|
|
20
|
-
angr/sim_state.py,sha256
|
|
20
|
+
angr/sim_state.py,sha256=--Ou3Pprhu-iPGWhQV6wfcEH6XW-IPfo9c-MquRgHoQ,37875
|
|
21
21
|
angr/sim_state_options.py,sha256=lfP7ygngjGe0AGV5rkE24tvBazJBZG-RTdrKj4rL9XE,12530
|
|
22
22
|
angr/sim_type.py,sha256=71FRCbPM1sl0d-Wp7pzQeNsMC0nVE7wggoRa7YloeTM,115733
|
|
23
23
|
angr/sim_variable.py,sha256=GhlHsMknbMs6OWfI0CM0VUMKlk16irBzPloSk7S8HuI,17235
|
|
@@ -32,7 +32,7 @@ angr/analyses/binary_optimizer.py,sha256=uXrvQ1pVKev9o0aqnuqz7Mbo20vMoZogJpvrjdj
|
|
|
32
32
|
angr/analyses/bindiff.py,sha256=aFFfp4zHJqYGFp2ge-MBt7q2k1DFZb9VD1zC_cxFMmE,51815
|
|
33
33
|
angr/analyses/boyscout.py,sha256=BFlxz4o8mpFXDiObd_x_9ObGvgBeh-zlxcC-_YT2wHs,2448
|
|
34
34
|
angr/analyses/callee_cleanup_finder.py,sha256=gWeXZNM1wFYz6v2Fgy_0DlJSx53Zkf2M5lgvIGARCm8,2835
|
|
35
|
-
angr/analyses/calling_convention.py,sha256=
|
|
35
|
+
angr/analyses/calling_convention.py,sha256=8w9xk639qECs-eFGdt_1vBjt_dof517Mgc_GCohUG4U,36481
|
|
36
36
|
angr/analyses/cdg.py,sha256=OAnsjM1MgWXEToyOprxyWPTsn3BA_HBnrCXllB0h3h0,6361
|
|
37
37
|
angr/analyses/class_identifier.py,sha256=4yVo0hbvcdf5xVr_OCqdEgYKsNFQy7RzMRMiqFyikW4,3031
|
|
38
38
|
angr/analyses/code_tagging.py,sha256=_SnJd0FkE1ZXvv6uzxaoIACJANKCrGtK3nLWcuS7Lb0,3641
|
|
@@ -43,7 +43,7 @@ angr/analyses/ddg.py,sha256=DLDVy7jA20gobLLJkm617uoVK7sQ74v3bfwqq_61ETw,63433
|
|
|
43
43
|
angr/analyses/disassembly.py,sha256=hLHnCSeHXm94rbtGJS3Ri-LfvVML92NO2tAm_sUTgTo,45143
|
|
44
44
|
angr/analyses/disassembly_utils.py,sha256=4Np0PCPjr0h0jIVzUUG6KzrEKl9--IpTE3sgmmsmhcg,2989
|
|
45
45
|
angr/analyses/dominance_frontier.py,sha256=XRfC_LUUetE8t1Cc9bwvWS9sl63Fx9sp8KFqN_Y9IDg,1245
|
|
46
|
-
angr/analyses/find_objects_static.py,sha256=
|
|
46
|
+
angr/analyses/find_objects_static.py,sha256=cgeNIl4EJOYUJIXhHUfUHFt1Ai7cGSjEIjL4gsJJlV4,10108
|
|
47
47
|
angr/analyses/flirt.py,sha256=-n6GShXV6PLKDHr4nML49ZwAAlmMIP5SDeF2KmJVKOM,7847
|
|
48
48
|
angr/analyses/init_finder.py,sha256=hFHPsHipF4QkWzVqcDeTgL6YIaYi8bAyaURZBksS4KI,8531
|
|
49
49
|
angr/analyses/loop_analysis.py,sha256=nIbDIzvys-FRtJYnoZYNbMWH5V88qrhoMtrMRCTbkLY,9412
|
|
@@ -62,9 +62,9 @@ angr/analyses/cfg/__init__.py,sha256=DRCry4KO2k5VJLyfxD_O6dWAdi21IUoaN5TqCnukJJs
|
|
|
62
62
|
angr/analyses/cfg/cfb.py,sha256=TqYdFau9ZH_m6cwkxbA35vDs2ES5rOFqfIuZi0lCBsQ,15450
|
|
63
63
|
angr/analyses/cfg/cfg.py,sha256=1JpPGlqXXRFwE0tk26xjabT_-dq-kqAxMv7o6-DUhp4,3146
|
|
64
64
|
angr/analyses/cfg/cfg_arch_options.py,sha256=YONHg6y-h6BCsBkJK9tuxb94DDfeOoy9CUS-LVyyDyg,3112
|
|
65
|
-
angr/analyses/cfg/cfg_base.py,sha256=
|
|
65
|
+
angr/analyses/cfg/cfg_base.py,sha256=Mq85r2uC1vU-1k9reB_0yTbaVphpOrZ35PP1wOx8Brk,121115
|
|
66
66
|
angr/analyses/cfg/cfg_emulated.py,sha256=Fi3rDN5ByxhO-H4Y7qn-3WZgBG12JGyvxcWmrD_FnFQ,152842
|
|
67
|
-
angr/analyses/cfg/cfg_fast.py,sha256=
|
|
67
|
+
angr/analyses/cfg/cfg_fast.py,sha256=e01dvIOShlkXFLqcVRVTSns8Joa7e67lcUpnGj-k6CI,204468
|
|
68
68
|
angr/analyses/cfg/cfg_fast_soot.py,sha256=eA_P-OY3gRRNj2BBgSPMsB_llGyFFCNW3VyGZ2uiMoM,26047
|
|
69
69
|
angr/analyses/cfg/cfg_job_base.py,sha256=3IQE_Iy17xtGfsIkrKc2ERIakAYiNdLtRb_jwOGQtHU,5989
|
|
70
70
|
angr/analyses/cfg/segment_list.py,sha256=XM-rcLHkl008U5xu9pkVCenhcHWAFBKwVdDLa-kGFgY,20467
|
|
@@ -88,12 +88,12 @@ angr/analyses/data_dep/data_dependency_analysis.py,sha256=12WNVAdY196JZf37AfkdPD
|
|
|
88
88
|
angr/analyses/data_dep/dep_nodes.py,sha256=BCpIPECRJhlX2sMO2LtaXxSD25-Edw2vXQOVcx5i55w,4650
|
|
89
89
|
angr/analyses/data_dep/sim_act_location.py,sha256=4f8jp-ahitxoHCCOSSFGJ1olvNWuHyiE6iOLa5DA0k4,1527
|
|
90
90
|
angr/analyses/decompiler/__init__.py,sha256=RkTvvTwAGpaLdGSTgXxVrKmGEDRxqLCNSB-b8fM6fBM,540
|
|
91
|
-
angr/analyses/decompiler/ail_simplifier.py,sha256=
|
|
91
|
+
angr/analyses/decompiler/ail_simplifier.py,sha256=D6EYpPHrsiE3RA34rt4V4XORf7AYCzlHIp6FyrvTjec,52395
|
|
92
92
|
angr/analyses/decompiler/ailgraph_walker.py,sha256=sBz9Cn0GtdpuFt7R9y3oX6NFvETQTZRh6N80eM9ZdJQ,1595
|
|
93
|
-
angr/analyses/decompiler/block_simplifier.py,sha256=
|
|
94
|
-
angr/analyses/decompiler/callsite_maker.py,sha256=
|
|
93
|
+
angr/analyses/decompiler/block_simplifier.py,sha256=hrqMeFu1mFwk-Nor-e1OKVkOar1nzx1ynJQoy8PY0nA,16756
|
|
94
|
+
angr/analyses/decompiler/callsite_maker.py,sha256=I1lgjCNIZxXW3K_4b_JhTeQ27_tYXP2bu71BXPVZeqU,14945
|
|
95
95
|
angr/analyses/decompiler/clinic.py,sha256=HjR4x1NYuagWr0b_lK0W5i3oqAl9EdymMK0BOvwzZQs,71322
|
|
96
|
-
angr/analyses/decompiler/condition_processor.py,sha256=
|
|
96
|
+
angr/analyses/decompiler/condition_processor.py,sha256=hJSd3JI1Qwmr5f4aRkv7Bd5OdWD8uXSIpYqGO_9P89o,47904
|
|
97
97
|
angr/analyses/decompiler/decompilation_cache.py,sha256=NveTVs6IY3TTdgsLvTb3ktftM4n0NrAJIkqjXqQ3550,1119
|
|
98
98
|
angr/analyses/decompiler/decompilation_options.py,sha256=W_l0Sl6yLiYC2iLkXgC0I8staUWgYoeR2yevwcXri9c,6739
|
|
99
99
|
angr/analyses/decompiler/decompiler.py,sha256=fYfM3UqQA_tjcjk1sWiLHNyfGDsvIMdHtG8z-0wOGHc,19690
|
|
@@ -107,7 +107,7 @@ angr/analyses/decompiler/redundant_label_remover.py,sha256=kDGGFWWV61I5fbASiTQTH
|
|
|
107
107
|
angr/analyses/decompiler/region_identifier.py,sha256=doxPwx7B4DCMtIDCf_wosGNMR9zj_SOME3lQ6AvXDF8,44212
|
|
108
108
|
angr/analyses/decompiler/region_walker.py,sha256=lTfweYbY4_a2f2yGztTKG6JtU1jXf-kaz-NHbX9nkXE,717
|
|
109
109
|
angr/analyses/decompiler/sequence_walker.py,sha256=Ak8jog1BRJIQZdOv7QRzcv-SgXR0Wfh0QicqgXuWUIM,7410
|
|
110
|
-
angr/analyses/decompiler/utils.py,sha256=
|
|
110
|
+
angr/analyses/decompiler/utils.py,sha256=z8gFuptbqw6lhKwZvO-yEpNo8SRoFgMEIv-c-E_gwrs,14845
|
|
111
111
|
angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=wbWqZ8xG6ZvzEApkAwMsNQFC-iwF3swG1YJsaf1cIrQ,102
|
|
112
112
|
angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=tgNvZ6I5wPWcrc7EDnGPzgkn2Q9p4n4AAAnZaEM_Igk,10571
|
|
113
113
|
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=gWezEKB7A_YnlfUDs8V8D5syoYAyIXSIme1BKQRoouM,498
|
|
@@ -118,7 +118,7 @@ angr/analyses/decompiler/optimization_passes/div_simplifier.py,sha256=1yTI1mmFHB
|
|
|
118
118
|
angr/analyses/decompiler/optimization_passes/eager_returns.py,sha256=zcAMF9dk0lV-K0oeSr3zC3CePJMFhUu781ySgRy8vfo,11053
|
|
119
119
|
angr/analyses/decompiler/optimization_passes/engine_base.py,sha256=Q920CTvgxX4ueuRJVNvN30SYC-oH5_TreKVgQ2yJcq4,10392
|
|
120
120
|
angr/analyses/decompiler/optimization_passes/expr_op_swapper.py,sha256=vlPhWDyvuEmbGcd1ka8rS68F72Ty6Hw3J00KM3tWCus,4701
|
|
121
|
-
angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=
|
|
121
|
+
angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=qo3Sb288cqRRhVCylcTDwfvcI-w3tA18FVYrS5km2YU,3163
|
|
122
122
|
angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=VBzHsSIImh0Q_7TUN4cV7n-4itrqn1Edn13WkgjAkGc,7610
|
|
123
123
|
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=mnGBJ8r10cHHB0g9TV-xQYd4xO_PBj66Rzz7VAfroZA,19038
|
|
124
124
|
angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=A9pPly7otXJlLkSbItU0wvjGGu6rUsNpcFw3bzy4DjY,3046
|
|
@@ -128,7 +128,7 @@ angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py,sh
|
|
|
128
128
|
angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py,sha256=SNwCleooT3nS2d7dNUIf4_QQrkgwKLf23PSBtMZO-Q0,6206
|
|
129
129
|
angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py,sha256=diqUO-k1hq9OzuC7OLMyJJODhy3i1c5Tb7d9f7lx6mU,12147
|
|
130
130
|
angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py,sha256=lwLc9QpOCTdSIb-0SK0hdxi2gzpABTk2kzdwBY20UOo,2980
|
|
131
|
-
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=
|
|
131
|
+
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=QpOYj2Wim4BY3D384C4dZfV8QdxzDVHgyz-SYxe8S1c,2614
|
|
132
132
|
angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=-cb1uohmx3o1ENFRKxTNvL61tQR4COq57cdL55bI_v8,1717
|
|
133
133
|
angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py,sha256=CMNNfuxsudSEXl9xkUGcd7VANkS4XA5zXbMd0H9XDx0,1355
|
|
134
134
|
angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py,sha256=jFRNyqZ3R4u8CcsBEa2EqpufQ5-oxJdhKLzMCzvb3Tg,978
|
|
@@ -143,9 +143,9 @@ angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py,sha2
|
|
|
143
143
|
angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py,sha256=qLjzpazS4vOfzUzjiSYATk9Wd9azVIjKz5eVL3Ma2-c,981
|
|
144
144
|
angr/analyses/decompiler/peephole_optimizations/bswap.py,sha256=2NtQCw-whJImo9J-74G_Q15pVoAopTZTatIwJN0sJ8s,3653
|
|
145
145
|
angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=NTgzX67jatngaRXUbuVr89v39c5YBu4Xl8FT-pH_SZs,906
|
|
146
|
+
angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py,sha256=R4ZyI68jMLQZQE52yuSjA8lH_01OqKYL-npfZTNerYc,3681
|
|
146
147
|
angr/analyses/decompiler/peephole_optimizations/constant_derefs.py,sha256=n3SVw_gs7SL5vEbHfFcTrc4SGnD74TyasKYxLP9VBIQ,988
|
|
147
148
|
angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=pvIOzWNBYUyDjj634KeSlo5Qb8E_UBuezDoyYGE_CBw,2568
|
|
148
|
-
angr/analyses/decompiler/peephole_optimizations/conv_const_mull_a_shift.py,sha256=0dX8tqr7qOgIuZaiQ1YT9o-t-uj6cQmDbz67wSEM79U,3569
|
|
149
149
|
angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py,sha256=4zQ5DGNX6z-CAartjDM4vm-zCeiaRXYFbhriMKuOLp8,2060
|
|
150
150
|
angr/analyses/decompiler/peephole_optimizations/eager_eval.py,sha256=SUjzkqLm0s-95zOdmg3oY1OBUoT0rXz08h5Ck_5Y-Tk,8464
|
|
151
151
|
angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py,sha256=Snm7FXANsgoTUqV0_wVZvxNxFx75hJW9JYnazhMyMWg,2005
|
|
@@ -181,7 +181,7 @@ angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py,sha256=
|
|
|
181
181
|
angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py,sha256=HGIiC6c3C91VfcqxUHe9aTsRohwmMXOHZH_G_dbwwx4,3327
|
|
182
182
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=Glc4jBCr7lZckltN9XZdSvMrGHf0swXFyKTr_QQKdWE,290
|
|
183
183
|
angr/analyses/decompiler/structured_codegen/base.py,sha256=nJPOoeJCbewchYdXjSE4S2b1-WN6pT3TxmCQMDO0azw,3845
|
|
184
|
-
angr/analyses/decompiler/structured_codegen/c.py,sha256=
|
|
184
|
+
angr/analyses/decompiler/structured_codegen/c.py,sha256=XofIIn12KHRwkGqC0CNYOhLO6dz9oODGkk4tSEfCk7g,125321
|
|
185
185
|
angr/analyses/decompiler/structured_codegen/dummy.py,sha256=IVfmtcWpTgNCRVsuW3GdQgDnuPmvodX85V0bBYtF_BI,535
|
|
186
186
|
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=TMz65TkF_ID_Ipocj0aFDb84H6slolN90wq0tzhY2Rk,6773
|
|
187
187
|
angr/analyses/decompiler/structuring/__init__.py,sha256=eSiT6xUpv9K5-enK3OZj2lNzxwowS9_5OTrjHiPgfFs,371
|
|
@@ -230,7 +230,7 @@ angr/analyses/identifier/functions/strncmp.py,sha256=XlqTTLjfPRj7LSw3-xHoH4SJyNi
|
|
|
230
230
|
angr/analyses/identifier/functions/strncpy.py,sha256=1WUrhXMS5Sd5rfgBJbChZD_BZ_D47Z_H4AZwriyqDO0,2008
|
|
231
231
|
angr/analyses/identifier/functions/strtol.py,sha256=Py_6Y9rR5dfy53LX8w9WktSBaxdyPlbrcLEiV6cWfHs,2426
|
|
232
232
|
angr/analyses/propagator/__init__.py,sha256=5-UKSiAtYocLzmQWXPzxyBnPui_c8P_r617KDwtRnNw,43
|
|
233
|
-
angr/analyses/propagator/engine_ail.py,sha256=
|
|
233
|
+
angr/analyses/propagator/engine_ail.py,sha256=qemofPgS_1m7j83UY6OM8HLL5alzbD0RR8B8g-goDuk,50780
|
|
234
234
|
angr/analyses/propagator/engine_base.py,sha256=goOgu0QWurCThIYI0QeillAx8SfT5rLeuwGup5Njffo,1473
|
|
235
235
|
angr/analyses/propagator/engine_vex.py,sha256=IEQ2bxM3HbEn4WkYzQHugOszGv8XT92Tqn87alExwfU,10012
|
|
236
236
|
angr/analyses/propagator/outdated_definition_walker.py,sha256=OJnI9rlyutyy2qHMTqnrnQJCXKcBHvgwHfiqlWDECiY,6890
|
|
@@ -239,16 +239,17 @@ angr/analyses/propagator/tmpvar_finder.py,sha256=GqP1lm-_ez4AvXraDt1BQ1o7GvdjLI7
|
|
|
239
239
|
angr/analyses/propagator/top_checker_mixin.py,sha256=8NujgeNTiaSb6JQ3J01P5QJSnQ_mnF88m7rXlATIruQ,359
|
|
240
240
|
angr/analyses/propagator/values.py,sha256=b8zg2VIPJoZj4qtF3_XRfoxA7LjXxO9OIkqZ3y0Wc_M,1991
|
|
241
241
|
angr/analyses/propagator/vex_vars.py,sha256=O0W7GekEZIVwiNiOdyu-BuxCZmHFZPh_ho7jmbnYAwk,1433
|
|
242
|
-
angr/analyses/reaching_definitions/__init__.py,sha256=
|
|
242
|
+
angr/analyses/reaching_definitions/__init__.py,sha256=3itfNz4b0XcTDJJbU10gZfSuqUAx0s8poicXhXZUpys,1989
|
|
243
243
|
angr/analyses/reaching_definitions/call_trace.py,sha256=5y8VtU-5-2ISamCkok6zoMahWASO2TBQYl5Q0pgeLGw,2217
|
|
244
|
-
angr/analyses/reaching_definitions/dep_graph.py,sha256=
|
|
245
|
-
angr/analyses/reaching_definitions/engine_ail.py,sha256=
|
|
246
|
-
angr/analyses/reaching_definitions/engine_vex.py,sha256=
|
|
247
|
-
angr/analyses/reaching_definitions/external_codeloc.py,sha256=
|
|
248
|
-
angr/analyses/reaching_definitions/function_handler.py,sha256=
|
|
244
|
+
angr/analyses/reaching_definitions/dep_graph.py,sha256=WAgVUnVnq_K6dFeA5q1aeEq6BUyVv3iB3yQ7GhTfp4M,14819
|
|
245
|
+
angr/analyses/reaching_definitions/engine_ail.py,sha256=tVZldio05eSlR2fZONNUkjSh1BFhQKShaDxvLd4EAOs,43972
|
|
246
|
+
angr/analyses/reaching_definitions/engine_vex.py,sha256=0QNbqma8e5kpl9lrENPC8-fU-VcR0RXtKMEmd4kf7-Y,40926
|
|
247
|
+
angr/analyses/reaching_definitions/external_codeloc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
248
|
+
angr/analyses/reaching_definitions/function_handler.py,sha256=FwCt0wCB0gO2JNUMSsoP6awTCz8dkLOZCx0ZOZhY5kU,25611
|
|
249
249
|
angr/analyses/reaching_definitions/heap_allocator.py,sha256=L7LCcE-QvLd_vuc0slWmQ6X73wkYNMkUEDy1cJAV818,2634
|
|
250
|
-
angr/analyses/reaching_definitions/
|
|
251
|
-
angr/analyses/reaching_definitions/
|
|
250
|
+
angr/analyses/reaching_definitions/rd_initializer.py,sha256=J4-VscXm7_7dNjCFFwdjAYJQs_ZkPoFQJKXuoobSjno,10353
|
|
251
|
+
angr/analyses/reaching_definitions/rd_state.py,sha256=BxWH0MS4Qmd8dUFOWnP67GjPNXWMgjHjEusUHH7ng3Q,23146
|
|
252
|
+
angr/analyses/reaching_definitions/reaching_definitions.py,sha256=4wAoyhHTV-ZLsT2asNFtT8SLRDYqnjOtwu9lelzGjxk,22225
|
|
252
253
|
angr/analyses/reaching_definitions/subject.py,sha256=GVaI1jM-Nv2MWaCjJ-Q_54nSS3hvAaZthz14AJJNq-A,1995
|
|
253
254
|
angr/analyses/typehoon/__init__.py,sha256=kCQMAuvsUKAdYFiOstBzMBCqpquJKJCQSe0CGAr2Rng,31
|
|
254
255
|
angr/analyses/typehoon/lifter.py,sha256=IfkY27IyJ7QeQnVER89ZhdyScKLAoHCdVpcvtdqTy8I,1675
|
|
@@ -379,7 +380,7 @@ angr/engines/vex/light/__init__.py,sha256=WblrLgYRbdBAvNGbkzGsTgOq2A_pUBJP-FxANP
|
|
|
379
380
|
angr/engines/vex/light/light.py,sha256=6aGk83QpcRFlfI-bI_tGM7EszGtdudCGI26qfTasoNI,21729
|
|
380
381
|
angr/engines/vex/light/resilience.py,sha256=FaHiSMv_hsIiNEqA2Wga2F3bVyXGPtWudL00785ebEs,2002
|
|
381
382
|
angr/engines/vex/light/slicing.py,sha256=lGZsF5_xtVKjCJmD2FMABkyz-kZWctWOMjuWnFWpe2g,2023
|
|
382
|
-
angr/exploration_techniques/__init__.py,sha256=
|
|
383
|
+
angr/exploration_techniques/__init__.py,sha256=95T9fVNalvf0veq0NAmmHE-cEfBPoP_S-IRcilXGx5o,6980
|
|
383
384
|
angr/exploration_techniques/bucketizer.py,sha256=H-5QyOfDNdCSTbCk8MQluwi9C9Y0iE7E1s_4EAb3LXk,2588
|
|
384
385
|
angr/exploration_techniques/common.py,sha256=7vKlFQjuVoTmtKgYbYjhg67-e3weTzFtU2hC91wHHtI,2262
|
|
385
386
|
angr/exploration_techniques/dfs.py,sha256=IpEmTGVqGAKUCmchKBR_w0SISIsBlNRjdp6sgZlcWis,1167
|
|
@@ -420,7 +421,7 @@ angr/knowledge_plugins/plugin.py,sha256=KCyO8mSxrFzOdEjiiuqaxvn_XF36FK7PPnDxie65
|
|
|
420
421
|
angr/knowledge_plugins/types.py,sha256=fY1M8_21-ra5U7U0lXd2vxruMSOjb3F8-5iU5tpOw-A,1911
|
|
421
422
|
angr/knowledge_plugins/cfg/__init__.py,sha256=L7qgnAg6rXGq8NCfdr1RLSSPRmQ1O87ZkLEDeC6k000,382
|
|
422
423
|
angr/knowledge_plugins/cfg/cfg_manager.py,sha256=EmjrBpv3XtqzrPNTc5ugEytJ9YvFkTzjBV9a8sUtbHw,2257
|
|
423
|
-
angr/knowledge_plugins/cfg/cfg_model.py,sha256=
|
|
424
|
+
angr/knowledge_plugins/cfg/cfg_model.py,sha256=DngKKxlbS3GGQvvyeqMPl_9rlECsFiftrkMpgg0-qek,41304
|
|
424
425
|
angr/knowledge_plugins/cfg/cfg_node.py,sha256=Q_qqQ1LisCzTWROOQAfvyaBjS86zxcMw6ItzxwQqCHA,17229
|
|
425
426
|
angr/knowledge_plugins/cfg/indirect_jump.py,sha256=yzPf1jjUNPgGP7D7IamqX6KF-EJX-heZjDEr4SRUWDA,2145
|
|
426
427
|
angr/knowledge_plugins/cfg/memory_data.py,sha256=ZJMzA9ijo2O5TSsNutPK0pzq4k9fQmjcnNQnIS0uqmI,4167
|
|
@@ -429,14 +430,14 @@ angr/knowledge_plugins/functions/function.py,sha256=kCBJEz31DAdnnknJJAJ56xyxqkup
|
|
|
429
430
|
angr/knowledge_plugins/functions/function_manager.py,sha256=vnUW-6RxRyjnO3doiuACRI-OgGuATwdOAQogLlxwv3M,17459
|
|
430
431
|
angr/knowledge_plugins/functions/function_parser.py,sha256=cb_AD5oFqoyXapDBawnJV1D9XVRMBGa9GwwDudNSc3M,11916
|
|
431
432
|
angr/knowledge_plugins/functions/soot_function.py,sha256=2zwz_tdKbEnF8eUkOEmpNr7AUeooun2-SiIoY_xIdMw,4971
|
|
432
|
-
angr/knowledge_plugins/key_definitions/__init__.py,sha256=
|
|
433
|
-
angr/knowledge_plugins/key_definitions/atoms.py,sha256=
|
|
433
|
+
angr/knowledge_plugins/key_definitions/__init__.py,sha256=xnn-6qL8csRtqWkHn6OTHQxiQChD8Z1xuqLN56GjZi4,397
|
|
434
|
+
angr/knowledge_plugins/key_definitions/atoms.py,sha256=FfEwsrSgaiupL_ZP205Tr0DWdl092SuCirdSp145SVM,9699
|
|
434
435
|
angr/knowledge_plugins/key_definitions/constants.py,sha256=bbS81EF2cXvoIS7ORxH_j3tTxBL5fUaqaZ6plBWaVKw,458
|
|
435
|
-
angr/knowledge_plugins/key_definitions/definition.py,sha256=
|
|
436
|
+
angr/knowledge_plugins/key_definitions/definition.py,sha256=52sL9L4I-Kh9ZLIy3YAPjHbX-IbfUmVAZFYSx3VXknE,8681
|
|
436
437
|
angr/knowledge_plugins/key_definitions/environment.py,sha256=cbNst29pGtv13Z6jlvdBIajYkE3X9MnAV5ixRTHkHzQ,3461
|
|
437
438
|
angr/knowledge_plugins/key_definitions/heap_address.py,sha256=62vX5xkT91qO-6IKtGtGNUqgkfFUU1_Al6B9vU-SA7E,922
|
|
438
439
|
angr/knowledge_plugins/key_definitions/key_definition_manager.py,sha256=PETOIDYYj7VPp2rtIO5XhXnvi3lgDr9qXa4pZrwbCho,3235
|
|
439
|
-
angr/knowledge_plugins/key_definitions/live_definitions.py,sha256=
|
|
440
|
+
angr/knowledge_plugins/key_definitions/live_definitions.py,sha256=60kqc4vsrorUBgVlP6AJZ4fdP3Qnmv3X7v2bzZw0HHQ,39329
|
|
440
441
|
angr/knowledge_plugins/key_definitions/liveness.py,sha256=PqciLk4cdHLxNp4mmyCDMpgCxSbk9VJZlx5Ai5_LYos,4054
|
|
441
442
|
angr/knowledge_plugins/key_definitions/rd_model.py,sha256=pNPkHRVI41ObxZ_BDK-4cLoK-WfeCwxa9gOpAyHBQIM,7022
|
|
442
443
|
angr/knowledge_plugins/key_definitions/tag.py,sha256=uBHlS71E3Ok_6V3K8NkMblctCrnAHmPYikaFTA02PyA,1682
|
|
@@ -1116,7 +1117,7 @@ angr/state_plugins/heap/heap_ptmalloc.py,sha256=G5R4CQ9iG3luayWiROfBGOLb5jO_mxMf
|
|
|
1116
1117
|
angr/state_plugins/heap/utils.py,sha256=Peru_TgVCGRQEORQJVwJfQB1Wleglk_Hdp7aOHQa6no,793
|
|
1117
1118
|
angr/storage/__init__.py,sha256=X3JnQg95SqAqahP1x10Kk5E0OXxyNlV2Xk3NKyXzykA,182
|
|
1118
1119
|
angr/storage/file.py,sha256=5784YCroDh5RNc_DHeOuD8Qz3JebY82-dyQ0yd6xUqM,48231
|
|
1119
|
-
angr/storage/memory_object.py,sha256=
|
|
1120
|
+
angr/storage/memory_object.py,sha256=U0T-XB7CxUqISODY6o2WONjiThHyzFKBjZ8D0pWLPj4,5663
|
|
1120
1121
|
angr/storage/pcap.py,sha256=8n30ui0KO7qx_RgmGFL_cBYMF5AlQ5LzVFeCh9ODU6c,1940
|
|
1121
1122
|
angr/storage/memory_mixins/__init__.py,sha256=kvkP1G7eLrHP7WAk2cJSfZmOkSIuxtzJveXJ5QjBZgs,11700
|
|
1122
1123
|
angr/storage/memory_mixins/actions_mixin.py,sha256=KZSCMjGB_Sbk_rlgGxk4k02Pu3b569c6tG-xPoH31L0,3402
|
|
@@ -1154,7 +1155,7 @@ angr/storage/memory_mixins/paged_memory/pages/cooperation.py,sha256=pz7HEzWkNeti
|
|
|
1154
1155
|
angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py,sha256=Az7lg1gXapWxj8tIx0Sz9x2nJfm71oBy5Rm87CUh9mM,2727
|
|
1155
1156
|
angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py,sha256=mHt5nQYXkXifwGT0_UGvKirECEC2v7jNNtf_6oY57uI,2050
|
|
1156
1157
|
angr/storage/memory_mixins/paged_memory/pages/list_page.py,sha256=ey-c8PLa_iH5gyz6VRcxtK1I9w8JbIrvkFO1Hj9V8L8,14108
|
|
1157
|
-
angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=
|
|
1158
|
+
angr/storage/memory_mixins/paged_memory/pages/multi_values.py,sha256=gI7Uj5eTthgSq2wxrOnsvc_wUdxB_okMZ5gBjAFZUQg,10585
|
|
1158
1159
|
angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py,sha256=KoBLEZ1-3erAG45y_l9eGFcVTDjGYJcvvWIGqeL9cL4,15810
|
|
1159
1160
|
angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py,sha256=Ek2YSmFOGUScFXPx8hqroNkl3gK1aqKCMv_X3_pImLs,830
|
|
1160
1161
|
angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py,sha256=oES5tahTy4SgyDi2h5oRRC0PC4JHNcIvdAC4INKkeJw,1701
|
|
@@ -1182,8 +1183,9 @@ angr/utils/library.py,sha256=MYbY6rvC2Fi1ofbBHynh6-cdmaDETxj8hBz1gxKvsQQ,7178
|
|
|
1182
1183
|
angr/utils/loader.py,sha256=QdkatPiyRfz5KdfCzRI1Xp3TJL_Pa75wY0dsILgMbwk,1944
|
|
1183
1184
|
angr/utils/mp.py,sha256=xSWDnZdkLaTwGXntuSDwb2tIqMsIxJpmLrxd_YWBILw,1822
|
|
1184
1185
|
angr/utils/timing.py,sha256=uOowCP8kotDrKDOjlAod-guBuYkAA8zEtiAwpdwMlIU,1334
|
|
1185
|
-
angr
|
|
1186
|
-
angr-9.2.
|
|
1187
|
-
angr-9.2.
|
|
1188
|
-
angr-9.2.
|
|
1189
|
-
angr-9.2.
|
|
1186
|
+
angr/utils/typing.py,sha256=_I4dzZSh1_uRKQ3PpjXseA_CaJH6ru2yAxjICkJhfmI,417
|
|
1187
|
+
angr-9.2.66.dist-info/LICENSE,sha256=cgL_ho5B1NH8UxwtBuqThRWdjear8b7hktycaS1sz6g,1327
|
|
1188
|
+
angr-9.2.66.dist-info/METADATA,sha256=V_XJv0zQdYIc1Ar4PTYrFdRCaJCDMmnMpFaMz715gcQ,4686
|
|
1189
|
+
angr-9.2.66.dist-info/WHEEL,sha256=EIJ1YQRF7Vdkd0SZAEbpd1G47KYEg3Dx_E5NJZhc5tQ,109
|
|
1190
|
+
angr-9.2.66.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
1191
|
+
angr-9.2.66.dist-info/RECORD,,
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
from ailment.expression import Convert, BinaryOp, Const
|
|
2
|
-
|
|
3
|
-
from .base import PeepholeOptimizationExprBase
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ConvConstMullAShift(PeepholeOptimizationExprBase):
|
|
7
|
-
__slots__ = ()
|
|
8
|
-
|
|
9
|
-
NAME = "Conv(64->32, (N * a) >> M) => a / N1"
|
|
10
|
-
expr_classes = (Convert,)
|
|
11
|
-
|
|
12
|
-
def optimize(self, expr: Convert):
|
|
13
|
-
if expr.from_bits == 64 and expr.to_bits == 32:
|
|
14
|
-
if (
|
|
15
|
-
isinstance(expr.operand, BinaryOp)
|
|
16
|
-
and expr.operand.op == "Shr"
|
|
17
|
-
and isinstance(expr.operand.operands[1], Const)
|
|
18
|
-
):
|
|
19
|
-
# (N * a) >> M ==> a / N1
|
|
20
|
-
inner = expr.operand.operands[0]
|
|
21
|
-
if isinstance(inner, BinaryOp) and inner.op == "Mull" and isinstance(inner.operands[0], Const):
|
|
22
|
-
C = inner.operands[0].value
|
|
23
|
-
X = inner.operands[1]
|
|
24
|
-
V = expr.operand.operands[1].value
|
|
25
|
-
ndigits = 5 if V == 32 else 6
|
|
26
|
-
divisor = self._check_divisor(pow(2, V), C, ndigits)
|
|
27
|
-
if divisor is not None:
|
|
28
|
-
new_const = Const(None, None, divisor, X.bits)
|
|
29
|
-
new_div = BinaryOp(inner.idx, "Div", [X, new_const], inner.signed, **inner.tags)
|
|
30
|
-
return new_div
|
|
31
|
-
|
|
32
|
-
elif isinstance(expr.operand, BinaryOp) and expr.operand.op in {"Add", "Sub"}:
|
|
33
|
-
expr0, expr1 = expr.operand.operands
|
|
34
|
-
if (
|
|
35
|
-
isinstance(expr0, BinaryOp)
|
|
36
|
-
and expr0.op in {"Shr", "Sar"}
|
|
37
|
-
and isinstance(expr0.operands[1], Const)
|
|
38
|
-
and isinstance(expr1, BinaryOp)
|
|
39
|
-
and expr1.op in {"Shr", "Sar"}
|
|
40
|
-
and isinstance(expr1.operands[1], Const)
|
|
41
|
-
):
|
|
42
|
-
if (
|
|
43
|
-
isinstance(expr0.operands[0], BinaryOp)
|
|
44
|
-
and expr0.operands[0].op in {"Mull", "Mul"}
|
|
45
|
-
and isinstance(expr0.operands[0].operands[1], Const)
|
|
46
|
-
):
|
|
47
|
-
a0 = expr0.operands[0].operands[0]
|
|
48
|
-
a1 = expr1.operands[0]
|
|
49
|
-
if a0 == a1:
|
|
50
|
-
# (a * x >> M1) +/- (a >> M2) ==> a / N
|
|
51
|
-
C = expr0.operands[0].operands[1].value
|
|
52
|
-
X = a0
|
|
53
|
-
V = expr0.operands[1].value
|
|
54
|
-
ndigits = 5 if V == 32 else 6
|
|
55
|
-
divisor = self._check_divisor(pow(2, V), C, ndigits)
|
|
56
|
-
if divisor is not None:
|
|
57
|
-
new_const = Const(None, None, divisor, X.bits)
|
|
58
|
-
new_div = BinaryOp(
|
|
59
|
-
expr0.operands[0].idx,
|
|
60
|
-
"Div",
|
|
61
|
-
[X, new_const],
|
|
62
|
-
expr0.operands[0].signed,
|
|
63
|
-
**expr0.operands[0].tags,
|
|
64
|
-
)
|
|
65
|
-
# we cannot drop the convert
|
|
66
|
-
new_div = Convert(
|
|
67
|
-
expr.idx, expr.from_bits, expr.to_bits, expr.is_signed, new_div, **expr.tags
|
|
68
|
-
)
|
|
69
|
-
return new_div
|
|
70
|
-
|
|
71
|
-
@staticmethod
|
|
72
|
-
def _check_divisor(a, b, ndigits=6):
|
|
73
|
-
divisor_1 = 1 + (a // b)
|
|
74
|
-
divisor_2 = int(round(a / float(b), ndigits))
|
|
75
|
-
return divisor_1 if divisor_1 == divisor_2 else None
|
|
File without changes
|
|
File without changes
|