angr 9.2.175__cp310-abi3-macosx_11_0_arm64.whl → 9.2.177__cp310-abi3-macosx_11_0_arm64.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/unicornlib.dylib +0 -0
- 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 +50 -49
- 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/unicornlib.dylib
CHANGED
|
Binary file
|
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,23 +1,23 @@
|
|
|
1
|
-
angr-9.2.
|
|
2
|
-
angr-9.2.
|
|
3
|
-
angr-9.2.
|
|
4
|
-
angr-9.2.
|
|
5
|
-
angr-9.2.
|
|
6
|
-
angr-9.2.
|
|
1
|
+
angr-9.2.177.dist-info/RECORD,,
|
|
2
|
+
angr-9.2.177.dist-info/WHEEL,sha256=kFn0Fg1gyV9Pk02-Hr4CbqbhAvYPyosBpF5pwZB07jU,135
|
|
3
|
+
angr-9.2.177.dist-info/entry_points.txt,sha256=Vjh1C8PMyr5dZFMnik5WkEP01Uwr2T73I3a6N32sgQU,44
|
|
4
|
+
angr-9.2.177.dist-info/top_level.txt,sha256=dKw0KWTbwLXytFvv15oAAG4sUs3ey47tt6DorJG9-hw,5
|
|
5
|
+
angr-9.2.177.dist-info/METADATA,sha256=nSqVeQ_B1EMMDD_YHtcBhdpPcIoiE-1rh_ekW4aiSFs,4366
|
|
6
|
+
angr-9.2.177.dist-info/licenses/LICENSE,sha256=PmWf0IlSz6Jjp9n7nyyBQA79Q5C2ma68LRykY1V3GF0,1456
|
|
7
7
|
angr/vaults.py,sha256=D_gkDegCyPlZMKGC5E8zINYAaZfSXNWbmhX0rXCYpvM,9718
|
|
8
|
-
angr/unicornlib.dylib,sha256=
|
|
8
|
+
angr/unicornlib.dylib,sha256=J-Pq_MLBdri_wUoTGGajWX7XliBS5OWjaVAbeR65s9g,234064
|
|
9
9
|
angr/state_hierarchy.py,sha256=qDQCUGXmQm3vOxE3CSoiqTH4OAFFOWZZt9BLhNpeOhA,8484
|
|
10
10
|
angr/callable.py,sha256=j9Orwd4H4fPqOYylcEt5GuLGPV7ZOqyA_OYO2bp5PAA,6437
|
|
11
|
-
angr/sim_type.py,sha256=
|
|
11
|
+
angr/sim_type.py,sha256=8AJjzu_hp4GvgXogz8KnLiPXSnxBGUy-D3G8w4wEicQ,144714
|
|
12
12
|
angr/knowledge_base.py,sha256=hRoSLuLaOXmddTSF9FN5TVs7liftpBGq_IICz5AaYBk,4533
|
|
13
|
-
angr/emulator.py,sha256=
|
|
14
|
-
angr/rustylib.abi3.so,sha256=
|
|
13
|
+
angr/emulator.py,sha256=aZXi8-jQ_9uelN2zvlecR2ZYXPey4PHyju6yVJIWDAk,4708
|
|
14
|
+
angr/rustylib.abi3.so,sha256=aGZvJI_y93xVD7WXHapKlqJf6uqBfzecs3-7EjPzkWQ,4790512
|
|
15
15
|
angr/codenode.py,sha256=hCrQRp4Ebb2X6JicNmY1PXo3_Pm8GDxVivVW0Pwe84k,3918
|
|
16
16
|
angr/graph_utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
17
|
angr/sim_manager.py,sha256=w7yTfWR-P9yoN5x85eeiNpj9dTrnjpJ3o5aoFpDAPnc,39396
|
|
18
18
|
angr/serializable.py,sha256=l908phj_KcqopEEL_oCufbP_H6cm3Wc9v-5xdux1-6g,1533
|
|
19
19
|
angr/code_location.py,sha256=kXNJDEMge9VRHadrK4E6HQ8wDdCaHSXNqyAZuHDEGuM,5397
|
|
20
|
-
angr/__init__.py,sha256=
|
|
20
|
+
angr/__init__.py,sha256=aC71aVWcBP7xns-lX1-sgjw1ZhoYMyYpT71RqZaJHsc,9246
|
|
21
21
|
angr/blade.py,sha256=OGGW-oggqI9_LvgZhiQuh9Ktkvf3vhRBmH0XviNyZ6o,15801
|
|
22
22
|
angr/factory.py,sha256=PPNWvTiWaIgzxzyoTr8ObSF-TXp1hCdbY2e-0xBePNc,17815
|
|
23
23
|
angr/sim_state_options.py,sha256=dsMY3UefvL7yZKXloubMhzUET3N2Crw-Fpw2Vd1ouZQ,12468
|
|
@@ -66,7 +66,7 @@ angr/procedures/stubs/ReturnUnconstrained.py,sha256=FFrZAdUViFi-8yzWuUwpmvJapj0q
|
|
|
66
66
|
angr/procedures/stubs/UserHook.py,sha256=muRdWND98X2Eg3F7k-_D-yqb8jLjp1VrnM2sxCwCYuU,604
|
|
67
67
|
angr/procedures/stubs/UnresolvableCallTarget.py,sha256=Q8LPW3xiySQjUUVUQyDA6NndyLEdtye1bieC8dm9tZY,188
|
|
68
68
|
angr/procedures/stubs/Redirect.py,sha256=gZBhMcayajSMAS4im9ED638XP5euFd7m-pv9uBmUxoI,482
|
|
69
|
-
angr/procedures/stubs/format_parser.py,sha256=
|
|
69
|
+
angr/procedures/stubs/format_parser.py,sha256=chwn-spkRefyf83V9JM9X1JQZIwSIyNLlA2ZyNQjZ_U,27675
|
|
70
70
|
angr/procedures/stubs/__init__.py,sha256=44m1-NIxNEwXtyCkYnHnH1jYw5Mp53ObHGzw1bTdXVc,67
|
|
71
71
|
angr/procedures/stubs/syscall_stub.py,sha256=XaxmYrO4T0anV3c0r7DKrGHY8D5mBRBrc-J_m7I6BVA,826
|
|
72
72
|
angr/procedures/stubs/PathTerminator.py,sha256=d4WzGNwKtcUZygeub0iaEfD0PW6amYHCZ7G9CRBAAL0,143
|
|
@@ -85,7 +85,7 @@ angr/procedures/posix/getsockopt.py,sha256=EM169ORkFGkGyqLKZoLJCJiA2H5_LVVln_Kui
|
|
|
85
85
|
angr/procedures/posix/sigaction.py,sha256=E3SM6BhpuKufaAityNstPUiigTfAPOtOoT1zTtvuWsI,821
|
|
86
86
|
angr/procedures/posix/send.py,sha256=suypMy-ismXqf17TmDfv8gc4D7ZlAeFk198E3NvNVl4,725
|
|
87
87
|
angr/procedures/posix/sim_time.py,sha256=71PvgIxfh9xKBkHbvnruaLGFmGP5eJrO4_h7vGnYKJI,1691
|
|
88
|
-
angr/procedures/posix/pthread.py,sha256=
|
|
88
|
+
angr/procedures/posix/pthread.py,sha256=6Uxl68HxcUWedYe8HwSol7-EtVjU6NaPDvrwK_DNH6M,2472
|
|
89
89
|
angr/procedures/posix/fork.py,sha256=j49y7IVmMvYlex2HRwv21z4nY_m_O_sr-zkOzFM_HNg,303
|
|
90
90
|
angr/procedures/posix/__init__.py,sha256=yg0t_r5-yU38GbJmr2QhhNupgoicttNLkuxFfu13_FY,66
|
|
91
91
|
angr/procedures/posix/usleep.py,sha256=lXo-DT5YEhD9368n7HRwkjQMrs9zC7gj5MThSNy-wQw,175
|
|
@@ -310,8 +310,8 @@ angr/procedures/definitions/cgc.py,sha256=Jrb74dNzy05h_nmsC3GjN5Yr5_jWIjpZ24ZsVk
|
|
|
310
310
|
angr/procedures/definitions/gnulib.py,sha256=GK4eVXFxwgwhJ9cr47PiTUS4fKYrqPfMtIvwM464Oyo,1107
|
|
311
311
|
angr/procedures/definitions/linux_kernel.py,sha256=xPpfHkfaA_5jS6mPX1YDCPLHEAirAmeGW6mLDBKIlC8,239128
|
|
312
312
|
angr/procedures/definitions/parse_glibc.py,sha256=-vmm4hKO2GnBVXmk6Nq4fxGHuLxesRbF52UIrPk4a6Q,2092
|
|
313
|
-
angr/procedures/definitions/parse_win32json.py,sha256=
|
|
314
|
-
angr/procedures/definitions/__init__.py,sha256=
|
|
313
|
+
angr/procedures/definitions/parse_win32json.py,sha256=LzvSZC5u6Jkbe-tx9L7swZmJ0DOm26BjTmJWZGiMhBw,109413
|
|
314
|
+
angr/procedures/definitions/__init__.py,sha256=wYoWkHRSh6wjWE-9wPgNJbTfyeHaqkN2zDWOtHJMdF8,43644
|
|
315
315
|
angr/procedures/definitions/msvcr.py,sha256=CQgWXrKcEjx9xfPf2BZOOPaQJ5AUqwdNtN_5FdYtRzg,651
|
|
316
316
|
angr/procedures/definitions/parse_syscalls_from_local_system.py,sha256=ssyMjeyuPVYHnbmArwDPO0XXMW1n5Odv__n17cdLVcY,1823
|
|
317
317
|
angr/procedures/definitions/linux_loader.py,sha256=uEeMktLesh0NzHmRfgP76IuSzL4YMssR_SSjBRSqA9c,267
|
|
@@ -328,7 +328,7 @@ angr/procedures/definitions/wdk/hal.json,sha256=RxvRTa5sumqXXPJai2YrdssJD5fbWeTQ
|
|
|
328
328
|
angr/procedures/definitions/wdk/api-ms-win-dx-d3dkmt-l1-1-6.json,sha256=W4md-By6xMbKPnSvDQG4Sqh5C6HSrl_61NHY9GWGbQM,460
|
|
329
329
|
angr/procedures/definitions/wdk/gdi32.json,sha256=YByprF-byACUskCT17vLClW6P0b3BfA53HRgCYxPGTk,44925
|
|
330
330
|
angr/procedures/definitions/wdk/fwpuclnt.json,sha256=EYx_oyvbqFnSvI6LeiPy1BbAEnc-WMyn_7aOr3qxP_M,69854
|
|
331
|
-
angr/procedures/definitions/wdk/ntoskrnl.json,sha256=
|
|
331
|
+
angr/procedures/definitions/wdk/ntoskrnl.json,sha256=Y7NWnwB-Yg4_ecbz9yZwmwH2UofZcNB1D8T-3keJpEg,680550
|
|
332
332
|
angr/procedures/definitions/wdk/fwpkclnt.json,sha256=W_0xXafBO0bheqpLGXOO0tVORvx2KXMwrhPaoBUJTko,1225
|
|
333
333
|
angr/procedures/definitions/wdk/ksecdd.json,sha256=xYYdocSCK8LBeQYFlhZ7ZKiTK-ju26KDWRIQiw7rBKQ,13262
|
|
334
334
|
angr/procedures/definitions/wdk/secur32.json,sha256=M9aMvWxz7zzLtZU4X7Ue5tNJOuNtHvHWHz81e7DvTNs,3432
|
|
@@ -758,7 +758,7 @@ angr/utils/env.py,sha256=aO4N2h7DUsUQtTgnC5J_oPHvMxJRur20m5UFSkmy4XU,398
|
|
|
758
758
|
angr/utils/library.py,sha256=N8-7DTJhbBFe9f-Yvx0--dHs43nAEDcTXhqm4aUBOj0,7386
|
|
759
759
|
angr/utils/ail.py,sha256=-N59ISc-k-0jHFu0Bg5FIhvhBY8HT6zK3OYSVhXawWo,2838
|
|
760
760
|
angr/utils/graph.py,sha256=-8cipOvaBeD4owh2cksAwBgcIx2jOeKZa-zcFk73WeM,34787
|
|
761
|
-
angr/utils/constants.py,sha256=
|
|
761
|
+
angr/utils/constants.py,sha256=kY8SvX3475AT7JWD2uKHiLKuFEAMxn6OFVtnfbIJzaE,281
|
|
762
762
|
angr/utils/cowdict.py,sha256=qx2iO1rrCDTQUGX9dqi9ZAly2Dgm6bCEgdSAQw9MxRM,2159
|
|
763
763
|
angr/utils/__init__.py,sha256=kBUIJCp9WSgzb62zMg4puUUeheMSl9U4RFqkfiL3en8,1159
|
|
764
764
|
angr/utils/types.py,sha256=688trvR0_j93sfeRgFT1npcmjNGSx99m_IPe9Xyy9WY,4967
|
|
@@ -775,6 +775,7 @@ angr/utils/funcid.py,sha256=Rd4r8juv2IpeMtCpPp4wxJoEZTnZZ1NsxdT42tvrKVA,6353
|
|
|
775
775
|
angr/utils/algo.py,sha256=4TaEFE4tU-59KyRVFASqXeoiwH01ZMj5fZd_JVcpdOY,1038
|
|
776
776
|
angr/utils/enums_conv.py,sha256=fA6qeoRZ6Cj6gCIS_PZbP4PX7E8IybnYQ90OZGnBVrc,2746
|
|
777
777
|
angr/utils/endness.py,sha256=PDpDNbiIbaSx1DGH1z16nU2B5GMrTqONGivGeVNiGyU,506
|
|
778
|
+
angr/utils/strings.py,sha256=iv3Mg_KCyyPx9dkIw-O0ZidWyGl8mqPDkyNJwZYQr_U,688
|
|
778
779
|
angr/utils/vex.py,sha256=epcrCexi_NjKnPGM2gfpiRsUea_Scd-71UMuF32ZAQo,306
|
|
779
780
|
angr/utils/ssa/tmp_uses_collector.py,sha256=digAUQpYoFR1VYfwoXlF3T1pYdDi6Pdq_ck54SjMabQ,813
|
|
780
781
|
angr/utils/ssa/vvar_uses_collector.py,sha256=HewqUQluNE9EsaiLeFo7LaBvws_DDBDYNt9RBExy464,1367
|
|
@@ -811,7 +812,7 @@ angr/simos/simos.py,sha256=L43oFMGRWiVEpfMWhb_Y_iawsaxm7qw_fG-sfKF344M,18464
|
|
|
811
812
|
angr/simos/javavm.py,sha256=8WatgrjfiSPyUyHmRhrKWvKxYCvUG3F3xh3LSJDpxhQ,20566
|
|
812
813
|
angr/simos/userland.py,sha256=jvHdMocEJAlwrTjupubdGfD6snt_DpQ_pyHrIZyV7NE,7354
|
|
813
814
|
angr/simos/xbox.py,sha256=f0IL9ZTgYX8feEck5nBu87bYcehbdmYKQVoze6wsmY0,971
|
|
814
|
-
angr/simos/windows.py,sha256=
|
|
815
|
+
angr/simos/windows.py,sha256=aiay_aqwIbUYXvTWJIWh5YAq3QT4csPGNI6DhAon_mU,27908
|
|
815
816
|
angr/simos/linux.py,sha256=ShLsqFIut1jGuo6NGQSlT7ymoaEEwgTNkloJNN0pDDI,23204
|
|
816
817
|
angr/simos/snimmuc_nxp.py,sha256=kMBcgEJ1gyYRXtgYD8H4edQ2rKGIc2rGysnwTY9HaXw,5592
|
|
817
818
|
angr/storage/memory_object.py,sha256=EyRSgADKDt0IMNfUoDfu-uE1ycpK7U30ORduxPUgk6w,6242
|
|
@@ -855,7 +856,7 @@ angr/storage/memory_mixins/paged_memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
|
855
856
|
angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py,sha256=E2LNktW8ln2e5ofMfhQlyUjB4XVChkkqVwit32NWamY,29386
|
|
856
857
|
angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py,sha256=9kaf0ULBMwdC7vQobp1yjAQZ6Me4UvmTR3alje_PQ5A,2265
|
|
857
858
|
angr/storage/memory_mixins/paged_memory/privileged_mixin.py,sha256=YYFxpXsf9-ALl1x86_Gm71H45jqtdkkgLWPf0twqefU,1578
|
|
858
|
-
angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=
|
|
859
|
+
angr/storage/memory_mixins/paged_memory/page_backer_mixins.py,sha256=77Wx5vLXr4sMX2eVdQNZz2AYTEZ09YWySyKHAQMXlnw,10521
|
|
859
860
|
angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py,sha256=AxzHQwf1f5J5W8jnMzgTzMdAYhw2UIKpp31OQDMESak,3320
|
|
860
861
|
angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py,sha256=1RKRsZE2xn4hta1kTT0p6n4WTduQJKiPqhipN0Xi8p8,1002
|
|
861
862
|
angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py,sha256=8sAIQgcZrMefCT9_DmToiF71SGFe1YkTEW5rJ6fZ7qI,1728
|
|
@@ -913,15 +914,15 @@ angr/knowledge_plugins/functions/soot_function.py,sha256=OzCvQPWxnjbwPWTW0JXrQey
|
|
|
913
914
|
angr/knowledge_plugins/functions/function_parser.py,sha256=DTdVwYt6nXLMc0EOh-V_GhvZYQ947UNBaA77qn7Y6Vo,12379
|
|
914
915
|
angr/knowledge_plugins/functions/function_manager.py,sha256=StsK3biTFRRA2ugrmeQLuHiN894p789Tlw1CIKlE0PY,23462
|
|
915
916
|
angr/knowledge_plugins/functions/__init__.py,sha256=asiLNiT6sHbjP6eU-kDpawIoVxv4J35cwz5yQHtQ2E0,167
|
|
916
|
-
angr/knowledge_plugins/functions/function.py,sha256=
|
|
917
|
+
angr/knowledge_plugins/functions/function.py,sha256=orSBM5R073Tf-PDWw8NcvKl_iUgCnnk1SyFFMPZP6VE,72303
|
|
917
918
|
angr/knowledge_plugins/xrefs/xref.py,sha256=U2H1rfffp5EXoh0awlGxMBxA4K5MIwl3CXjV3Uih3tA,4856
|
|
918
919
|
angr/knowledge_plugins/xrefs/xref_manager.py,sha256=1n373rtV91xicAfSUresRigsZ6qCBhPOaJKrN_SW3QY,4157
|
|
919
920
|
angr/knowledge_plugins/xrefs/__init__.py,sha256=5PhqVOtTZ27lCjJ9wp7akUeJydqILbyCBZK0gP7BGQs,193
|
|
920
921
|
angr/knowledge_plugins/xrefs/xref_types.py,sha256=LcQ9pD4E4XlC51Us49xiqAoGAFGpnCrpYO4mOzILiKI,308
|
|
921
922
|
angr/engines/unicorn.py,sha256=fq2akQ4dVFAWqek0Yr4JTaTJWwp5vICiSQ7Sg4wuDJE,24533
|
|
922
923
|
angr/engines/concrete.py,sha256=kEt6Dyp8QAIaOP3oW5lRcDs_2UMP2vbiNzylGiqvf7g,2143
|
|
923
|
-
angr/engines/icicle.py,sha256=
|
|
924
|
-
angr/engines/hook.py,sha256=
|
|
924
|
+
angr/engines/icicle.py,sha256=JSbHnTJePV1l6dmF5WPhlzYjm6ZApQfjCUrgJ4jewOg,11033
|
|
925
|
+
angr/engines/hook.py,sha256=YMCUWs-cC3fQCN9xlYAy7vaMPKWDNJkl9KtCMYUyMP0,2569
|
|
925
926
|
angr/engines/__init__.py,sha256=_3oRkiTrPO7QPiCg3qXymt4o9ZAOrAHt5pdfjkp3W9k,1661
|
|
926
927
|
angr/engines/procedure.py,sha256=8kgFH56nkqSWm0p1apuGBaFngl-4BnAzE0bXhq9mc6Y,2561
|
|
927
928
|
angr/engines/engine.py,sha256=2kwOT-sbxKXAVX2PmsPTr8Ax36Vxq6hkRdDKaITBQNc,657
|
|
@@ -975,7 +976,7 @@ angr/engines/soot/expressions/base.py,sha256=7y6a_euE8TNsrCA1jZfyjHjh7TH91nKaP_Z
|
|
|
975
976
|
angr/engines/soot/expressions/phi.py,sha256=XS44tYMD-70WCL0EH0BdVcLIfYXLEHgSW9Tywl67uIk,1227
|
|
976
977
|
angr/engines/vex/lifter.py,sha256=BqeajzzpLL32nmGaszWASBPDhluhTec2m3ods1ZTIIo,17207
|
|
977
978
|
angr/engines/vex/__init__.py,sha256=k8cIQpJO2Wv6erLCOa4boEywRcwlFOTgAgGP6wNQcwM,525
|
|
978
|
-
angr/engines/vex/claripy/ccall.py,sha256=
|
|
979
|
+
angr/engines/vex/claripy/ccall.py,sha256=sxWkTmCFwVto9dqTW74sCSgl47kn8HV3NSTU0LCcxts,82962
|
|
979
980
|
angr/engines/vex/claripy/datalayer.py,sha256=kb-QSvwRzc6Mufwsv012Tgg_PNJPUTec8ElSuJcFzNQ,4971
|
|
980
981
|
angr/engines/vex/claripy/irop.py,sha256=_xiVGT5YbguTm8c0DaAqHnPUVrD2lp3ELtiBJTPwTOA,46240
|
|
981
982
|
angr/engines/vex/claripy/__init__.py,sha256=4B8H1VOHrrKJMjAXZkZ0r_02issFP_bxDJJMw50yVe4,109
|
|
@@ -1051,7 +1052,7 @@ angr/analyses/analysis.py,sha256=2ABUppMZr97ZEAmxOQuXo-eyw5aF0ZASAii8SuuncNo,156
|
|
|
1051
1052
|
angr/analyses/init_finder.py,sha256=lSiBfmKExmhK7wsLGsBaJYQKjW9t7S5mlcH3U--B6CI,9259
|
|
1052
1053
|
angr/analyses/boyscout.py,sha256=KIxl1chV_hQV2Unn-vnoYne1dmFVy1WTUdoidkUpQ8I,2469
|
|
1053
1054
|
angr/analyses/congruency_check.py,sha256=QeYRrdrs_iluLLnKz3KUHkCTPRVl5PgM2T0ZXd786HA,16165
|
|
1054
|
-
angr/analyses/stack_pointer_tracker.py,sha256=
|
|
1055
|
+
angr/analyses/stack_pointer_tracker.py,sha256=tsiA8VHyrUsR9sCFh6CL0BS1Ubunv2pat6D3DLanDgI,38151
|
|
1055
1056
|
angr/analyses/binary_optimizer.py,sha256=xFDv8c1s5nQUKY_EWYRCuVroSXFkMiSLl5LngPiysDA,26145
|
|
1056
1057
|
angr/analyses/proximity_graph.py,sha256=KoRvdQswRrDygotrY_6hPnrzUf1U5c5mht-b7lowyFM,16087
|
|
1057
1058
|
angr/analyses/vtable.py,sha256=1Ed7jzr99rk9VgOGzcxBw_6GFqby5mIdSTGPqQPhcZM,3872
|
|
@@ -1060,7 +1061,7 @@ angr/analyses/__init__.py,sha256=KFu0Otm7bqAcjX8dsnQzphJmkUVxMLssjFIJJOci32U,347
|
|
|
1060
1061
|
angr/analyses/ddg.py,sha256=AWPPsL2bfTAua5meuQfPFL6b29PLpCLZzw-LGCv5iVo,63214
|
|
1061
1062
|
angr/analyses/dominance_frontier.py,sha256=kRoOCr3EaIUW1YnvtjmKFJW65zYsJHNe-HtVx2LR15s,2002
|
|
1062
1063
|
angr/analyses/smc.py,sha256=DC4l7fTmoOybD_lSQaLjcUdeLUifQhhsSu1nx8Ax6pM,5176
|
|
1063
|
-
angr/analyses/complete_calling_conventions.py,sha256=
|
|
1064
|
+
angr/analyses/complete_calling_conventions.py,sha256=a-hJQ6yRusDhRADGcLxjY6ETlD1vN_QsHd2c0VZlo7I,21079
|
|
1064
1065
|
angr/analyses/callee_cleanup_finder.py,sha256=lQRn5rHS6mGNOqDh-UsxX-gs4cDpwQ6KNjvzQFVCdio,2800
|
|
1065
1066
|
angr/analyses/static_hooker.py,sha256=AYJXoHtdq2m-MgpJbx4eur7wy7llrKXvsVM5NdPcKHU,1852
|
|
1066
1067
|
angr/analyses/code_tagging.py,sha256=Gj7Ms24RnmhC9OD57gw7R6_c-pLfqSug-LVUMw_JmXE,3510
|
|
@@ -1072,14 +1073,14 @@ angr/analyses/xrefs.py,sha256=vs6cpVmwXHOmxrI9lJUwCRMYbPSqvIQXS5_fINMaOGI,10290
|
|
|
1072
1073
|
angr/analyses/loop_analysis.py,sha256=up6N3SZzya6N6OlKldo_MP36DqiY_tMbVdFWSM8fByU,9311
|
|
1073
1074
|
angr/analyses/class_identifier.py,sha256=7zOIryNL_DrXW11GGzZjp6TPwv--2VZ5ZuSzYpXirmQ,2951
|
|
1074
1075
|
angr/analyses/disassembly_utils.py,sha256=Pj9vnyji9fBDL3a3vAo2D3H4CfB-XrvVDLIsNXrp9pU,2877
|
|
1075
|
-
angr/analyses/typehoon/lifter.py,sha256=
|
|
1076
|
+
angr/analyses/typehoon/lifter.py,sha256=FGu990mwsMRvPwiRIcu7pHtfXQ54sZ6bVGxwtb8W9EQ,4523
|
|
1076
1077
|
angr/analyses/typehoon/__init__.py,sha256=KjKBUZadAd3grXUy48_qO0L4Me-riSqPGteVDcTL59M,92
|
|
1077
1078
|
angr/analyses/typehoon/variance.py,sha256=3wYw3of8uoar-MQ7gD6arALiwlJRW990t0BUqMarXIY,193
|
|
1078
|
-
angr/analyses/typehoon/simple_solver.py,sha256=
|
|
1079
|
-
angr/analyses/typehoon/typevars.py,sha256=
|
|
1079
|
+
angr/analyses/typehoon/simple_solver.py,sha256=F34YE16C80Q8p5u_MPvJ-kPcVvm9_PQ-YMIBkjqKwOQ,73163
|
|
1080
|
+
angr/analyses/typehoon/typevars.py,sha256=oFRDzN9JoznJ8MPTNNla_0OA6OeBQOfZZYMTeAufW9s,18090
|
|
1080
1081
|
angr/analyses/typehoon/dfa.py,sha256=41lzhE-QmkC342SjfaaPI41lr4Au5XROTu_7oenvg7g,3823
|
|
1081
|
-
angr/analyses/typehoon/translator.py,sha256=
|
|
1082
|
-
angr/analyses/typehoon/typeconsts.py,sha256=
|
|
1082
|
+
angr/analyses/typehoon/translator.py,sha256=4gbgKg7ZGK_-97OCVnzaRjDrS2ZSl6WGbcR0E7OC_7Q,10615
|
|
1083
|
+
angr/analyses/typehoon/typeconsts.py,sha256=1By-4oluuW00kDJPrKlugpAHxpSNB_GB3rbbZVtV2eI,8890
|
|
1083
1084
|
angr/analyses/typehoon/typehoon.py,sha256=qj5MBJdzVB-5f73N_Da0gs5fG-eIFN272VNfsdYn7lo,12777
|
|
1084
1085
|
angr/analyses/forward_analysis/job_info.py,sha256=5iYthtygg22taqFTR9oFhmB2FX6z2rCuoXfBULHhFsU,1592
|
|
1085
1086
|
angr/analyses/forward_analysis/__init__.py,sha256=Du2Ng6EzDQzQYcRCffkOKjLztqa5GBNhiLSgErIPnHE,319
|
|
@@ -1098,17 +1099,17 @@ angr/analyses/cfg_slice_to_sink/graph.py,sha256=80erWbctYEpsLjpw2TNjntDLDGQFdYRo
|
|
|
1098
1099
|
angr/analyses/cfg_slice_to_sink/__init__.py,sha256=YaWvUc-iQ--9tnsCgHYy1lbe6M7cQJljppMPkJ0ZK_o,267
|
|
1099
1100
|
angr/analyses/cfg_slice_to_sink/transitions.py,sha256=9Y1qG789dsAcv73FwgYtppUzPWXbKdV5qIfIZHfhfmg,888
|
|
1100
1101
|
angr/analyses/variable_recovery/irsb_scanner.py,sha256=1dL2IC7fZGuRrhmcpa2Q-G666aMPmbM8zSzmIRpLNSY,5141
|
|
1101
|
-
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=
|
|
1102
|
+
angr/analyses/variable_recovery/variable_recovery_fast.py,sha256=OeSnBVpcNlZU-miBlIrbyaPt2IHtExtnpBoACnWNs_Q,27996
|
|
1102
1103
|
angr/analyses/variable_recovery/__init__.py,sha256=eA1SHzfSx8aPufUdkvgMmBnbI6VDYKKMJklcOoCO7Ao,208
|
|
1103
|
-
angr/analyses/variable_recovery/engine_ail.py,sha256=
|
|
1104
|
+
angr/analyses/variable_recovery/engine_ail.py,sha256=N9sEHMUT9qVMJCm1h4da3vLnSLPDp3oY9fE3WN60ioc,35652
|
|
1104
1105
|
angr/analyses/variable_recovery/variable_recovery.py,sha256=I45eVUpOOcSobA_QyXl3aRNa0kppJH_7YOj95fPPTdE,22272
|
|
1105
1106
|
angr/analyses/variable_recovery/engine_vex.py,sha256=Sjh3bZZfnEaich7PLTitaZITSMW7agqgyxck4gWKDbQ,21465
|
|
1106
1107
|
angr/analyses/variable_recovery/variable_recovery_base.py,sha256=Ewd0TzNdZ_gRYXtXjVrJfODNABMMPjnuvMy9-Nnyui0,16813
|
|
1107
1108
|
angr/analyses/variable_recovery/annotations.py,sha256=2va7cXnRHYqVqXeVt00QanxfAo3zanL4BkAcC0-Bk20,1438
|
|
1108
|
-
angr/analyses/variable_recovery/engine_base.py,sha256=
|
|
1109
|
+
angr/analyses/variable_recovery/engine_base.py,sha256=S3-CynLxRXlZ-hDXDZnru_wzApjR8a7hBiJOHquzBjk,53389
|
|
1109
1110
|
angr/analyses/calling_convention/fact_collector.py,sha256=9qx3jvBBrhKvRoZrCir61KZBqFtduiFzhbHAtWFvMic,28762
|
|
1110
1111
|
angr/analyses/calling_convention/__init__.py,sha256=bK5VS6AxT5l86LAhTL7l1HUT9IuvXG9x9ikbIohIFoE,194
|
|
1111
|
-
angr/analyses/calling_convention/calling_convention.py,sha256=
|
|
1112
|
+
angr/analyses/calling_convention/calling_convention.py,sha256=UfMXXoa51UvqHS5XGyFY09Vs_OVFvro51vfCtaYw7aw,47496
|
|
1112
1113
|
angr/analyses/calling_convention/utils.py,sha256=twkO073RvkkFXnOTc-KYQT1GKUtz0OPjxh0N6AWIriQ,2110
|
|
1113
1114
|
angr/analyses/propagator/values.py,sha256=L41ue9PjPpA_tEe8YlTwv3ly9o3Sbo8uQESALfbUr4c,2026
|
|
1114
1115
|
angr/analyses/propagator/__init__.py,sha256=lxvNUfUJYOPqO8se8Nej_NNCObLt90QFIrZhzgt5a_o,114
|
|
@@ -1214,24 +1215,24 @@ angr/analyses/decompiler/region_identifier.py,sha256=kQJ_KCd3Qx9LWStTM_iUNBG10bD
|
|
|
1214
1215
|
angr/analyses/decompiler/empty_node_remover.py,sha256=4CdxTM1AVmRoEdRIwJg1YEy10AgkEoRmJ8SU7xGbKnM,7424
|
|
1215
1216
|
angr/analyses/decompiler/seq_to_blocks.py,sha256=4-tqstendHHO2J0WD3JHQkm8c4c2KG3AO3mYWrn4xvg,569
|
|
1216
1217
|
angr/analyses/decompiler/__init__.py,sha256=eyxt2UKvPkbuS_l_1GPb0CJ6hrj2wTavh-mVf23wwiQ,1162
|
|
1217
|
-
angr/analyses/decompiler/clinic.py,sha256=
|
|
1218
|
+
angr/analyses/decompiler/clinic.py,sha256=LIsOw2U3P72AQ0GMK5DSn8JyQ7uY-cLcJPNpTcCERNo,151635
|
|
1218
1219
|
angr/analyses/decompiler/decompilation_cache.py,sha256=06oiG299mVpGOTL54Xy1CUxz5s8QLgYJn5XIvKFLYkU,1566
|
|
1219
1220
|
angr/analyses/decompiler/block_simplifier.py,sha256=vjlugXCB3xFYBDBn3LPxOtU1dDc76PpYtVEoju3i9-4,15513
|
|
1220
1221
|
angr/analyses/decompiler/node_replacer.py,sha256=jJd3XkIwFE07bIbLriJ6_mQEvfhm90C8lqlrL5Mz1Xg,1450
|
|
1221
1222
|
angr/analyses/decompiler/decompilation_options.py,sha256=bs6CNpU3UxepgBB_9eUH4jriNpGoryyPP0sR1hDWpTk,8477
|
|
1222
1223
|
angr/analyses/decompiler/region_walker.py,sha256=u0hR0bEX1hSwkv-vejIM1gS-hcX2F2DLsDqpKhQ5_pQ,752
|
|
1223
1224
|
angr/analyses/decompiler/graph_region.py,sha256=uSDdCLXfLZJVcb0wMdgBh-KtBJUUhLGHQ-Ap4dNs8wo,18186
|
|
1224
|
-
angr/analyses/decompiler/utils.py,sha256=
|
|
1225
|
+
angr/analyses/decompiler/utils.py,sha256=B7YwnEBF6AZ5DG3E7zHK0TF7zOLeiMWEcc18YL_eUyA,43074
|
|
1225
1226
|
angr/analyses/decompiler/decompiler.py,sha256=adX2UJv6s4JAF7Qf6HTgwPo28QQ6yCzrrQrtlqDZyfE,31864
|
|
1226
1227
|
angr/analyses/decompiler/goto_manager.py,sha256=wVoeXJcadIda84LloGgqW-rL0QHLv3fx4vZHLhmz-_o,4027
|
|
1227
1228
|
angr/analyses/decompiler/block_similarity.py,sha256=S1lTlXFyOmJlQa7I3y7xgLsENLS4XGET7tdD55k_6Vg,6859
|
|
1228
|
-
angr/analyses/decompiler/ail_simplifier.py,sha256=
|
|
1229
|
+
angr/analyses/decompiler/ail_simplifier.py,sha256=NdPdj7IpmltxdPuhxdwHnd6qG2xHrA5ZPlDLvDyaH8U,93303
|
|
1229
1230
|
angr/analyses/decompiler/jump_target_collector.py,sha256=CucT99luxIVrioM-keMMjyNKWE5QaXEFQOFphtyU8b4,1189
|
|
1230
1231
|
angr/analyses/decompiler/label_collector.py,sha256=fsCkldy8ZKH4FjkREByg-NDmfCd7Pmuz2K1Dks9oVjM,814
|
|
1231
1232
|
angr/analyses/decompiler/jumptable_entry_condition_rewriter.py,sha256=f_JyNiSZfoudElfl2kIzONoYCiosR4xYFOe8Q5SkvLg,2176
|
|
1232
1233
|
angr/analyses/decompiler/structured_codegen/__init__.py,sha256=mxG4yruPAab8735wVgXZ1zu8qFPz-njKe0m5UcywE3o,633
|
|
1233
1234
|
angr/analyses/decompiler/structured_codegen/dwarf_import.py,sha256=J6V40RuIyKXN7r6ESftIYfoREgmgFavnUL5m3lyTzlM,7072
|
|
1234
|
-
angr/analyses/decompiler/structured_codegen/c.py,sha256=
|
|
1235
|
+
angr/analyses/decompiler/structured_codegen/c.py,sha256=7rcmoqzbUa_Cv9Dnab1Vs72gVAOb2gGYR17G33BoQ98,150245
|
|
1235
1236
|
angr/analyses/decompiler/structured_codegen/dummy.py,sha256=JZLeovXE-8C-unp2hbejxCG30l-yCx4sWFh7JMF_iRM,570
|
|
1236
1237
|
angr/analyses/decompiler/structured_codegen/base.py,sha256=mb5d5iQO1N2wMl7QySvfHemXM-e0yQBhjtlmnLsVSgE,5134
|
|
1237
1238
|
angr/analyses/decompiler/ssailification/rewriting.py,sha256=aIYuFGlroEXqxaf6lZCfodLD2B53Sb8UJgl2nNb4lg8,15076
|
|
@@ -1241,10 +1242,10 @@ angr/analyses/decompiler/ssailification/__init__.py,sha256=zcHoI7e2El2RSU_bHTpQR
|
|
|
1241
1242
|
angr/analyses/decompiler/ssailification/traversal_state.py,sha256=RDs2mTc6GYnbMom2gBfNfNMcazKMSkhemEmse8uELTY,1558
|
|
1242
1243
|
angr/analyses/decompiler/ssailification/ssailification.py,sha256=LGRFDz6tQmKeJKomSQlxTTr3ILdJaI0iYBaizE5BNCI,11288
|
|
1243
1244
|
angr/analyses/decompiler/ssailification/rewriting_state.py,sha256=NAwVcBYh-BQo9K7nfnUlNDBAYflfFMgBYzsVD3BwiN8,1898
|
|
1244
|
-
angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=
|
|
1245
|
+
angr/analyses/decompiler/ssailification/rewriting_engine.py,sha256=wGUdybrGWTlE73hwS3gzyRiTtXL03tq8FL7-qYNl_X8,41486
|
|
1245
1246
|
angr/analyses/decompiler/ccall_rewriters/x86_ccalls.py,sha256=dvdiAXWGte_4xcDZnP7h980DVZqpxMgQt-fTC1nxChQ,13437
|
|
1246
1247
|
angr/analyses/decompiler/ccall_rewriters/__init__.py,sha256=TrnykR5cGCXy85f8OApJBjWSQ8WQSzjrnpND2fODWG8,207
|
|
1247
|
-
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=
|
|
1248
|
+
angr/analyses/decompiler/ccall_rewriters/rewriter_base.py,sha256=c7-GxWZbFfJvmg4DPdjYgLXyiasmfgmiQ6IY4fjOVWs,727
|
|
1248
1249
|
angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py,sha256=8LA05CKwFzoNAloOJ3KF4AkFM3bDTQdstr1_46WauxM,24958
|
|
1249
1250
|
angr/analyses/decompiler/dephication/seqnode_dephication.py,sha256=kigkzU78eNe-zD16hUI2YMNt_jHvixpohHpnLhAHMlw,5437
|
|
1250
1251
|
angr/analyses/decompiler/dephication/graph_rewriting.py,sha256=cRMrYJgGV57H5TzWY70S8tl3D9GVkrzOetkxCUevyW4,3502
|
|
@@ -1270,7 +1271,7 @@ angr/analyses/decompiler/region_simplifiers/cascading_ifs.py,sha256=kPWajH8__ap-
|
|
|
1270
1271
|
angr/analyses/decompiler/region_simplifiers/expr_folding.py,sha256=naCgnDUjdiDsh6dvoNO-VARfbTfaEYpu3EX9HkJ1cqE,31790
|
|
1271
1272
|
angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py,sha256=2Tb4zGnFA5hZH8oI6t1hoRstGDmOBsOoQxf6fU5Ct7A,1105
|
|
1272
1273
|
angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py,sha256=8gPWhFTcezgO7pZ_v0pxR7pweds4_GrrY82ur6Nrlf8,4796
|
|
1273
|
-
angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=
|
|
1274
|
+
angr/analyses/decompiler/peephole_optimizations/cas_intrinsics.py,sha256=lzlyhe1RP020ezYN77QRFu5p7zNaH4XSMkpBhxRP7ms,7959
|
|
1274
1275
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py,sha256=V5Vm1zUGjsauyOYXbUgDfZEgmChLbY8wnvmcRbfdMk0,1278
|
|
1275
1276
|
angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py,sha256=vLXt0ekjRep4SgaNq1wyxVkBTzOMTa03d3rgkjUOcUg,995
|
|
1276
1277
|
angr/analyses/decompiler/peephole_optimizations/bswap.py,sha256=fXV_a58W2X30KCanYeSHdZ2yPcfDlyZq_OkYNMkglrg,6420
|
|
@@ -1287,7 +1288,7 @@ angr/analyses/decompiler/peephole_optimizations/a_mul_const_sub_a.py,sha256=5Gsq
|
|
|
1287
1288
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py,sha256=0R_ja5u2fO_BMSpfSk68sDMfhwpvBpyCBKahQh-SB4w,3997
|
|
1288
1289
|
angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py,sha256=YMfsqffIzsB7YslHVohBOeOWeNJydsrBowJ_6oD1QyY,1909
|
|
1289
1290
|
angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py,sha256=KRjv1VUMmzkmax_s1ZM3nz24iqz1wqInMgJn3NR9kd4,1788
|
|
1290
|
-
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=
|
|
1291
|
+
angr/analyses/decompiler/peephole_optimizations/__init__.py,sha256=tfBb_Pi-GBcrOxChotrwk9h28Qo85okQLP7LKGC5c8s,5028
|
|
1291
1292
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py,sha256=1pbXLE65KwREUoB9GqCXBgz-BeUrzXxoIRFUYZAnBVA,1133
|
|
1292
1293
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py,sha256=NpjPio84lBFY76hPyvOWChRo1jgFEj9XKmSh_A3A-bg,1430
|
|
1293
1294
|
angr/analyses/decompiler/peephole_optimizations/rewrite_conv_mul.py,sha256=nhV4URuLjH_G-te15cJJ3O2-9VJvpOnkRJjdHSBRoko,1481
|
|
@@ -1303,6 +1304,7 @@ angr/analyses/decompiler/peephole_optimizations/utils.py,sha256=KYDiAt0PUA4PcOlB
|
|
|
1303
1304
|
angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py,sha256=lq41TsLU8kSEduzt66i-Jva_HB5Pqlg4Q6acO-nGAYw,1612
|
|
1304
1305
|
angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py,sha256=sJV-8aP9KUx5Kt7pZmb3M28K3z2bGD3NWJFZOdYaBYc,2662
|
|
1305
1306
|
angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py,sha256=XuR33qLQRVD_fX1kqyAdG2NNi4o6bJGvvxXD8uzfzmw,963
|
|
1307
|
+
angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy.py,sha256=_2Fdny7z31G22edctem0ySFpek2HT5tk-T9F8dQ5p1M,10122
|
|
1306
1308
|
angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py,sha256=zljXiUnoH6AwgAoXVRwz9dXEedW7RiUTkHvBMZIA-o8,1140
|
|
1307
1309
|
angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py,sha256=-V60wMaBKz1Ld1NcaQ8Dl0T4Xo9Qq6nfAQpXJ-MNsDI,1379
|
|
1308
1310
|
angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py,sha256=3ByEh3bbqaIeWcniCtKqzWFQqsULfeVEJlcEopN9iq0,667
|
|
@@ -1313,12 +1315,11 @@ angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuctio
|
|
|
1313
1315
|
angr/analyses/decompiler/peephole_optimizations/rol_ror.py,sha256=hrtAJaWTZgphP6Wex50uz9vHIBeXy1ie5M5CBSruY7Y,5144
|
|
1314
1316
|
angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py,sha256=4fZUQGdEY2qVANb6xQWZJRf5N7X78R_gyECxzhC_5vU,2384
|
|
1315
1317
|
angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py,sha256=--C1JQluHt8ltdfUPBHvRD3SjW_ZcBU3oWdFwpCtpuw,1072
|
|
1316
|
-
angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy.py,sha256=rR3eC_pjCVBuc8GuWzJJkn6h8c964ODf-5uiwlncwVE,9896
|
|
1317
1318
|
angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py,sha256=fXq-qFe7JUdD5LdtUhoA9AF3LnY-3Jrmo4t3ZRJIIiQ,1414
|
|
1318
1319
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py,sha256=FUf1bg9nADlwT1upwTKcVhhPcvZ98C-8PlmkWoHqwZ4,4787
|
|
1319
|
-
angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy_consolidation.py,sha256=TsQEpHhyVr7MdiSFkijR6GFMHsuKlmmy9qvSCo32c2U,5409
|
|
1320
1320
|
angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py,sha256=pMdKsNJtAIPqyWsR8cUEyujdF7e7kbqqvVgelVmKtqY,1610
|
|
1321
1321
|
angr/analyses/decompiler/peephole_optimizations/optimized_div_simplifier.py,sha256=M4GxEWKs6V9aEYejGluZ8w8QpvPKpaESeFFzid88HjE,14208
|
|
1322
|
+
angr/analyses/decompiler/peephole_optimizations/inlined_wcscpy_consolidation.py,sha256=TfimMI0FwpRBrWVQZy4m9XAf_BBPInu0zfywQ9CoGgs,12712
|
|
1322
1323
|
angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py,sha256=HY6EQkThiyMaahz3bodJUqLBKWY2n4aKGbKyspMXN50,1641
|
|
1323
1324
|
angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py,sha256=tezg1gsxxH-iMmo_346NYO0YHwJz_Gpb8Ztm526o0G4,3300
|
|
1324
1325
|
angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py,sha256=3eQSTFUNRDWz0No90GzxM_TaIYa7-xouf8afytds5Dk,2967
|
|
@@ -1328,13 +1329,13 @@ angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py,
|
|
|
1328
1329
|
angr/analyses/decompiler/structuring/sailr.py,sha256=aJCES4r5HaLs-l1tXagIPtXpWnqY_uTlJn7wCYKnwTg,6127
|
|
1329
1330
|
angr/analyses/decompiler/structuring/recursive_structurer.py,sha256=iWFZdM54C1q2ezL7ouhH6rygJiGO2OCUH5JKXKgrf6w,7422
|
|
1330
1331
|
angr/analyses/decompiler/structuring/__init__.py,sha256=kEFP-zv9CZrhJtLTKwT9-9cGVTls71wLYaLDUuYorBU,711
|
|
1331
|
-
angr/analyses/decompiler/structuring/dream.py,sha256=
|
|
1332
|
+
angr/analyses/decompiler/structuring/dream.py,sha256=QNZ8dKk79Uq0urUEpwmBgX2Ak3ZQLhiydcSKJTx968c,48738
|
|
1332
1333
|
angr/analyses/decompiler/structuring/structurer_nodes.py,sha256=3T6QPeD1KlLkcjMDBblQCb1Cf50VF36C-hlFhiKi9nc,12823
|
|
1333
|
-
angr/analyses/decompiler/structuring/phoenix.py,sha256
|
|
1334
|
+
angr/analyses/decompiler/structuring/phoenix.py,sha256=-yGUKZt37N0tbqTJoRI4Pk_ohZhYaxT22wWEWsblzZ4,164692
|
|
1334
1335
|
angr/analyses/decompiler/structuring/structurer_base.py,sha256=xzQMYBInNyeRYibbiuk6EYbvPO235El3guT1yh1qAxw,50690
|
|
1335
1336
|
angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py,sha256=FBz1UGl5rj13GYSF2tYWaQR135q4VQUxCBPW6SgdQ2w,19485
|
|
1336
1337
|
angr/analyses/decompiler/optimization_passes/optimization_pass.py,sha256=VGpCQmx8H2w3HoVFGdqwYYZ0z_IdHrFjOhz37yvxxTQ,28169
|
|
1337
|
-
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=
|
|
1338
|
+
angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py,sha256=RkZdMPJ_JKDkywVYp0MrCf6PK95GWT7Q0K7jsCVk_cE,42132
|
|
1338
1339
|
angr/analyses/decompiler/optimization_passes/const_derefs.py,sha256=-vvd0QvLCmnRREmvN5LCLeKpUqisyPWj0yw1CHY8TwQ,10505
|
|
1339
1340
|
angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py,sha256=INLmzfGDMsVzyQF2S6uwiQSoNcxM7DUBJrdWlL2gqlY,1325
|
|
1340
1341
|
angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py,sha256=ez0tzV2MqNVBW7hhvNyJWQpJQUntLA4etK606hXixJM,5206
|
|
@@ -1356,7 +1357,7 @@ angr/analyses/decompiler/optimization_passes/const_prop_reverter.py,sha256=uccjV
|
|
|
1356
1357
|
angr/analyses/decompiler/optimization_passes/deadblock_remover.py,sha256=RMvKYw0aWrisO6DB_g3BTY9CgIgAJ6JZXpOnOOm7fpo,2737
|
|
1357
1358
|
angr/analyses/decompiler/optimization_passes/div_simplifier.py,sha256=di_yaOo_cBzau7tNZHmozCwNNkNou1LH99cUrsU2AKg,18744
|
|
1358
1359
|
angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py,sha256=DzvgsAhU4GqvS0yN0Q2JezkJAuo2KInCgZ7fsB-ibz4,4021
|
|
1359
|
-
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=
|
|
1360
|
+
angr/analyses/decompiler/optimization_passes/ite_region_converter.py,sha256=O7b5hVV8UV7Q5nzEPovQZB4z8UsyYKvPkOTp2pljXiY,13774
|
|
1360
1361
|
angr/analyses/decompiler/optimization_passes/eager_std_string_concatenation.py,sha256=O5EVUgJxPnRXBaReF8gxQlWFeFr3V1V313qe_QFS7bY,7087
|
|
1361
1362
|
angr/analyses/decompiler/optimization_passes/return_duplicator_low.py,sha256=YHmS48Wyegq6Hb9pI9OKybFy9MWAo9r0ujDYJgykKk8,6866
|
|
1362
1363
|
angr/analyses/decompiler/optimization_passes/code_motion.py,sha256=fdUvRseuFiH6ehpk9uWWMityDuBs_kqmIjYMi92dDkw,15353
|
|
@@ -1388,7 +1389,7 @@ angr/analyses/s_reaching_definitions/s_rda_model.py,sha256=FJSge_31FFzyzBJA1xm7d
|
|
|
1388
1389
|
angr/analyses/s_reaching_definitions/s_rda_view.py,sha256=7o-llkMUJP_ZhnQ4tkCDrzYok4cAOA7PLt2tX9DY8Mo,13929
|
|
1389
1390
|
angr/analyses/fcp/__init__.py,sha256=E9dxFckDM9DijfU4RRg9SGL6xDKCz7yBBP-XSkS-S9U,115
|
|
1390
1391
|
angr/analyses/fcp/fcp.py,sha256=djkJsvSja_De7ptNwllmTHjvVl62BFcH_haBhwhzFtw,16373
|
|
1391
|
-
angr/analyses/flirt/flirt.py,sha256=
|
|
1392
|
+
angr/analyses/flirt/flirt.py,sha256=fZ0BvmJnx6ve1j76lMvKFHM2y3g17wg00fU8hWvSl14,10829
|
|
1392
1393
|
angr/analyses/flirt/flirt_sig.py,sha256=9cWSXqFBEIpui7pluMTaskfD0mVMomNt1mPXN6pIdjg,11574
|
|
1393
1394
|
angr/analyses/flirt/__init__.py,sha256=1jKkwUDhwwnxG5BRcYtwogLHLBvtZApXgvcAcHrJrdw,1293
|
|
1394
1395
|
angr/analyses/flirt/consts.py,sha256=9ldvicgtJZa8Hw8cWOKxGkCYtc09I2q5ZWxctXcg20w,4861
|
|
@@ -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
|
|
File without changes
|