-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstate.py
More file actions
152 lines (125 loc) · 5.57 KB
/
state.py
File metadata and controls
152 lines (125 loc) · 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import random
from util import generate_barcode_name
RUNTIME_OBF_STATE_NAME = None
RUNTIME_OBF_HELPER_NAME = None
CFG_EDGE_HELPER_NAME = None
CFG_CLONE_SELECT_HELPER_NAME = None
STL_SORT_HELPER_NAME = None
DEAD_CODE_HELPER_NAMES = []
TMP_ADD_STRUCT_NAME = None
TMP_ADD_HELPER_NAME = None
TMP_ADD_VARIANT = None
FUNCTION_PTR_STAGE_HELPER_NAME = None
FUNCTION_PTR_INVOKE_HELPER_NAME = None
MEMORY_INDEX_HELPER_NAME = None
MEMORY_PTR_ADVANCE_HELPER_NAME = None
MEMORY_MEMBER_HELPER_NAME = None
DATA_FLOW_STRUCT_NAME = None
DATA_FLOW_PACK_HELPER_NAME = None
DATA_FLOW_UNPACK_HELPER_NAME = None
DATA_FLOW_MERGE_HELPER_NAME = None
DATA_FLOW_VARIANT = None
STRING_DECODE_HELPER_NAME = None
STRING_FAKE_DECODER_NAMES = []
OPAQUE_WRAPPER_NAME = None
OPAQUE_WRAPPER_VARIANT = None
VM_NAMESPACE_NAME = None
VM_RUNTIME_REQUIRED = False
VM_EXPRESSION_WRAPPER_NAMES = set()
FLOAT_CONSTANT_TABLE_NAME = None
FLOAT_CONSTANT_HELPER_NAME = None
FLOAT_CONSTANT_ENTRIES = []
def init_runtime_obfuscation_names():
global RUNTIME_OBF_STATE_NAME, RUNTIME_OBF_HELPER_NAME
if RUNTIME_OBF_STATE_NAME is None:
RUNTIME_OBF_STATE_NAME = generate_barcode_name(18)
if RUNTIME_OBF_HELPER_NAME is None:
RUNTIME_OBF_HELPER_NAME = generate_barcode_name(18)
def init_cfg_pollution_names():
global CFG_EDGE_HELPER_NAME, CFG_CLONE_SELECT_HELPER_NAME, RUNTIME_OBF_STATE_NAME
if CFG_EDGE_HELPER_NAME is None:
CFG_EDGE_HELPER_NAME = generate_barcode_name(18)
if CFG_CLONE_SELECT_HELPER_NAME is None:
CFG_CLONE_SELECT_HELPER_NAME = generate_barcode_name(18)
if RUNTIME_OBF_STATE_NAME is None:
RUNTIME_OBF_STATE_NAME = generate_barcode_name(18)
def init_stl_helper_names():
global STL_SORT_HELPER_NAME
if STL_SORT_HELPER_NAME is None:
STL_SORT_HELPER_NAME = generate_barcode_name(18)
def init_function_pointer_helper_names():
global FUNCTION_PTR_STAGE_HELPER_NAME, FUNCTION_PTR_INVOKE_HELPER_NAME
if FUNCTION_PTR_STAGE_HELPER_NAME is None:
FUNCTION_PTR_STAGE_HELPER_NAME = generate_barcode_name(18)
if FUNCTION_PTR_INVOKE_HELPER_NAME is None:
FUNCTION_PTR_INVOKE_HELPER_NAME = generate_barcode_name(18)
def init_memory_access_names():
global MEMORY_INDEX_HELPER_NAME, MEMORY_PTR_ADVANCE_HELPER_NAME, MEMORY_MEMBER_HELPER_NAME
if MEMORY_INDEX_HELPER_NAME is None:
MEMORY_INDEX_HELPER_NAME = generate_barcode_name(18)
if MEMORY_PTR_ADVANCE_HELPER_NAME is None:
MEMORY_PTR_ADVANCE_HELPER_NAME = generate_barcode_name(18)
if MEMORY_MEMBER_HELPER_NAME is None:
MEMORY_MEMBER_HELPER_NAME = generate_barcode_name(18)
def init_data_flow_names():
global DATA_FLOW_STRUCT_NAME, DATA_FLOW_PACK_HELPER_NAME
global DATA_FLOW_UNPACK_HELPER_NAME, DATA_FLOW_MERGE_HELPER_NAME, DATA_FLOW_VARIANT
if DATA_FLOW_STRUCT_NAME is None:
DATA_FLOW_STRUCT_NAME = generate_barcode_name(18)
if DATA_FLOW_PACK_HELPER_NAME is None:
DATA_FLOW_PACK_HELPER_NAME = generate_barcode_name(18)
if DATA_FLOW_UNPACK_HELPER_NAME is None:
DATA_FLOW_UNPACK_HELPER_NAME = generate_barcode_name(18)
if DATA_FLOW_MERGE_HELPER_NAME is None:
DATA_FLOW_MERGE_HELPER_NAME = generate_barcode_name(18)
if DATA_FLOW_VARIANT is None:
DATA_FLOW_VARIANT = {
"share_mode": random.choice(("sum", "delta")),
"mask_a": random.randint(0x10, 0xFFFF),
"mask_b": random.randint(0x10, 0xFFFF),
"merge_mode": random.choice(("direct", "restaged")),
"unpack_mode": random.choice(("plain", "volatile_noise", "mask_fold")),
}
def init_string_literal_names():
global STRING_DECODE_HELPER_NAME, STRING_FAKE_DECODER_NAMES
if STRING_DECODE_HELPER_NAME is None:
STRING_DECODE_HELPER_NAME = generate_barcode_name(18)
if not STRING_FAKE_DECODER_NAMES:
STRING_FAKE_DECODER_NAMES = [generate_barcode_name(18), generate_barcode_name(18)]
def init_type_level_names():
global OPAQUE_WRAPPER_NAME, OPAQUE_WRAPPER_VARIANT
if OPAQUE_WRAPPER_NAME is None:
OPAQUE_WRAPPER_NAME = generate_barcode_name(18)
if OPAQUE_WRAPPER_VARIANT is None:
OPAQUE_WRAPPER_VARIANT = {
"key_a": random.randint(0x10, 0xFFFF),
"key_b": random.randint(0x10, 0xFFFF),
"encode_mode": random.choice(("xor_add", "add_xor", "xor_sub")),
"compare_mode": random.choice(("direct", "common_type")),
}
def init_dead_code_helper_names():
global DEAD_CODE_HELPER_NAMES
if not DEAD_CODE_HELPER_NAMES:
DEAD_CODE_HELPER_NAMES = [generate_barcode_name(18), generate_barcode_name(18)]
def init_tmp_addition_names():
global TMP_ADD_STRUCT_NAME, TMP_ADD_HELPER_NAME, TMP_ADD_VARIANT
if TMP_ADD_STRUCT_NAME is None:
TMP_ADD_STRUCT_NAME = generate_barcode_name(18)
if TMP_ADD_HELPER_NAME is None:
TMP_ADD_HELPER_NAME = generate_barcode_name(18)
if TMP_ADD_VARIANT is None:
TMP_ADD_VARIANT = {
"engine_mode": random.choice(("recursive", "index_sequence")),
"carry_mode": random.choice(("majority", "xor_mix")),
"entry_mode": random.choice(("direct", "swap", "zero_left", "zero_right")),
}
def init_virtual_machine_names():
global VM_NAMESPACE_NAME
if VM_NAMESPACE_NAME is None:
VM_NAMESPACE_NAME = generate_barcode_name(18)
def init_floating_constant_names():
global FLOAT_CONSTANT_TABLE_NAME, FLOAT_CONSTANT_HELPER_NAME
if FLOAT_CONSTANT_TABLE_NAME is None:
FLOAT_CONSTANT_TABLE_NAME = generate_barcode_name(18)
if FLOAT_CONSTANT_HELPER_NAME is None:
FLOAT_CONSTANT_HELPER_NAME = generate_barcode_name(18)