angr 9.2.175__cp310-abi3-manylinux_2_28_aarch64.whl → 9.2.177__cp310-abi3-manylinux_2_28_aarch64.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/calling_convention.py +12 -0
- angr/analyses/complete_calling_conventions.py +39 -26
- angr/analyses/decompiler/ail_simplifier.py +14 -12
- angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +5 -1
- angr/analyses/decompiler/clinic.py +54 -40
- angr/analyses/decompiler/optimization_passes/ite_region_converter.py +3 -3
- angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +2 -2
- angr/analyses/decompiler/peephole_optimizations/__init__.py +4 -4
- angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py +69 -12
- angr/analyses/decompiler/peephole_optimizations/{inlined_wstrcpy.py → inlined_wcscpy.py} +16 -8
- angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py +296 -0
- angr/analyses/decompiler/ssailification/rewriting_engine.py +14 -1
- angr/analyses/decompiler/structured_codegen/c.py +6 -5
- angr/analyses/decompiler/structuring/dream.py +2 -2
- angr/analyses/decompiler/structuring/phoenix.py +101 -23
- angr/analyses/decompiler/utils.py +10 -3
- angr/analyses/flirt/flirt.py +5 -4
- angr/analyses/stack_pointer_tracker.py +4 -3
- angr/analyses/typehoon/lifter.py +29 -18
- angr/analyses/typehoon/simple_solver.py +157 -50
- angr/analyses/typehoon/translator.py +34 -34
- angr/analyses/typehoon/typeconsts.py +33 -15
- angr/analyses/typehoon/typevars.py +9 -2
- angr/analyses/variable_recovery/engine_ail.py +43 -2
- angr/analyses/variable_recovery/engine_base.py +4 -1
- angr/analyses/variable_recovery/variable_recovery_fast.py +3 -1
- angr/emulator.py +2 -1
- angr/engines/hook.py +1 -1
- angr/engines/icicle.py +21 -5
- angr/engines/vex/claripy/ccall.py +3 -3
- angr/knowledge_plugins/functions/function.py +19 -2
- angr/procedures/definitions/__init__.py +9 -0
- angr/procedures/definitions/parse_win32json.py +11 -0
- angr/procedures/definitions/wdk/ntoskrnl.json +4 -0
- angr/procedures/posix/pthread.py +4 -4
- angr/procedures/stubs/format_parser.py +3 -3
- angr/rustylib.abi3.so +0 -0
- angr/sim_type.py +11 -6
- angr/simos/windows.py +1 -1
- angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +1 -1
- angr/utils/constants.py +1 -1
- angr/utils/strings.py +20 -0
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/METADATA +5 -5
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/RECORD +49 -48
- angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy_consolidation.py +0 -113
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/WHEEL +0 -0
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/entry_points.txt +0 -0
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/licenses/LICENSE +0 -0
- {angr-9.2.175.dist-info → angr-9.2.177.dist-info}/top_level.txt +0 -0
angr/procedures/posix/pthread.py
CHANGED
|
@@ -52,20 +52,20 @@ class pthread_cond_signal(angr.SimProcedure):
|
|
|
52
52
|
|
|
53
53
|
class pthread_mutex_lock(angr.SimProcedure):
|
|
54
54
|
"""
|
|
55
|
-
|
|
55
|
+
Always returns 0 (SUCCESS).
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
58
|
def run(self, arg):
|
|
59
|
-
|
|
59
|
+
return 0
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class pthread_mutex_unlock(angr.SimProcedure):
|
|
63
63
|
"""
|
|
64
|
-
|
|
64
|
+
Always returns 0 (SUCCESS).
|
|
65
65
|
"""
|
|
66
66
|
|
|
67
67
|
def run(self, arg):
|
|
68
|
-
|
|
68
|
+
return 0
|
|
69
69
|
|
|
70
70
|
|
|
71
71
|
class pthread_once(angr.SimProcedure):
|
|
@@ -99,11 +99,11 @@ class FormatString:
|
|
|
99
99
|
elif fmt_spec.spec_type == b"c":
|
|
100
100
|
s_val = chr(c_val & 0xFF)
|
|
101
101
|
elif fmt_spec.spec_type == b"x":
|
|
102
|
-
s_val =
|
|
102
|
+
s_val = f"{c_val:x}"[2:]
|
|
103
103
|
elif fmt_spec.spec_type == b"o":
|
|
104
|
-
s_val =
|
|
104
|
+
s_val = f"{c_val:o}"[2:]
|
|
105
105
|
elif fmt_spec.spec_type == b"p":
|
|
106
|
-
s_val =
|
|
106
|
+
s_val = f"{c_val:x}"
|
|
107
107
|
else:
|
|
108
108
|
raise SimProcedureError(f"Unimplemented format specifier '{fmt_spec.spec_type}'")
|
|
109
109
|
|
angr/rustylib.abi3.so
CHANGED
|
Binary file
|
angr/sim_type.py
CHANGED
|
@@ -872,6 +872,8 @@ class SimTypePointer(SimTypeReg):
|
|
|
872
872
|
self, name=None, full=0, memo=None, indent=0, name_parens: bool = True
|
|
873
873
|
): # pylint: disable=unused-argument
|
|
874
874
|
# if pts_to is SimTypeBottom, we return a void*
|
|
875
|
+
if self.label is not None and name is not None:
|
|
876
|
+
return super().c_repr(name=name, full=full, memo=memo, indent=indent, name_parens=name_parens)
|
|
875
877
|
if isinstance(self.pts_to, SimTypeBottom):
|
|
876
878
|
out = "void*"
|
|
877
879
|
if name is None:
|
|
@@ -2192,10 +2194,10 @@ class SimTypeRef(SimType):
|
|
|
2192
2194
|
) -> str: # pylint: disable=unused-argument
|
|
2193
2195
|
prefix = "unknown"
|
|
2194
2196
|
if self.original_type is SimStruct:
|
|
2195
|
-
prefix = "struct"
|
|
2197
|
+
prefix = "struct "
|
|
2196
2198
|
if name is None:
|
|
2197
2199
|
name = ""
|
|
2198
|
-
return f"{prefix}{
|
|
2200
|
+
return f"{prefix}{self.label} {name}"
|
|
2199
2201
|
|
|
2200
2202
|
def _init_str(self) -> str:
|
|
2201
2203
|
original_type_name = self.original_type.__name__.split(".")[-1]
|
|
@@ -3752,7 +3754,7 @@ def _cpp_decl_to_type(
|
|
|
3752
3754
|
for idx, param in enumerate(the_func.parameters):
|
|
3753
3755
|
arg_type = param.type
|
|
3754
3756
|
args.append(_cpp_decl_to_type(arg_type, extra_types, opaque_classes=opaque_classes))
|
|
3755
|
-
arg_name = param.name if param.name is not None else f"
|
|
3757
|
+
arg_name = param.name if param.name is not None else f"arg_{idx}"
|
|
3756
3758
|
arg_names.append(arg_name)
|
|
3757
3759
|
|
|
3758
3760
|
args = tuple(args)
|
|
@@ -3799,7 +3801,7 @@ def _cpp_decl_to_type(
|
|
|
3799
3801
|
for idx, param in enumerate(the_func.parameters):
|
|
3800
3802
|
arg_type = param.type
|
|
3801
3803
|
args.append(_cpp_decl_to_type(arg_type, extra_types, opaque_classes=opaque_classes))
|
|
3802
|
-
arg_name = param.name if param.name is not None else f"
|
|
3804
|
+
arg_name = param.name if param.name is not None else f"arg_{idx}"
|
|
3803
3805
|
arg_names.append(arg_name)
|
|
3804
3806
|
|
|
3805
3807
|
args = tuple(args)
|
|
@@ -3821,8 +3823,11 @@ def _cpp_decl_to_type(
|
|
|
3821
3823
|
elif lbl in ALL_TYPES:
|
|
3822
3824
|
t = ALL_TYPES[lbl]
|
|
3823
3825
|
elif opaque_classes is True:
|
|
3824
|
-
# create a class without knowing the internal members
|
|
3825
|
-
|
|
3826
|
+
# create a struct or a class without knowing the internal members
|
|
3827
|
+
if decl.typename.classkey == "struct":
|
|
3828
|
+
t = SimTypeRef(lbl.removeprefix("struct "), SimStruct)
|
|
3829
|
+
else:
|
|
3830
|
+
t = SimCppClass(unique_name=lbl, name=lbl, members={}, size=32)
|
|
3826
3831
|
else:
|
|
3827
3832
|
raise TypeError(f'Unknown type "{lbl}"')
|
|
3828
3833
|
|
angr/simos/windows.py
CHANGED
|
@@ -440,7 +440,7 @@ class SimWindows(SimOS):
|
|
|
440
440
|
:param state: The state to get the syscall number from
|
|
441
441
|
:param allow_unsupported: Whether to return a "dummy" sycall instead of raising an unsupported exception
|
|
442
442
|
"""
|
|
443
|
-
if state.block(state.history.jump_source).bytes.hex() == "cd29": # int 29h
|
|
443
|
+
if state.history.jump_source and state.block(state.history.jump_source).bytes.hex() == "cd29": # int 29h
|
|
444
444
|
return self.fastfail
|
|
445
445
|
return None
|
|
446
446
|
|
|
@@ -192,7 +192,7 @@ class ConcreteBackerMixin(ClemoryBackerMixin):
|
|
|
192
192
|
|
|
193
193
|
try:
|
|
194
194
|
backer_iter = self._clemory_backer.backers(addr)
|
|
195
|
-
backer_start,
|
|
195
|
+
backer_start, _backer = next(backer_iter)
|
|
196
196
|
except StopIteration:
|
|
197
197
|
return super()._initialize_page(pageno, permissions=permissions, **kwargs)
|
|
198
198
|
|
angr/utils/constants.py
CHANGED
|
@@ -6,4 +6,4 @@ MAX_POINTSTO_BITS = -1330 * 8
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def is_alignment_mask(n):
|
|
9
|
-
return n in {0xFFFFFFFFFFFFFFE0, 0xFFFFFFFFFFFFFFF0, 0xFFFFFFE0, 0xFFFFFFF0, 0xFFFFFFFC, 0xFFFFFFF8}
|
|
9
|
+
return n in {0xFFFFFFFFFFFFFFE0, 0xFFFFFFFFFFFFFFF0, 0xFFFFFFC0, 0xFFFFFFE0, 0xFFFFFFF0, 0xFFFFFFFC, 0xFFFFFFF8}
|
angr/utils/strings.py
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def decode_utf16_string(data: bytes) -> str:
|
|
5
|
+
"""
|
|
6
|
+
Decode a UTF-16 encoded string from a bytes object in a resilient manner.
|
|
7
|
+
|
|
8
|
+
:param data: The bytes object containing the UTF-16 encoded string.
|
|
9
|
+
:param errors: The error handling scheme. Default is 'strict'.
|
|
10
|
+
Other options include 'ignore', 'replace', etc.
|
|
11
|
+
:return: The decoded string.
|
|
12
|
+
"""
|
|
13
|
+
if len(data) % 2 == 1:
|
|
14
|
+
data = data[:-1] # Trim off the last byte if the length is odd
|
|
15
|
+
|
|
16
|
+
# If no BOM, try to decode as little-endian first
|
|
17
|
+
try:
|
|
18
|
+
return data.decode("utf-16-le")
|
|
19
|
+
except UnicodeDecodeError:
|
|
20
|
+
return "<utf16-decode-error>"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: angr
|
|
3
|
-
Version: 9.2.
|
|
3
|
+
Version: 9.2.177
|
|
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
|
License: BSD-2-Clause
|
|
6
6
|
Project-URL: Homepage, https://angr.io/
|
|
@@ -16,12 +16,12 @@ Description-Content-Type: text/markdown
|
|
|
16
16
|
License-File: LICENSE
|
|
17
17
|
Requires-Dist: cxxheaderparser
|
|
18
18
|
Requires-Dist: GitPython
|
|
19
|
-
Requires-Dist: archinfo==9.2.
|
|
19
|
+
Requires-Dist: archinfo==9.2.177
|
|
20
20
|
Requires-Dist: cachetools
|
|
21
21
|
Requires-Dist: capstone==5.0.3
|
|
22
22
|
Requires-Dist: cffi>=1.14.0
|
|
23
|
-
Requires-Dist: claripy==9.2.
|
|
24
|
-
Requires-Dist: cle==9.2.
|
|
23
|
+
Requires-Dist: claripy==9.2.177
|
|
24
|
+
Requires-Dist: cle==9.2.177
|
|
25
25
|
Requires-Dist: msgspec
|
|
26
26
|
Requires-Dist: mulpyplexer
|
|
27
27
|
Requires-Dist: networkx!=2.8.1,>=2.0
|
|
@@ -31,7 +31,7 @@ Requires-Dist: pycparser>=2.18
|
|
|
31
31
|
Requires-Dist: pydemumble
|
|
32
32
|
Requires-Dist: pyformlang
|
|
33
33
|
Requires-Dist: pypcode<4.0,>=3.2.1
|
|
34
|
-
Requires-Dist: pyvex==9.2.
|
|
34
|
+
Requires-Dist: pyvex==9.2.177
|
|
35
35
|
Requires-Dist: rich>=13.1.0
|
|
36
36
|
Requires-Dist: sortedcontainers
|
|
37
37
|
Requires-Dist: sympy
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
angr/__init__.py,sha256=
|
|
1
|
+
angr/__init__.py,sha256=aC71aVWcBP7xns-lX1-sgjw1ZhoYMyYpT71RqZaJHsc,9246
|
|
2
2
|
angr/__main__.py,sha256=N6uAG4GA5S02pSDUKcWFmTuWiT-qiO7OP7kSfXsF4nQ,6142
|
|
3
3
|
angr/annocfg.py,sha256=0NIvcuCskwz45hbBzigUTAuCrYutjDMwEXtMJf0y0S0,10742
|
|
4
4
|
angr/blade.py,sha256=OGGW-oggqI9_LvgZhiQuh9Ktkvf3vhRBmH0XviNyZ6o,15801
|
|
@@ -7,7 +7,7 @@ angr/callable.py,sha256=j9Orwd4H4fPqOYylcEt5GuLGPV7ZOqyA_OYO2bp5PAA,6437
|
|
|
7
7
|
angr/calling_conventions.py,sha256=PNCk0MQ8BJe2opJt0hUiR1KwUBeBlyFewDM8zgoil2g,101871
|
|
8
8
|
angr/code_location.py,sha256=kXNJDEMge9VRHadrK4E6HQ8wDdCaHSXNqyAZuHDEGuM,5397
|
|
9
9
|
angr/codenode.py,sha256=hCrQRp4Ebb2X6JicNmY1PXo3_Pm8GDxVivVW0Pwe84k,3918
|
|
10
|
-
angr/emulator.py,sha256=
|
|
10
|
+
angr/emulator.py,sha256=aZXi8-jQ_9uelN2zvlecR2ZYXPey4PHyju6yVJIWDAk,4708
|
|
11
11
|
angr/errors.py,sha256=I0L-TbxmVYIkC-USuHwaQ9BGPi2YVObnhZXQQ3kJFuo,8385
|
|
12
12
|
angr/factory.py,sha256=PPNWvTiWaIgzxzyoTr8ObSF-TXp1hCdbY2e-0xBePNc,17815
|
|
13
13
|
angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -15,14 +15,14 @@ angr/keyed_region.py,sha256=Cx6dadqFgEvRmEHTbCJpg9mXkBtKGc_BKckHc6bk1IU,17992
|
|
|
15
15
|
angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
|
|
16
16
|
angr/project.py,sha256=sXHWI8EVNK8Ax6--yNOMhyt77Mcxg6shzD1NbMf0GT0,38267
|
|
17
17
|
angr/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
18
|
-
angr/rustylib.abi3.so,sha256=
|
|
18
|
+
angr/rustylib.abi3.so,sha256=e7pm_m6d4-JrlyESe7PptOF0QRkDtVR9cvFcNuyO-BI,5720288
|
|
19
19
|
angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
|
|
20
20
|
angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
|
|
21
21
|
angr/sim_options.py,sha256=WNLSnmn7gqKBYgQs3Me2H3zKusgt0WVqFzsBuzEZpoU,17436
|
|
22
22
|
angr/sim_procedure.py,sha256=EfXQEX-Na7iNtoqc2-KQhs7AR3tsiMYnxEF1v_lL_ok,26235
|
|
23
23
|
angr/sim_state.py,sha256=qK6XPl2Q23xEXBud_SBy1fzVPPcrlx0PEQwMtRKBaBI,33893
|
|
24
24
|
angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
|
|
25
|
-
angr/sim_type.py,sha256=
|
|
25
|
+
angr/sim_type.py,sha256=8AJjzu_hp4GvgXogz8KnLiPXSnxBGUy-D3G8w4wEicQ,144714
|
|
26
26
|
angr/sim_variable.py,sha256=3DssmMw5G7m_-MYToJ3LBP-ooy2UQEuI2YgxIuX3d4Y,13177
|
|
27
27
|
angr/slicer.py,sha256=DND0BERanYKafasRH9MDFAng0rSjdjmzXj2-phCD6CQ,10634
|
|
28
28
|
angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
|
|
@@ -52,7 +52,7 @@ angr/analyses/cdg.py,sha256=UxKp30a1pq0q-FsgmutHU3sdXFwXOjlcal0wzX4EYJM,6229
|
|
|
52
52
|
angr/analyses/class_identifier.py,sha256=7zOIryNL_DrXW11GGzZjp6TPwv--2VZ5ZuSzYpXirmQ,2951
|
|
53
53
|
angr/analyses/code_tagging.py,sha256=Gj7Ms24RnmhC9OD57gw7R6_c-pLfqSug-LVUMw_JmXE,3510
|
|
54
54
|
angr/analyses/codecave.py,sha256=k_dDhMN4wcq2bs5VrwpOv96OowQ7AbZSs6j5Z6YbIpk,2209
|
|
55
|
-
angr/analyses/complete_calling_conventions.py,sha256=
|
|
55
|
+
angr/analyses/complete_calling_conventions.py,sha256=a-hJQ6yRusDhRADGcLxjY6ETlD1vN_QsHd2c0VZlo7I,21079
|
|
56
56
|
angr/analyses/congruency_check.py,sha256=QeYRrdrs_iluLLnKz3KUHkCTPRVl5PgM2T0ZXd786HA,16165
|
|
57
57
|
angr/analyses/datagraph_meta.py,sha256=Ng0jqLD5ucRn_fBXhYq3l6scs3kczRk6Sk-Sen1forc,3414
|
|
58
58
|
angr/analyses/ddg.py,sha256=AWPPsL2bfTAua5meuQfPFL6b29PLpCLZzw-LGCv5iVo,63214
|
|
@@ -71,7 +71,7 @@ angr/analyses/s_liveness.py,sha256=mSWwwAPpXl-dIZNx5pAHA5vWXqCO_OivOXWoiaI7tss,7
|
|
|
71
71
|
angr/analyses/s_propagator.py,sha256=pEq11sNPZoR0PrWLdIIjE0s5IEmOpCpNxYYnf2qMURY,24872
|
|
72
72
|
angr/analyses/smc.py,sha256=DC4l7fTmoOybD_lSQaLjcUdeLUifQhhsSu1nx8Ax6pM,5176
|
|
73
73
|
angr/analyses/soot_class_hierarchy.py,sha256=R4xeacn-a_Q7PxSyj_stu5mnglZkPB5US5srKChX3mk,8740
|
|
74
|
-
angr/analyses/stack_pointer_tracker.py,sha256=
|
|
74
|
+
angr/analyses/stack_pointer_tracker.py,sha256=tsiA8VHyrUsR9sCFh6CL0BS1Ubunv2pat6D3DLanDgI,38151
|
|
75
75
|
angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
|
|
76
76
|
angr/analyses/veritesting.py,sha256=M6WNsbgiv4ScFPQIaFzujNFya66rQ9GSieaRLuC6RSo,25062
|
|
77
77
|
angr/analyses/vfg.py,sha256=04X_mup9P82bkQIXMju3_DBPPJB1TytA_7RR9uAu3tU,72868
|
|
@@ -79,7 +79,7 @@ angr/analyses/vsa_ddg.py,sha256=PNJ1vQNdHKYCcuXrsXZohtjrxznaWn6GZY2TfhBoY2Q,1613
|
|
|
79
79
|
angr/analyses/vtable.py,sha256=1Ed7jzr99rk9VgOGzcxBw_6GFqby5mIdSTGPqQPhcZM,3872
|
|
80
80
|
angr/analyses/xrefs.py,sha256=vs6cpVmwXHOmxrI9lJUwCRMYbPSqvIQXS5_fINMaOGI,10290
|
|
81
81
|
angr/analyses/calling_convention/__init__.py,sha256=bK5VS6AxT5l86LAhTL7l1HUT9IuvXG9x9ikbIohIFoE,194
|
|
82
|
-
angr/analyses/calling_convention/calling_convention.py,sha256=
|
|
82
|
+
angr/analyses/calling_convention/calling_convention.py,sha256=UfMXXoa51UvqHS5XGyFY09Vs_OVFvro51vfCtaYw7aw,47496
|
|
83
83
|
angr/analyses/calling_convention/fact_collector.py,sha256=9qx3jvBBrhKvRoZrCir61KZBqFtduiFzhbHAtWFvMic,28762
|
|
84
84
|
angr/analyses/calling_convention/utils.py,sha256=twkO073RvkkFXnOTc-KYQT1GKUtz0OPjxh0N6AWIriQ,2110
|
|
85
85
|
angr/analyses/cfg/__init__.py,sha256=-w8Vd6FD6rtjlQaQ7MxwmliFgS2zt-kZepAY4gHas04,446
|
|
@@ -116,13 +116,13 @@ angr/analyses/data_dep/data_dependency_analysis.py,sha256=_vQPkw1NMrzD7kAFeotOaa
|
|
|
116
116
|
angr/analyses/data_dep/dep_nodes.py,sha256=LcNcxeuKXMMc0GkmvKqqFwNlAk3GhzBR8ixM4CD305k,4640
|
|
117
117
|
angr/analyses/data_dep/sim_act_location.py,sha256=EXmfFF3lV9XogcB2gFRMUoJCbjpDYiSKNyfafkBfiY8,1564
|
|
118
118
|
angr/analyses/decompiler/__init__.py,sha256=eyxt2UKvPkbuS_l_1GPb0CJ6hrj2wTavh-mVf23wwiQ,1162
|
|
119
|
-
angr/analyses/decompiler/ail_simplifier.py,sha256=
|
|
119
|
+
angr/analyses/decompiler/ail_simplifier.py,sha256=NdPdj7IpmltxdPuhxdwHnd6qG2xHrA5ZPlDLvDyaH8U,93303
|
|
120
120
|
angr/analyses/decompiler/ailgraph_walker.py,sha256=m71HCthOr9J8PZoMxJzCPskay8yfCZ2j8esWT4Ka3KI,1630
|
|
121
121
|
angr/analyses/decompiler/block_io_finder.py,sha256=9J56W0_SQPczZ2-VoxqSv61T57foHmzy7wPtUtQKffU,10943
|
|
122
122
|
angr/analyses/decompiler/block_similarity.py,sha256=S1lTlXFyOmJlQa7I3y7xgLsENLS4XGET7tdD55k_6Vg,6859
|
|
123
123
|
angr/analyses/decompiler/block_simplifier.py,sha256=vjlugXCB3xFYBDBn3LPxOtU1dDc76PpYtVEoju3i9-4,15513
|
|
124
124
|
angr/analyses/decompiler/callsite_maker.py,sha256=O7vjwNTmCLijzjKgSCaoX3IX4_sC-u-OqoKhE7lahlc,23427
|
|
125
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
125
|
+
angr/analyses/decompiler/clinic.py,sha256=LIsOw2U3P72AQ0GMK5DSn8JyQ7uY-cLcJPNpTcCERNo,151635
|
|
126
126
|
angr/analyses/decompiler/condition_processor.py,sha256=ALx1EO82EWOfj1mjWhS_8GNMLdEO98jqnIqB-CtfELg,56692
|
|
127
127
|
angr/analyses/decompiler/decompilation_cache.py,sha256=06oiG299mVpGOTL54Xy1CUxz5s8QLgYJn5XIvKFLYkU,1566
|
|
128
128
|
angr/analyses/decompiler/decompilation_options.py,sha256=bs6CNpU3UxepgBB_9eUH4jriNpGoryyPP0sR1hDWpTk,8477
|
|
@@ -142,10 +142,10 @@ angr/analyses/decompiler/return_maker.py,sha256=sUxRx4LRt1lf-N7x93t7W04lDgJomt_l
|
|
|
142
142
|
angr/analyses/decompiler/seq_to_blocks.py,sha256=4-tqstendHHO2J0WD3JHQkm8c4c2KG3AO3mYWrn4xvg,569
|
|
143
143
|
angr/analyses/decompiler/sequence_walker.py,sha256=_-kUn01iU7iGdrzOPpwzquwk9CVDUL7QfQkv2OT9r8Y,10083
|
|
144
144
|
angr/analyses/decompiler/stack_item.py,sha256=4HpYE54sOnODzMLrNX1m-Mb9RlQYjojJqNKjjDz9jxU,814
|
|
145
|
-
angr/analyses/decompiler/utils.py,sha256=
|
|
145
|
+
angr/analyses/decompiler/utils.py,sha256=B7YwnEBF6AZ5DG3E7zHK0TF7zOLeiMWEcc18YL_eUyA,43074
|
|
146
146
|
angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=TrnykR5cGCXy85f8OApJBjWSQ8WQSzjrnpND2fODWG8,207
|
|
147
147
|
angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=8LA05CKwFzoNAloOJ3KF4AkFM3bDTQdstr1_46WauxM,24958
|
|
148
|
-
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=
|
|
148
|
+
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=c7-GxWZbFfJvmg4DPdjYgLXyiasmfgmiQ6IY4fjOVWs,727
|
|
149
149
|
angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=dvdiAXWGte_4xcDZnP7h980DVZqpxMgQt-fTC1nxChQ,13437
|
|
150
150
|
angr/analyses/decompiler/counters/__init__.py,sha256=UT5K0cWgkVTAXZxy1qBBzrQip3YR2BOBVpxlAuNlt5o,480
|
|
151
151
|
angr/analyses/decompiler/counters/boolean_counter.py,sha256=FG3M8dMpbU_WAyr8PV2iEI43OLUxoZ6JQ1johkMtivw,893
|
|
@@ -179,8 +179,8 @@ angr/analyses/decompiler/optimization_passes/expr_op_swapper.py,sha256=GNrqp7-Ca
|
|
|
179
179
|
angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=ez0tzV2MqNVBW7hhvNyJWQpJQUntLA4etK606hXixJM,5206
|
|
180
180
|
angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py,sha256=CLljV06M63QRbyA-HW5ArXA9c2F3qlfOJgul7UWxJOo,25456
|
|
181
181
|
angr/analyses/decompiler/optimization_passes/ite_expr_converter.py,sha256=DA2H1Uk8ZUTBcebQ3SFFl5n8pDSsZnQZC1Hnjv-A1a0,7835
|
|
182
|
-
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=
|
|
183
|
-
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=
|
|
182
|
+
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=O7b5hVV8UV7Q5nzEPovQZB4z8UsyYKvPkOTp2pljXiY,13774
|
|
183
|
+
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=RkZdMPJ_JKDkywVYp0MrCf6PK95GWT7Q0K7jsCVk_cE,42132
|
|
184
184
|
angr/analyses/decompiler/optimization_passes/mod_simplifier.py,sha256=9ekxyvxF8g3tN5oanUg96HaYiyYVbj5Nf-vSeeq86kI,3384
|
|
185
185
|
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=VGpCQmx8H2w3HoVFGdqwYYZ0z_IdHrFjOhz37yvxxTQ,28169
|
|
186
186
|
angr/analyses/decompiler/optimization_passes/peephole_simplifier.py,sha256=4PeOX1al4raJ7QCVLyNcffF_Q5XnPS1vDwz4riNUeHQ,2672
|
|
@@ -202,7 +202,7 @@ angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_re
|
|
|
202
202
|
angr/analyses/decompiler/optimization_passes/duplication_reverter/errors.py,sha256=dJq1F3jbGBFWi0zIUmDu8bwUAKPt-JyAh5iegY9rYuU,527
|
|
203
203
|
angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py,sha256=H9FGTyxHm-KbqgxuTe2qjMotboRbUyOTeiPVcD_8DSk,4411
|
|
204
204
|
angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py,sha256=_WiRuxiMaxRAYtU5LiHGQ383PiI0sCt-KgG2QFG0KX4,5176
|
|
205
|
-
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=
|
|
205
|
+
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=tfBb_Pi-GBcrOxChotrwk9h28Qo85okQLP7LKGC5c8s,5028
|
|
206
206
|
angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=HY6EQkThiyMaahz3bodJUqLBKWY2n4aKGbKyspMXN50,1641
|
|
207
207
|
angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py,sha256=-V60wMaBKz1Ld1NcaQ8Dl0T4Xo9Qq6nfAQpXJ-MNsDI,1379
|
|
208
208
|
angr/analyses/decompiler/peephole_optimizations/a_mul_const_sub_a.py,sha256=5Gsq3DSQEWt3tZSkrxnbAEePkKC_dmpoQHZ2PVNlSfs,1158
|
|
@@ -217,7 +217,7 @@ angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py,sh
|
|
|
217
217
|
angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py,sha256=09PA82Sg2FlBp2XZd4-WSES-8BQesXPXvIlpuuGByvM,1306
|
|
218
218
|
angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py,sha256=vLXt0ekjRep4SgaNq1wyxVkBTzOMTa03d3rgkjUOcUg,995
|
|
219
219
|
angr/analyses/decompiler/peephole_optimizations/bswap.py,sha256=fXV_a58W2X30KCanYeSHdZ2yPcfDlyZq_OkYNMkglrg,6420
|
|
220
|
-
angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=
|
|
220
|
+
angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=lzlyhe1RP020ezYN77QRFu5p7zNaH4XSMkpBhxRP7ms,7959
|
|
221
221
|
angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py,sha256=sJV-8aP9KUx5Kt7pZmb3M28K3z2bGD3NWJFZOdYaBYc,2662
|
|
222
222
|
angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py,sha256=fXq-qFe7JUdD5LdtUhoA9AF3LnY-3Jrmo4t3ZRJIIiQ,1414
|
|
223
223
|
angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=--C1JQluHt8ltdfUPBHvRD3SjW_ZcBU3oWdFwpCtpuw,1072
|
|
@@ -229,8 +229,8 @@ angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py,sha256
|
|
|
229
229
|
angr/analyses/decompiler/peephole_optimizations/inlined_memcpy.py,sha256=5OAgdFMTRlTggLQSUbVcUdgUmkJN7_p4wYkqt1A4AYQ,2944
|
|
230
230
|
angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py,sha256=q2IVsIFhfo0TGY3PfeOmCZqdpzUI2B3Tjv_p3_jpwl4,8668
|
|
231
231
|
angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py,sha256=d-O_rIm0OrwK88P0zYBZcOY0ewTdCp4bnkJZDdWUUVw,4883
|
|
232
|
-
angr/analyses/decompiler/peephole_optimizations/
|
|
233
|
-
angr/analyses/decompiler/peephole_optimizations/
|
|
232
|
+
angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy.py,sha256=_2Fdny7z31G22edctem0ySFpek2HT5tk-T9F8dQ5p1M,10122
|
|
233
|
+
angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py,sha256=TfimMI0FwpRBrWVQZy4m9XAf_BBPInu0zfywQ9CoGgs,12712
|
|
234
234
|
angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuction_disjunction.py,sha256=hRx0tuK_s47AEgPfaWYbzh5lPfBhx_anGDTVoIxHYkg,1990
|
|
235
235
|
angr/analyses/decompiler/peephole_optimizations/modulo_simplifier.py,sha256=M09Whprj6tOJdFI5n9a7b-82YZOgnm3QvIbISJ9Lvaw,3724
|
|
236
236
|
angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py,sha256=zljXiUnoH6AwgAoXVRwz9dXEedW7RiUTkHvBMZIA-o8,1140
|
|
@@ -278,7 +278,7 @@ angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py,sha256=
|
|
|
278
278
|
angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py,sha256=YSmBBC1MIr4Na1DDFiw-309nkyNTnL-9hucM8gZf-C0,3351
|
|
279
279
|
angr/analyses/decompiler/ssailification/__init__.py,sha256=zcHoI7e2El2RSU_bHTpQRd1XRLHOfFScG6f3cm5y_lQ,108
|
|
280
280
|
angr/analyses/decompiler/ssailification/rewriting.py,sha256=aIYuFGlroEXqxaf6lZCfodLD2B53Sb8UJgl2nNb4lg8,15076
|
|
281
|
-
angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=
|
|
281
|
+
angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=wGUdybrGWTlE73hwS3gzyRiTtXL03tq8FL7-qYNl_X8,41486
|
|
282
282
|
angr/analyses/decompiler/ssailification/rewriting_state.py,sha256=NAwVcBYh-BQo9K7nfnUlNDBAYflfFMgBYzsVD3BwiN8,1898
|
|
283
283
|
angr/analyses/decompiler/ssailification/ssailification.py,sha256=LGRFDz6tQmKeJKomSQlxTTr3ILdJaI0iYBaizE5BNCI,11288
|
|
284
284
|
angr/analyses/decompiler/ssailification/traversal.py,sha256=rvFatMUpQQMbENCsPoPogAbBv0AAaCDcKiNvh6GOVeQ,4027
|
|
@@ -286,12 +286,12 @@ angr/analyses/decompiler/ssailification/traversal_engine.py,sha256=MdmNKWN2LVQ9f
|
|
|
286
286
|
angr/analyses/decompiler/ssailification/traversal_state.py,sha256=RDs2mTc6GYnbMom2gBfNfNMcazKMSkhemEmse8uELTY,1558
|
|
287
287
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=mxG4yruPAab8735wVgXZ1zu8qFPz-njKe0m5UcywE3o,633
|
|
288
288
|
angr/analyses/decompiler/structured_codegen/base.py,sha256=mb5d5iQO1N2wMl7QySvfHemXM-e0yQBhjtlmnLsVSgE,5134
|
|
289
|
-
angr/analyses/decompiler/structured_codegen/c.py,sha256=
|
|
289
|
+
angr/analyses/decompiler/structured_codegen/c.py,sha256=7rcmoqzbUa_Cv9Dnab1Vs72gVAOb2gGYR17G33BoQ98,150245
|
|
290
290
|
angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
|
|
291
291
|
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
|
|
292
292
|
angr/analyses/decompiler/structuring/__init__.py,sha256=kEFP-zv9CZrhJtLTKwT9-9cGVTls71wLYaLDUuYorBU,711
|
|
293
|
-
angr/analyses/decompiler/structuring/dream.py,sha256=
|
|
294
|
-
angr/analyses/decompiler/structuring/phoenix.py,sha256
|
|
293
|
+
angr/analyses/decompiler/structuring/dream.py,sha256=QNZ8dKk79Uq0urUEpwmBgX2Ak3ZQLhiydcSKJTx968c,48738
|
|
294
|
+
angr/analyses/decompiler/structuring/phoenix.py,sha256=-yGUKZt37N0tbqTJoRI4Pk_ohZhYaxT22wWEWsblzZ4,164692
|
|
295
295
|
angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=iWFZdM54C1q2ezL7ouhH6rygJiGO2OCUH5JKXKgrf6w,7422
|
|
296
296
|
angr/analyses/decompiler/structuring/sailr.py,sha256=aJCES4r5HaLs-l1tXagIPtXpWnqY_uTlJn7wCYKnwTg,6127
|
|
297
297
|
angr/analyses/decompiler/structuring/structurer_base.py,sha256=xzQMYBInNyeRYibbiuk6EYbvPO235El3guT1yh1qAxw,50690
|
|
@@ -308,7 +308,7 @@ angr/analyses/fcp/__init__.py,sha256=E9dxFckDM9DijfU4RRg9SGL6xDKCz7yBBP-XSkS-S9U
|
|
|
308
308
|
angr/analyses/fcp/fcp.py,sha256=djkJsvSja_De7ptNwllmTHjvVl62BFcH_haBhwhzFtw,16373
|
|
309
309
|
angr/analyses/flirt/__init__.py,sha256=1jKkwUDhwwnxG5BRcYtwogLHLBvtZApXgvcAcHrJrdw,1293
|
|
310
310
|
angr/analyses/flirt/consts.py,sha256=9ldvicgtJZa8Hw8cWOKxGkCYtc09I2q5ZWxctXcg20w,4861
|
|
311
|
-
angr/analyses/flirt/flirt.py,sha256=
|
|
311
|
+
angr/analyses/flirt/flirt.py,sha256=fZ0BvmJnx6ve1j76lMvKFHM2y3g17wg00fU8hWvSl14,10829
|
|
312
312
|
angr/analyses/flirt/flirt_function.py,sha256=IHskIu5XTTCLKfmow23ig4HIqzs7oGbw7iktIfv40O8,420
|
|
313
313
|
angr/analyses/flirt/flirt_matcher.py,sha256=nzhvPTIlVwHrn07qLLSRvgfpyOnlNRsziDCls_xh0Gg,6353
|
|
314
314
|
angr/analyses/flirt/flirt_module.py,sha256=pUP6vbujzceJMXFxvLAPgek5Y2qPv3KTlKY8ZWHeIQU,920
|
|
@@ -384,25 +384,25 @@ angr/analyses/s_reaching_definitions/s_rda_view.py,sha256=7o-llkMUJP_ZhnQ4tkCDrz
|
|
|
384
384
|
angr/analyses/s_reaching_definitions/s_reaching_definitions.py,sha256=gNdg8xpu5by_McWU8j0g0502yQsO2evkTlben9yimV0,7826
|
|
385
385
|
angr/analyses/typehoon/__init__.py,sha256=KjKBUZadAd3grXUy48_qO0L4Me-riSqPGteVDcTL59M,92
|
|
386
386
|
angr/analyses/typehoon/dfa.py,sha256=41lzhE-QmkC342SjfaaPI41lr4Au5XROTu_7oenvg7g,3823
|
|
387
|
-
angr/analyses/typehoon/lifter.py,sha256=
|
|
388
|
-
angr/analyses/typehoon/simple_solver.py,sha256=
|
|
389
|
-
angr/analyses/typehoon/translator.py,sha256=
|
|
390
|
-
angr/analyses/typehoon/typeconsts.py,sha256=
|
|
387
|
+
angr/analyses/typehoon/lifter.py,sha256=FGu990mwsMRvPwiRIcu7pHtfXQ54sZ6bVGxwtb8W9EQ,4523
|
|
388
|
+
angr/analyses/typehoon/simple_solver.py,sha256=F34YE16C80Q8p5u_MPvJ-kPcVvm9_PQ-YMIBkjqKwOQ,73163
|
|
389
|
+
angr/analyses/typehoon/translator.py,sha256=4gbgKg7ZGK_-97OCVnzaRjDrS2ZSl6WGbcR0E7OC_7Q,10615
|
|
390
|
+
angr/analyses/typehoon/typeconsts.py,sha256=1By-4oluuW00kDJPrKlugpAHxpSNB_GB3rbbZVtV2eI,8890
|
|
391
391
|
angr/analyses/typehoon/typehoon.py,sha256=qj5MBJdzVB-5f73N_Da0gs5fG-eIFN272VNfsdYn7lo,12777
|
|
392
|
-
angr/analyses/typehoon/typevars.py,sha256=
|
|
392
|
+
angr/analyses/typehoon/typevars.py,sha256=oFRDzN9JoznJ8MPTNNla_0OA6OeBQOfZZYMTeAufW9s,18090
|
|
393
393
|
angr/analyses/typehoon/variance.py,sha256=3wYw3of8uoar-MQ7gD6arALiwlJRW990t0BUqMarXIY,193
|
|
394
394
|
angr/analyses/unpacker/__init__.py,sha256=tBXwDMFKN0Hp8YP0DK-c6deo0Muc_LNopvoKKbzp3Tc,190
|
|
395
395
|
angr/analyses/unpacker/obfuscation_detector.py,sha256=VWMHOO2UbyiGzRYzAq9yrU3WwZ7N1i99utC8Vkbtptw,3502
|
|
396
396
|
angr/analyses/unpacker/packing_detector.py,sha256=SO6aXR1gZkQ7w17AAv3C1-U2KAc0yL9OIQqjNOtVnuo,5331
|
|
397
397
|
angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
|
|
398
398
|
angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
|
|
399
|
-
angr/analyses/variable_recovery/engine_ail.py,sha256=
|
|
400
|
-
angr/analyses/variable_recovery/engine_base.py,sha256=
|
|
399
|
+
angr/analyses/variable_recovery/engine_ail.py,sha256=N9sEHMUT9qVMJCm1h4da3vLnSLPDp3oY9fE3WN60ioc,35652
|
|
400
|
+
angr/analyses/variable_recovery/engine_base.py,sha256=S3-CynLxRXlZ-hDXDZnru_wzApjR8a7hBiJOHquzBjk,53389
|
|
401
401
|
angr/analyses/variable_recovery/engine_vex.py,sha256=Sjh3bZZfnEaich7PLTitaZITSMW7agqgyxck4gWKDbQ,21465
|
|
402
402
|
angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
|
|
403
403
|
angr/analyses/variable_recovery/variable_recovery.py,sha256=I45eVUpOOcSobA_QyXl3aRNa0kppJH_7YOj95fPPTdE,22272
|
|
404
404
|
angr/analyses/variable_recovery/variable_recovery_base.py,sha256=Ewd0TzNdZ_gRYXtXjVrJfODNABMMPjnuvMy9-Nnyui0,16813
|
|
405
|
-
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=
|
|
405
|
+
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=OeSnBVpcNlZU-miBlIrbyaPt2IHtExtnpBoACnWNs_Q,27996
|
|
406
406
|
angr/angrdb/__init__.py,sha256=Jin6JjtVadtqsgm_a6gQGx3Hn7BblkbJvdcl_GwZshg,307
|
|
407
407
|
angr/angrdb/db.py,sha256=ecwcJ9b_LcM9a74GXJUm7JVWTghk3JhXScLhaQ4ZP7o,6260
|
|
408
408
|
angr/angrdb/models.py,sha256=5Akv-fIjk3E2YHymEWu_nrbE8aQ9l75zOAaSIDEzeTQ,4794
|
|
@@ -440,8 +440,8 @@ angr/engines/__init__.py,sha256=_3oRkiTrPO7QPiCg3qXymt4o9ZAOrAHt5pdfjkp3W9k,1661
|
|
|
440
440
|
angr/engines/concrete.py,sha256=kEt6Dyp8QAIaOP3oW5lRcDs_2UMP2vbiNzylGiqvf7g,2143
|
|
441
441
|
angr/engines/engine.py,sha256=2kwOT-sbxKXAVX2PmsPTr8Ax36Vxq6hkRdDKaITBQNc,657
|
|
442
442
|
angr/engines/failure.py,sha256=redqmkSuJoIc828hpmX3CTk4EqQ-PeEn7MK2uIqSAc0,1040
|
|
443
|
-
angr/engines/hook.py,sha256=
|
|
444
|
-
angr/engines/icicle.py,sha256=
|
|
443
|
+
angr/engines/hook.py,sha256=YMCUWs-cC3fQCN9xlYAy7vaMPKWDNJkl9KtCMYUyMP0,2569
|
|
444
|
+
angr/engines/icicle.py,sha256=JSbHnTJePV1l6dmF5WPhlzYjm6ZApQfjCUrgJ4jewOg,11033
|
|
445
445
|
angr/engines/procedure.py,sha256=8kgFH56nkqSWm0p1apuGBaFngl-4BnAzE0bXhq9mc6Y,2561
|
|
446
446
|
angr/engines/successors.py,sha256=oQCW7Knxb4zz7EP6Mi6RrRNrwuhbv5fnX8UL76nn0sY,29501
|
|
447
447
|
angr/engines/syscall.py,sha256=7wYTriURsDTTi3PEBj4u3ZWDi7RHBV-gRrxTRxwMAVk,2166
|
|
@@ -503,7 +503,7 @@ angr/engines/soot/values/thisref.py,sha256=ajwA1zOdoww0g866ubHkMNKFKwCWqjlmIYw6G
|
|
|
503
503
|
angr/engines/vex/__init__.py,sha256=k8cIQpJO2Wv6erLCOa4boEywRcwlFOTgAgGP6wNQcwM,525
|
|
504
504
|
angr/engines/vex/lifter.py,sha256=BqeajzzpLL32nmGaszWASBPDhluhTec2m3ods1ZTIIo,17207
|
|
505
505
|
angr/engines/vex/claripy/__init__.py,sha256=4B8H1VOHrrKJMjAXZkZ0r_02issFP_bxDJJMw50yVe4,109
|
|
506
|
-
angr/engines/vex/claripy/ccall.py,sha256=
|
|
506
|
+
angr/engines/vex/claripy/ccall.py,sha256=sxWkTmCFwVto9dqTW74sCSgl47kn8HV3NSTU0LCcxts,82962
|
|
507
507
|
angr/engines/vex/claripy/datalayer.py,sha256=kb-QSvwRzc6Mufwsv012Tgg_PNJPUTec8ElSuJcFzNQ,4971
|
|
508
508
|
angr/engines/vex/claripy/irop.py,sha256=_xiVGT5YbguTm8c0DaAqHnPUVrD2lp3ELtiBJTPwTOA,46240
|
|
509
509
|
angr/engines/vex/heavy/__init__.py,sha256=XkIvjUOyEY9XN_zjM3ozzdSDqbMJHGm1XbehwhshlBE,376
|
|
@@ -566,7 +566,7 @@ angr/knowledge_plugins/cfg/cfg_node.py,sha256=mAvQ8XAEURM7y0suc_S9lfxCmfXSTJHmWB
|
|
|
566
566
|
angr/knowledge_plugins/cfg/indirect_jump.py,sha256=XQjyH8ZhSlRFWLc--QY9Voq0RB7nI2wzeP5COANwoOc,3741
|
|
567
567
|
angr/knowledge_plugins/cfg/memory_data.py,sha256=QLxFZfrtwz8u6UJn1L-Sxa-C8S0Gy9IOlfNfHCLPIow,5056
|
|
568
568
|
angr/knowledge_plugins/functions/__init__.py,sha256=asiLNiT6sHbjP6eU-kDpawIoVxv4J35cwz5yQHtQ2E0,167
|
|
569
|
-
angr/knowledge_plugins/functions/function.py,sha256=
|
|
569
|
+
angr/knowledge_plugins/functions/function.py,sha256=orSBM5R073Tf-PDWw8NcvKl_iUgCnnk1SyFFMPZP6VE,72303
|
|
570
570
|
angr/knowledge_plugins/functions/function_manager.py,sha256=StsK3biTFRRA2ugrmeQLuHiN894p789Tlw1CIKlE0PY,23462
|
|
571
571
|
angr/knowledge_plugins/functions/function_parser.py,sha256=DTdVwYt6nXLMc0EOh-V_GhvZYQ947UNBaA77qn7Y6Vo,12379
|
|
572
572
|
angr/knowledge_plugins/functions/soot_function.py,sha256=OzCvQPWxnjbwPWTW0JXrQey4zyaayHD_v6ZA7nJ4YJw,4850
|
|
@@ -618,7 +618,7 @@ angr/procedures/cgc/fdwait.py,sha256=wknRSRoa1UeLb_59hPhYqYkU6x88p6rf29rhtKBVQiI
|
|
|
618
618
|
angr/procedures/cgc/random.py,sha256=YSE5qX80KYg0c5bC7XSCg5R4Tm33hU-vprxSXrPHcYk,2490
|
|
619
619
|
angr/procedures/cgc/receive.py,sha256=CYxXBnw9CpLfIVn086UuaEvpT4MGEg8otDHtsgf5etY,3668
|
|
620
620
|
angr/procedures/cgc/transmit.py,sha256=SwVCOo_H-_8sZ3qRQ5QT942eNwc2oPoZJr4VyA7Ny2A,2389
|
|
621
|
-
angr/procedures/definitions/__init__.py,sha256=
|
|
621
|
+
angr/procedures/definitions/__init__.py,sha256=wYoWkHRSh6wjWE-9wPgNJbTfyeHaqkN2zDWOtHJMdF8,43644
|
|
622
622
|
angr/procedures/definitions/cgc.py,sha256=Jrb74dNzy05h_nmsC3GjN5Yr5_jWIjpZ24ZsVkH5jio,508
|
|
623
623
|
angr/procedures/definitions/gnulib.py,sha256=GK4eVXFxwgwhJ9cr47PiTUS4fKYrqPfMtIvwM464Oyo,1107
|
|
624
624
|
angr/procedures/definitions/libstdcpp.py,sha256=IoPJJEFQZR6ysOYvU1EmVK_IyQPuoq73ehImJuGS3JM,750
|
|
@@ -627,7 +627,7 @@ angr/procedures/definitions/linux_loader.py,sha256=uEeMktLesh0NzHmRfgP76IuSzL4YM
|
|
|
627
627
|
angr/procedures/definitions/msvcr.py,sha256=CQgWXrKcEjx9xfPf2BZOOPaQJ5AUqwdNtN_5FdYtRzg,651
|
|
628
628
|
angr/procedures/definitions/parse_glibc.py,sha256=-vmm4hKO2GnBVXmk6Nq4fxGHuLxesRbF52UIrPk4a6Q,2092
|
|
629
629
|
angr/procedures/definitions/parse_syscalls_from_local_system.py,sha256=ssyMjeyuPVYHnbmArwDPO0XXMW1n5Odv__n17cdLVcY,1823
|
|
630
|
-
angr/procedures/definitions/parse_win32json.py,sha256=
|
|
630
|
+
angr/procedures/definitions/parse_win32json.py,sha256=LzvSZC5u6Jkbe-tx9L7swZmJ0DOm26BjTmJWZGiMhBw,109413
|
|
631
631
|
angr/procedures/definitions/types_stl.py,sha256=4fsMlaDLQ7IZfL0jQX4ZvTkqBg5tsoeZAfSwupZm1gI,816
|
|
632
632
|
angr/procedures/definitions/common/glibc.json,sha256=XvQ4JWwJIDepZSvK2AfSX5H4uaB_MJWsULf9Ml1LKwk,955895
|
|
633
633
|
angr/procedures/definitions/wdk/api-ms-win-dx-d3dkmt-l1-1-4.json,sha256=nkET0iaXAHF_qSgyF4N6G1M0i7QtPEPCo2u28so9taM,1016
|
|
@@ -640,7 +640,7 @@ angr/procedures/definitions/wdk/gdi32.json,sha256=YByprF-byACUskCT17vLClW6P0b3Bf
|
|
|
640
640
|
angr/procedures/definitions/wdk/hal.json,sha256=RxvRTa5sumqXXPJai2YrdssJD5fbWeTQi0ap0QQRBxw,12103
|
|
641
641
|
angr/procedures/definitions/wdk/ksecdd.json,sha256=xYYdocSCK8LBeQYFlhZ7ZKiTK-ju26KDWRIQiw7rBKQ,13262
|
|
642
642
|
angr/procedures/definitions/wdk/ndis.json,sha256=CBLTeOby2j_SOP_uPLTPkAcN9ryAiJPg8_bZJw63udw,37456
|
|
643
|
-
angr/procedures/definitions/wdk/ntoskrnl.json,sha256=
|
|
643
|
+
angr/procedures/definitions/wdk/ntoskrnl.json,sha256=Y7NWnwB-Yg4_ecbz9yZwmwH2UofZcNB1D8T-3keJpEg,680550
|
|
644
644
|
angr/procedures/definitions/wdk/offreg.json,sha256=FZ6U7XD1KZPzxgtgJylRbO0sw5bcHJntWKpkchPapiU,9593
|
|
645
645
|
angr/procedures/definitions/wdk/pshed.json,sha256=ZcmmUV1H-2c-mI6W6dY6nMLnmDCC5EbIs0QinyvRsAs,1722
|
|
646
646
|
angr/procedures/definitions/wdk/secur32.json,sha256=M9aMvWxz7zzLtZU4X7Ue5tNJOuNtHvHWHz81e7DvTNs,3432
|
|
@@ -1185,7 +1185,7 @@ angr/procedures/posix/open.py,sha256=F6IqaTPHROwD0FQQRiVffs01tQASH2IAJT6cpQgDb3c
|
|
|
1185
1185
|
angr/procedures/posix/opendir.py,sha256=Us9V06V3NhDJf1gwHuKdRQnGHjTRYQPTzBJNn7dfm_c,326
|
|
1186
1186
|
angr/procedures/posix/poll.py,sha256=iLreE-OrB_ANJjz10pGyt1TBOGbTpENv-4Tzoo0GLzk,2204
|
|
1187
1187
|
angr/procedures/posix/pread64.py,sha256=Ecjn0hV0bT6dyxhMu-lgwRSpAbmi7Gr3Kejd1qER9_Q,1390
|
|
1188
|
-
angr/procedures/posix/pthread.py,sha256=
|
|
1188
|
+
angr/procedures/posix/pthread.py,sha256=6Uxl68HxcUWedYe8HwSol7-EtVjU6NaPDvrwK_DNH6M,2472
|
|
1189
1189
|
angr/procedures/posix/pwrite64.py,sha256=of_VJEvq0_-ONZO3kH3dSNCE4rUvfpCbn2cqdpQAS9E,1397
|
|
1190
1190
|
angr/procedures/posix/read.py,sha256=zoKbvZUxKsxENS8O4kt7Go5uVc0xn1dUlTxmzcOBiHc,287
|
|
1191
1191
|
angr/procedures/posix/readdir.py,sha256=KFjcwswnRwLRtUP9YrmSPj8HeGOHI0tvTG5YjUrEMqk,2150
|
|
@@ -1220,7 +1220,7 @@ angr/procedures/stubs/__init__.py,sha256=44m1-NIxNEwXtyCkYnHnH1jYw5Mp53ObHGzw1bT
|
|
|
1220
1220
|
angr/procedures/stubs/b64_decode.py,sha256=XrTE8etlYtPoB63ErSv7QqBzT9HwnVj9e0IRVReicpU,383
|
|
1221
1221
|
angr/procedures/stubs/caller.py,sha256=c-anKQywa_uohZ4yysUJ_G01S3RjM21nECNy4F_j6YQ,378
|
|
1222
1222
|
angr/procedures/stubs/crazy_scanf.py,sha256=OtbA8l8Gvj-yCFELsEm2R0H9gJIBerW12caD2QFdRnE,654
|
|
1223
|
-
angr/procedures/stubs/format_parser.py,sha256=
|
|
1223
|
+
angr/procedures/stubs/format_parser.py,sha256=chwn-spkRefyf83V9JM9X1JQZIwSIyNLlA2ZyNQjZ_U,27675
|
|
1224
1224
|
angr/procedures/stubs/syscall_stub.py,sha256=XaxmYrO4T0anV3c0r7DKrGHY8D5mBRBrc-J_m7I6BVA,826
|
|
1225
1225
|
angr/procedures/testing/__init__.py,sha256=mkl-uqerjl2KIlTiJDmE9WW9zE9sL2MQsYLHOfeoJh8,106
|
|
1226
1226
|
angr/procedures/testing/manyargs.py,sha256=6HuAjU0fKszwFUWcS_qaYuc4P_lILJiHdQX5xw8q8sk,135
|
|
@@ -1275,7 +1275,7 @@ angr/simos/linux.py,sha256=ShLsqFIut1jGuo6NGQSlT7ymoaEEwgTNkloJNN0pDDI,23204
|
|
|
1275
1275
|
angr/simos/simos.py,sha256=L43oFMGRWiVEpfMWhb_Y_iawsaxm7qw_fG-sfKF344M,18464
|
|
1276
1276
|
angr/simos/snimmuc_nxp.py,sha256=kMBcgEJ1gyYRXtgYD8H4edQ2rKGIc2rGysnwTY9HaXw,5592
|
|
1277
1277
|
angr/simos/userland.py,sha256=jvHdMocEJAlwrTjupubdGfD6snt_DpQ_pyHrIZyV7NE,7354
|
|
1278
|
-
angr/simos/windows.py,sha256=
|
|
1278
|
+
angr/simos/windows.py,sha256=aiay_aqwIbUYXvTWJIWh5YAq3QT4csPGNI6DhAon_mU,27908
|
|
1279
1279
|
angr/simos/xbox.py,sha256=f0IL9ZTgYX8feEck5nBu87bYcehbdmYKQVoze6wsmY0,971
|
|
1280
1280
|
angr/state_plugins/__init__.py,sha256=AOCYC5r6YWswhEhBEdtNDK9d9N_qhAl902UMHyGi8QY,2419
|
|
1281
1281
|
angr/state_plugins/callstack.py,sha256=BMBl0qX10Qxkwl__lVP_Ho8aaQcSJNqvMAiY6csL1y8,11825
|
|
@@ -1341,7 +1341,7 @@ angr/storage/memory_mixins/top_merger_mixin.py,sha256=ZYZ0wHbwrkigzvNX1UatwMQhww
|
|
|
1341
1341
|
angr/storage/memory_mixins/underconstrained_mixin.py,sha256=pF2p91j0g4MhWMDVcCuLVyMEqNSZNmDsGRRkQwR30_w,2691
|
|
1342
1342
|
angr/storage/memory_mixins/unwrapper_mixin.py,sha256=KVWgw7bROwsnPs8JN7ugTzGz94NOWuw0ld9KKQhwrN8,1110
|
|
1343
1343
|
angr/storage/memory_mixins/paged_memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1344
|
-
angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=
|
|
1344
|
+
angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=77Wx5vLXr4sMX2eVdQNZz2AYTEZ09YWySyKHAQMXlnw,10521
|
|
1345
1345
|
angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py,sha256=E2LNktW8ln2e5ofMfhQlyUjB4XVChkkqVwit32NWamY,29386
|
|
1346
1346
|
angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py,sha256=9kaf0ULBMwdC7vQobp1yjAQZ6Me4UvmTR3alje_PQ5A,2265
|
|
1347
1347
|
angr/storage/memory_mixins/paged_memory/privileged_mixin.py,sha256=YYFxpXsf9-ALl1x86_Gm71H45jqtdkkgLWPf0twqefU,1578
|
|
@@ -1370,7 +1370,7 @@ angr/utils/__init__.py,sha256=kBUIJCp9WSgzb62zMg4puUUeheMSl9U4RFqkfiL3en8,1159
|
|
|
1370
1370
|
angr/utils/ail.py,sha256=-N59ISc-k-0jHFu0Bg5FIhvhBY8HT6zK3OYSVhXawWo,2838
|
|
1371
1371
|
angr/utils/algo.py,sha256=4TaEFE4tU-59KyRVFASqXeoiwH01ZMj5fZd_JVcpdOY,1038
|
|
1372
1372
|
angr/utils/bits.py,sha256=_eWPyymSbj01jsLexicRtD_X7sUKKj_fTUI0DEIZ-rc,1054
|
|
1373
|
-
angr/utils/constants.py,sha256=
|
|
1373
|
+
angr/utils/constants.py,sha256=kY8SvX3475AT7JWD2uKHiLKuFEAMxn6OFVtnfbIJzaE,281
|
|
1374
1374
|
angr/utils/cowdict.py,sha256=qx2iO1rrCDTQUGX9dqi9ZAly2Dgm6bCEgdSAQw9MxRM,2159
|
|
1375
1375
|
angr/utils/cpp.py,sha256=k6ZOUNIqYxLd5WSRKP2T3li-3zt06PtneLgaBWPOtiU,516
|
|
1376
1376
|
angr/utils/doms.py,sha256=l5_GUvVcjfwglZTqGYKOx5QvJ_pE_PWBIhH8fTk_e80,5356
|
|
@@ -1386,6 +1386,7 @@ angr/utils/library.py,sha256=N8-7DTJhbBFe9f-Yvx0--dHs43nAEDcTXhqm4aUBOj0,7386
|
|
|
1386
1386
|
angr/utils/loader.py,sha256=5PtUlonkbqENNg3AMJ4YI3-g5dyyXJ0GP83SwO2dECY,1951
|
|
1387
1387
|
angr/utils/mp.py,sha256=y6Q0nDOykRZvcQ805DZpcJHQTGN-gqFi0eERGNhb3C0,1903
|
|
1388
1388
|
angr/utils/orderedset.py,sha256=aGfmLdOS77nzz2eoPpCqRICqzaAeBnuis1Et_I_hiZg,2047
|
|
1389
|
+
angr/utils/strings.py,sha256=iv3Mg_KCyyPx9dkIw-O0ZidWyGl8mqPDkyNJwZYQr_U,688
|
|
1389
1390
|
angr/utils/tagged_interval_map.py,sha256=rXKBuT14N23AAntpOKhZhmA-qqymnsvjpheFXoTRVRA,4417
|
|
1390
1391
|
angr/utils/timing.py,sha256=n-YZ86g0ZWmLhsoNvcimRpKzewR5hmquLZe6fagxlBw,2224
|
|
1391
1392
|
angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
|
|
@@ -1393,9 +1394,9 @@ angr/utils/vex.py,sha256=epcrCexi_NjKnPGM2gfpiRsUea_Scd-71UMuF32ZAQo,306
|
|
|
1393
1394
|
angr/utils/ssa/__init__.py,sha256=xbuVllFoPane9lHACdRQP5OO99Mca-4sqpFrtoAvnxo,17464
|
|
1394
1395
|
angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
|
|
1395
1396
|
angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
|
|
1396
|
-
angr-9.2.
|
|
1397
|
-
angr-9.2.
|
|
1398
|
-
angr-9.2.
|
|
1399
|
-
angr-9.2.
|
|
1400
|
-
angr-9.2.
|
|
1401
|
-
angr-9.2.
|
|
1397
|
+
angr-9.2.177.dist-info/METADATA,sha256=nSqVeQ_B1EMMDD_YHtcBhdpPcIoiE-1rh_ekW4aiSFs,4366
|
|
1398
|
+
angr-9.2.177.dist-info/WHEEL,sha256=7Q_GFsiWitiYuC9aUKWxEd9p7A1iqe7B1zVeUCL1ovo,113
|
|
1399
|
+
angr-9.2.177.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
1400
|
+
angr-9.2.177.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
1401
|
+
angr-9.2.177.dist-info/RECORD,,
|
|
1402
|
+
angr-9.2.177.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# pylint:disable=arguments-differ
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
from angr.ailment.expression import Expression, BinaryOp, Const, Register, StackBaseOffset, UnaryOp, VirtualVariable
|
|
5
|
-
from angr.ailment.statement import Call, Store
|
|
6
|
-
|
|
7
|
-
from angr.sim_type import SimTypePointer, SimTypeWideChar
|
|
8
|
-
from .base import PeepholeOptimizationMultiStmtBase
|
|
9
|
-
from .inlined_wstrcpy import InlinedWstrcpy
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class InlinedWstrcpyConsolidation(PeepholeOptimizationMultiStmtBase):
|
|
13
|
-
"""
|
|
14
|
-
Consolidate multiple inlined wstrcpy/wstrncpy calls.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
__slots__ = ()
|
|
18
|
-
|
|
19
|
-
NAME = "Consolidate multiple inlined wstrncpy calls"
|
|
20
|
-
stmt_classes = ((Call, Call), (Call, Store))
|
|
21
|
-
|
|
22
|
-
def optimize( # type:ignore
|
|
23
|
-
self, stmts: list[Call], stmt_idx: int | None = None, block=None, **kwargs
|
|
24
|
-
): # pylint:disable=unused-argument
|
|
25
|
-
last_stmt, stmt = stmts
|
|
26
|
-
if InlinedWstrcpy.is_inlined_wstrncpy(last_stmt):
|
|
27
|
-
assert last_stmt.args is not None
|
|
28
|
-
assert self.kb is not None
|
|
29
|
-
s_last: bytes = self.kb.custom_strings[last_stmt.args[1].value]
|
|
30
|
-
addr_last = last_stmt.args[0]
|
|
31
|
-
new_str = None # will be set if consolidation should happen
|
|
32
|
-
|
|
33
|
-
if isinstance(stmt, Call) and InlinedWstrcpy.is_inlined_wstrncpy(stmt):
|
|
34
|
-
assert stmt.args is not None
|
|
35
|
-
# consolidating two calls
|
|
36
|
-
s_curr: bytes = self.kb.custom_strings[stmt.args[1].value]
|
|
37
|
-
addr_curr = stmt.args[0]
|
|
38
|
-
# determine if the two addresses are consecutive
|
|
39
|
-
delta = self._get_delta(addr_last, addr_curr)
|
|
40
|
-
if delta is not None and delta == len(s_last):
|
|
41
|
-
# consolidate both calls!
|
|
42
|
-
new_str = s_last + s_curr
|
|
43
|
-
elif isinstance(stmt, Store) and isinstance(stmt.data, Const) and isinstance(stmt.data.value, int):
|
|
44
|
-
# consolidating a call and a store, in case the store statement is storing the suffix of a string (but
|
|
45
|
-
# the suffix is too short to qualify an inlined strcpy optimization)
|
|
46
|
-
addr_curr = stmt.addr
|
|
47
|
-
delta = self._get_delta(addr_last, addr_curr)
|
|
48
|
-
if delta is not None and delta == len(s_last):
|
|
49
|
-
if stmt.size == 2 and stmt.data.value == 0:
|
|
50
|
-
# it's probably the terminating null byte
|
|
51
|
-
r, s = True, b"\x00\x00"
|
|
52
|
-
else:
|
|
53
|
-
r, s = InlinedWstrcpy.is_integer_likely_a_wide_string(
|
|
54
|
-
stmt.data.value, stmt.size, stmt.endness, min_length=1 # type:ignore
|
|
55
|
-
)
|
|
56
|
-
if r and s is not None:
|
|
57
|
-
new_str = s_last + s
|
|
58
|
-
|
|
59
|
-
if new_str is not None:
|
|
60
|
-
assert self.project is not None
|
|
61
|
-
wstr_type = SimTypePointer(SimTypeWideChar()).with_arch(self.project.arch)
|
|
62
|
-
if new_str.endswith(b"\x00\x00"):
|
|
63
|
-
call_name = "wstrcpy"
|
|
64
|
-
new_str_idx = self.kb.custom_strings.allocate(new_str[:-2])
|
|
65
|
-
args = [
|
|
66
|
-
last_stmt.args[0],
|
|
67
|
-
Const(None, None, new_str_idx, last_stmt.args[0].bits, custom_string=True, type=wstr_type),
|
|
68
|
-
]
|
|
69
|
-
prototype = None
|
|
70
|
-
else:
|
|
71
|
-
call_name = "wstrncpy"
|
|
72
|
-
new_str_idx = self.kb.custom_strings.allocate(new_str)
|
|
73
|
-
args = [
|
|
74
|
-
last_stmt.args[0],
|
|
75
|
-
Const(None, None, new_str_idx, last_stmt.args[0].bits, custom_string=True, type=wstr_type),
|
|
76
|
-
Const(None, None, len(new_str) // 2, self.project.arch.bits),
|
|
77
|
-
]
|
|
78
|
-
prototype = None
|
|
79
|
-
|
|
80
|
-
return [Call(stmt.idx, call_name, args=args, prototype=prototype, **stmt.tags)]
|
|
81
|
-
|
|
82
|
-
return None
|
|
83
|
-
|
|
84
|
-
@staticmethod
|
|
85
|
-
def _parse_addr(addr: Expression) -> tuple[Expression, int]:
|
|
86
|
-
if isinstance(addr, Register):
|
|
87
|
-
return addr, 0
|
|
88
|
-
if isinstance(addr, StackBaseOffset):
|
|
89
|
-
return StackBaseOffset(None, addr.bits, 0), addr.offset
|
|
90
|
-
if (
|
|
91
|
-
isinstance(addr, UnaryOp)
|
|
92
|
-
and addr.op == "Reference"
|
|
93
|
-
and isinstance(addr.operand, VirtualVariable)
|
|
94
|
-
and addr.operand.was_stack
|
|
95
|
-
):
|
|
96
|
-
return StackBaseOffset(None, addr.bits, 0), addr.operand.stack_offset
|
|
97
|
-
if isinstance(addr, BinaryOp):
|
|
98
|
-
if addr.op == "Add" and isinstance(addr.operands[1], Const) and isinstance(addr.operands[1].value, int):
|
|
99
|
-
base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr.operands[0])
|
|
100
|
-
return base_0, offset_0 + addr.operands[1].value
|
|
101
|
-
if addr.op == "Sub" and isinstance(addr.operands[1], Const) and isinstance(addr.operands[1].value, int):
|
|
102
|
-
base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr.operands[0])
|
|
103
|
-
return base_0, offset_0 - addr.operands[1].value
|
|
104
|
-
|
|
105
|
-
return addr, 0
|
|
106
|
-
|
|
107
|
-
@staticmethod
|
|
108
|
-
def _get_delta(addr_0: Expression, addr_1: Expression) -> int | None:
|
|
109
|
-
base_0, offset_0 = InlinedWstrcpyConsolidation._parse_addr(addr_0)
|
|
110
|
-
base_1, offset_1 = InlinedWstrcpyConsolidation._parse_addr(addr_1)
|
|
111
|
-
if base_0.likes(base_1):
|
|
112
|
-
return offset_1 - offset_0
|
|
113
|
-
return None
|
|
File without changes
|
|
File without changes
|